commit 869c61dc3b53caf3163a4196873d423886f70586 Author: sebastiankb Date: Tue Apr 15 09:19:53 2014 +0000 OpenV2G 0.8 diff --git a/.cproject b/.cproject new file mode 100644 index 0000000..c4e547e --- /dev/null +++ b/.cproject @@ -0,0 +1,649 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + make + + OpenV2G.exe + true + true + true + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..cb6d639 --- /dev/null +++ b/.project @@ -0,0 +1,81 @@ + + + OpenV2G + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.buildLocation + ./OpenV2G/Debug + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.fullBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/Debug/makefile b/Debug/makefile new file mode 100644 index 0000000..603c936 --- /dev/null +++ b/Debug/makefile @@ -0,0 +1,49 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include src/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) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: OpenV2G.exe + +# Tool invocations +OpenV2G.exe: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: MinGW C Linker' + gcc -o "OpenV2G.exe" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) OpenV2G.exe + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Debug/objects.mk b/Debug/objects.mk new file mode 100644 index 0000000..dc31e16 --- /dev/null +++ b/Debug/objects.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Debug/sources.mk b/Debug/sources.mk new file mode 100644 index 0000000..a421293 --- /dev/null +++ b/Debug/sources.mk @@ -0,0 +1,22 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +EXECUTABLES := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +src/transport \ +src/test \ +src/service \ +src/codec \ +src/codec/appHandCodec \ +src/appHandshake \ + diff --git a/Debug/src/appHandshake/subdir.mk b/Debug/src/appHandshake/subdir.mk new file mode 100644 index 0000000..bf009d1 --- /dev/null +++ b/Debug/src/appHandshake/subdir.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/appHandshake/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_dataTypes.o + +C_DEPS += \ +./src/appHandshake/appHand_dataDeserialization.d \ +./src/appHandshake/appHand_dataSerialization.d \ +./src/appHandshake/appHand_dataTypes.d + + +# Each subdirectory must supply rules for building sources it contributes +src/appHandshake/%.o: ../src/appHandshake/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I"../src/codec" -I"../src/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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/codec/appHandCodec/subdir.mk b/Debug/src/codec/appHandCodec/subdir.mk new file mode 100644 index 0000000..099d60f --- /dev/null +++ b/Debug/src/codec/appHandCodec/subdir.mk @@ -0,0 +1,36 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# 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 + +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 + +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 + + +# 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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/codec/subdir.mk b/Debug/src/codec/subdir.mk new file mode 100644 index 0000000..8a0fb43 --- /dev/null +++ b/Debug/src/codec/subdir.mk @@ -0,0 +1,87 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/codec/AbstractDecoderChannel.c \ +../src/codec/AbstractEncoderChannel.c \ +../src/codec/BitDecoderChannel.c \ +../src/codec/BitEncoderChannel.c \ +../src/codec/BitInputStream.c \ +../src/codec/BitOutputStream.c \ +../src/codec/ByteDecoderChannel.c \ +../src/codec/ByteEncoderChannel.c \ +../src/codec/ByteStream.c \ +../src/codec/DynamicMemory.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 + +OBJS += \ +./src/codec/AbstractDecoderChannel.o \ +./src/codec/AbstractEncoderChannel.o \ +./src/codec/BitDecoderChannel.o \ +./src/codec/BitEncoderChannel.o \ +./src/codec/BitInputStream.o \ +./src/codec/BitOutputStream.o \ +./src/codec/ByteDecoderChannel.o \ +./src/codec/ByteEncoderChannel.o \ +./src/codec/ByteStream.o \ +./src/codec/DynamicMemory.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 + +C_DEPS += \ +./src/codec/AbstractDecoderChannel.d \ +./src/codec/AbstractEncoderChannel.d \ +./src/codec/BitDecoderChannel.d \ +./src/codec/BitEncoderChannel.d \ +./src/codec/BitInputStream.d \ +./src/codec/BitOutputStream.d \ +./src/codec/ByteDecoderChannel.d \ +./src/codec/ByteEncoderChannel.d \ +./src/codec/ByteStream.d \ +./src/codec/DynamicMemory.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 + + +# 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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/service/subdir.mk b/Debug/src/service/subdir.mk new file mode 100644 index 0000000..e1ea602 --- /dev/null +++ b/Debug/src/service/subdir.mk @@ -0,0 +1,33 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# 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_serviceDispatcher.c + +OBJS += \ +./src/service/v2g_dataTypes.o \ +./src/service/v2g_serviceClientStubs.o \ +./src/service/v2g_serviceDataSerialization.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_serviceDispatcher.d + + +# Each subdirectory must supply rules for building sources it contributes +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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/test/subdir.mk b/Debug/src/test/subdir.mk new file mode 100644 index 0000000..a728b65 --- /dev/null +++ b/Debug/src/test/subdir.mk @@ -0,0 +1,36 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/test/evse_server.c \ +../src/test/evse_serviceMethods.c \ +../src/test/main.c \ +../src/test/pev_service.c \ +../src/test/serviceClientDataTransmitter.c + +OBJS += \ +./src/test/evse_server.o \ +./src/test/evse_serviceMethods.o \ +./src/test/main.o \ +./src/test/pev_service.o \ +./src/test/serviceClientDataTransmitter.o + +C_DEPS += \ +./src/test/evse_server.d \ +./src/test/evse_serviceMethods.d \ +./src/test/main.d \ +./src/test/pev_service.d \ +./src/test/serviceClientDataTransmitter.d + + +# Each subdirectory must supply rules for building sources it contributes +src/test/%.o: ../src/test/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I"../src/codec" -I"../src/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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/transport/subdir.mk b/Debug/src/transport/subdir.mk new file mode 100644 index 0000000..9020937 --- /dev/null +++ b/Debug/src/transport/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/transport/v2gtp.c + +OBJS += \ +./src/transport/v2gtp.o + +C_DEPS += \ +./src/transport/v2gtp.d + + +# Each subdirectory must supply rules for building sources it contributes +src/transport/%.o: ../src/transport/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I"../src/codec" -I"../src/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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..65c5ca8 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..da07eb0 --- /dev/null +++ b/README.txt @@ -0,0 +1,108 @@ +------------------------------------------------------------------------- +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 +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 + +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 . + + +------------------------------------------------------------------------- +CHANGES from version 0.7: +------------------------------------------------------------------------- +* adaption of V2G schema changes (reflects the ISO/IEC 15118-2 FDIS status) +* bug-fixes + +------------------------------------------------------------------------- +CHANGES from version 0.6: +------------------------------------------------------------------------- +* adaption of V2G schema changes (reflects the ISO/IEC 15118-2 DIS status and DIN 70121) +* reduced memory usage +* EXI decoder skips schema deviations according to EXI Profile +* bug-fixes + +------------------------------------------------------------------------- +CHANGES from version 0.5: +------------------------------------------------------------------------- +* adaption of V2G schema changes +* application handshake protocol implementation +* asynchronised communication +* reduced memory usage +* changed V2GTP byte order from little endian to big endian +* bug-fixes +* updated AC demo interaction between EV and EVSE, and +* updated DC demo interaction between EV and EVSE + + +------------------------------------------------------------------------- +CHANGES from version 0.4: +------------------------------------------------------------------------- +* adaption of V2G schema changes +* V2GTP implementation (replaces the DoIP implementation) +* EXI default coder for the 15118 schema (replaces the strict mode of EXI) +* AC demo interaction between PEV and EVSE, and +* DC demo interaction between PEV and EVSE + + +------------------------------------------------------------------------- +CHANGES from version 0.3.1: +------------------------------------------------------------------------- +* adaption of V2G schema changes +* supporting of DC messages +* example program showing the message sequence of AC charging and +DC charging +* bug-fixes + +------------------------------------------------------------------------- +CHANGES from version 0.3: +------------------------------------------------------------------------- +* Bug-fixes +* reduced memory usage +* some type changes in the EXI codec and V2G service: +** struct v2gService->struct EXIService in v2g_service.h +** size_t->uint16_t in v2g_serviceClientDataTransmitter.h and doIP.h +* renaming of some enumeration values in v2g_serviceDataTypes.h + +------------------------------------------------------------------------- +CHANGES from version 0.2.2: +------------------------------------------------------------------------- +* Bug-fixes +* first DoIP implementation +* V2G message error handling +* adaption of V2G schema changes +* code optimizations + +------------------------------------------------------------------------- +CHANGES from version 0.2.1: +------------------------------------------------------------------------- +* Bug-fixes +* adaption of V2G schema changes +* some code optimizations + +------------------------------------------------------------------------- +CHANGES from version 0.2: +------------------------------------------------------------------------- +* Bug-fixes +* Fixed compiler warnings + +------------------------------------------------------------------------- +CHANGES from version 0.1: +------------------------------------------------------------------------- +* Bug-fixes +* Service and Client added \ No newline at end of file diff --git a/Release/makefile b/Release/makefile new file mode 100644 index 0000000..603c936 --- /dev/null +++ b/Release/makefile @@ -0,0 +1,49 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include src/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) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: OpenV2G.exe + +# Tool invocations +OpenV2G.exe: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: MinGW C Linker' + gcc -o "OpenV2G.exe" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) OpenV2G.exe + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Release/objects.mk b/Release/objects.mk new file mode 100644 index 0000000..dc31e16 --- /dev/null +++ b/Release/objects.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Release/sources.mk b/Release/sources.mk new file mode 100644 index 0000000..a421293 --- /dev/null +++ b/Release/sources.mk @@ -0,0 +1,22 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +EXECUTABLES := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +src/transport \ +src/test \ +src/service \ +src/codec \ +src/codec/appHandCodec \ +src/appHandshake \ + diff --git a/Release/src/appHandshake/subdir.mk b/Release/src/appHandshake/subdir.mk new file mode 100644 index 0000000..5f29040 --- /dev/null +++ b/Release/src/appHandshake/subdir.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/appHandshake/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_dataTypes.o + +C_DEPS += \ +./src/appHandshake/appHand_dataDeserialization.d \ +./src/appHandshake/appHand_dataSerialization.d \ +./src/appHandshake/appHand_dataTypes.d + + +# Each subdirectory must supply rules for building sources it contributes +src/appHandshake/%.o: ../src/appHandshake/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I"../src/codec" -I"../src/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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/codec/appHandCodec/subdir.mk b/Release/src/codec/appHandCodec/subdir.mk new file mode 100644 index 0000000..7a75832 --- /dev/null +++ b/Release/src/codec/appHandCodec/subdir.mk @@ -0,0 +1,36 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# 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 + +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 + +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 + + +# 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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/codec/subdir.mk b/Release/src/codec/subdir.mk new file mode 100644 index 0000000..afd8396 --- /dev/null +++ b/Release/src/codec/subdir.mk @@ -0,0 +1,87 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/codec/AbstractDecoderChannel.c \ +../src/codec/AbstractEncoderChannel.c \ +../src/codec/BitDecoderChannel.c \ +../src/codec/BitEncoderChannel.c \ +../src/codec/BitInputStream.c \ +../src/codec/BitOutputStream.c \ +../src/codec/ByteDecoderChannel.c \ +../src/codec/ByteEncoderChannel.c \ +../src/codec/ByteStream.c \ +../src/codec/DynamicMemory.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 + +OBJS += \ +./src/codec/AbstractDecoderChannel.o \ +./src/codec/AbstractEncoderChannel.o \ +./src/codec/BitDecoderChannel.o \ +./src/codec/BitEncoderChannel.o \ +./src/codec/BitInputStream.o \ +./src/codec/BitOutputStream.o \ +./src/codec/ByteDecoderChannel.o \ +./src/codec/ByteEncoderChannel.o \ +./src/codec/ByteStream.o \ +./src/codec/DynamicMemory.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 + +C_DEPS += \ +./src/codec/AbstractDecoderChannel.d \ +./src/codec/AbstractEncoderChannel.d \ +./src/codec/BitDecoderChannel.d \ +./src/codec/BitEncoderChannel.d \ +./src/codec/BitInputStream.d \ +./src/codec/BitOutputStream.d \ +./src/codec/ByteDecoderChannel.d \ +./src/codec/ByteEncoderChannel.d \ +./src/codec/ByteStream.d \ +./src/codec/DynamicMemory.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 + + +# 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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/service/subdir.mk b/Release/src/service/subdir.mk new file mode 100644 index 0000000..5c0d511 --- /dev/null +++ b/Release/src/service/subdir.mk @@ -0,0 +1,33 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# 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_serviceDispatcher.c + +OBJS += \ +./src/service/v2g_dataTypes.o \ +./src/service/v2g_serviceClientStubs.o \ +./src/service/v2g_serviceDataSerialization.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_serviceDispatcher.d + + +# Each subdirectory must supply rules for building sources it contributes +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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/test/subdir.mk b/Release/src/test/subdir.mk new file mode 100644 index 0000000..e1670e4 --- /dev/null +++ b/Release/src/test/subdir.mk @@ -0,0 +1,36 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/test/evse_server.c \ +../src/test/evse_serviceMethods.c \ +../src/test/main.c \ +../src/test/pev_service.c \ +../src/test/serviceClientDataTransmitter.c + +OBJS += \ +./src/test/evse_server.o \ +./src/test/evse_serviceMethods.o \ +./src/test/main.o \ +./src/test/pev_service.o \ +./src/test/serviceClientDataTransmitter.o + +C_DEPS += \ +./src/test/evse_server.d \ +./src/test/evse_serviceMethods.d \ +./src/test/main.d \ +./src/test/pev_service.d \ +./src/test/serviceClientDataTransmitter.d + + +# Each subdirectory must supply rules for building sources it contributes +src/test/%.o: ../src/test/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I"../src/codec" -I"../src/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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/transport/subdir.mk b/Release/src/transport/subdir.mk new file mode 100644 index 0000000..3121876 --- /dev/null +++ b/Release/src/transport/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/transport/v2gtp.c + +OBJS += \ +./src/transport/v2gtp.o + +C_DEPS += \ +./src/transport/v2gtp.d + + +# Each subdirectory must supply rules for building sources it contributes +src/transport/%.o: ../src/transport/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I"../src/codec" -I"../src/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 "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/data/sessionSetupReq.xml b/data/sessionSetupReq.xml new file mode 100644 index 0000000..bbc0b42 --- /dev/null +++ b/data/sessionSetupReq.xml @@ -0,0 +1,16 @@ + + + + 00 + + + + 01 + + + diff --git a/data/sessionSetupReq.xml.exi b/data/sessionSetupReq.xml.exi new file mode 100644 index 0000000..8daff35 Binary files /dev/null and b/data/sessionSetupReq.xml.exi differ diff --git a/data/sessionSetupRes.xml b/data/sessionSetupRes.xml new file mode 100644 index 0000000..2c576f2 --- /dev/null +++ b/data/sessionSetupRes.xml @@ -0,0 +1,18 @@ + + + + 010203040506 + + + + OK + ABC01234 + 123456789 + + + diff --git a/data/sessionSetupRes.xml.exi b/data/sessionSetupRes.xml.exi new file mode 100644 index 0000000..247772a Binary files /dev/null and b/data/sessionSetupRes.xml.exi differ diff --git a/src/appHandshake/appHand_dataDeserialization.c b/src/appHandshake/appHand_dataDeserialization.c new file mode 100644 index 0000000..3280c1c --- /dev/null +++ b/src/appHandshake/appHand_dataDeserialization.c @@ -0,0 +1,341 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + + #include "appHand_service.h" + #include "appHand_dataTypes.h" + #include "EXITypes.h" + #include "appHandEXIDecoder.h" + #include "appHandQNameDefines.h" + #include "StringValueTable.h" + #include "StringNameTable.h" + #include + +uint16_t numberOfLocalStringsDecode[EXI_appHandMAX_NUMBER_OF_QNAMES]; + + + + + static int _setUnsignedInt32Value(exi_integer_t* iv, uint32_t* int32) { + int errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + *int32 = iv->val.uint8; + break; + case EXI_UNSIGNED_INTEGER_16: + *int32 = iv->val.uint16; + break; + case EXI_UNSIGNED_INTEGER_32: + if (iv->val.uint32 <= 2147483647) { + *int32 = iv->val.uint32; + } else { + errn = -1; + } + break; + case EXI_UNSIGNED_INTEGER_64: + errn = -1; + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + *int32 = iv->val.int8; + break; + case EXI_INTEGER_16: + *int32 = iv->val.int16; + break; + case EXI_INTEGER_32: + *int32 = iv->val.int32; + break; + case EXI_INTEGER_64: + errn = -1; + break; + } + return errn; +} + + + + /** + * Deserialize an element or attribute value of the EXI stream and assign it to the + * service data structure + */ +static int deserializeElementAttributeCharacter(struct EXIDatabinder* service) +{ + + switch(service->qnameID) { + case 2: /* ProtocolNamespace */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.supportedAppProtocolReq->AppProtocol[service->exiMsg.supportedAppProtocolReq->arraylen.AppProtocol].ProtocolNamespace.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.supportedAppProtocolReq->AppProtocol[service->exiMsg.supportedAppProtocolReq->arraylen.AppProtocol].ProtocolNamespace.arraylen.data = service->val.str.miss.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 5: /* VersionNumberMajor */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if(_setUnsignedInt32Value(&(service->val.integer),&(service->val.integer.val.uint32))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.supportedAppProtocolReq->AppProtocol[service->exiMsg.supportedAppProtocolReq->arraylen.AppProtocol].VersionNumberMajor=service->val.integer.val.uint32; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 6: /* VersionNumberMinor */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if(_setUnsignedInt32Value(&(service->val.integer),&(service->val.integer.val.uint32))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.supportedAppProtocolReq->AppProtocol[service->exiMsg.supportedAppProtocolReq->arraylen.AppProtocol].VersionNumberMinor=service->val.integer.val.uint32; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 4: /* SchemaID */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + if( service->idPath.id[0] == 66) + { + service->exiMsg.supportedAppProtocolRes->SchemaID=service->val.integer.val.uint8; + service->exiMsg.supportedAppProtocolRes->isused.SchemaID=1; + + } else if(service->idPath.id[0] == 65) + { + service->exiMsg.supportedAppProtocolReq->AppProtocol[service->exiMsg.supportedAppProtocolReq->arraylen.AppProtocol].SchemaID=service->val.integer.val.uint8; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 1: /* Priority */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + service->exiMsg.supportedAppProtocolReq->AppProtocol[service->exiMsg.supportedAppProtocolReq->arraylen.AppProtocol].Priority=service->val.integer.val.uint8; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 3: /* ResponseCode */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + service->exiMsg.supportedAppProtocolRes->ResponseCode=service->val.enumeration; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + + } + return 0; +} + +/** + * Deserialize an element of the EXI stream + * @return 0 = 0K; -1 = ERROR + */ +static int deserializeElement(struct EXIDatabinder* service) +{ + switch(service->qnameID) { + case 0: /* AppProtocol */ + service->exiMsg.supportedAppProtocolReq->arraylen.AppProtocol++; + + break; + case 65: /* supportedAppProtocolReq */ + service->exiMsg.isused.supportedAppProtocolReq=1; + + break; + case 66: /* supportedAppProtocolRes */ + service->exiMsg.isused.supportedAppProtocolRes=1; + + break; + + } + return 0; +} + + + + +/** +* Deserialize the appHand EXI stream +* @return 0 = 0K; -1 = ERROR +*/ +int deserialize_appHand(struct EXIDatabinder* service, uint8_t* inStream, uint16_t sizeInStream, struct EXIDocumentType_appHand* exiDoc) +{ + exi_name_table_runtime_t runtimeTableDecode; + uint32_t inPos; + exi_value_table_t stringTableDecode = { 0, EXI_appHandMAX_NUMBER_OF_QNAMES, numberOfLocalStringsDecode}; + int noEndOfDocument = 1; /* true */ + int returnCode=0; + + + /* assign inStream data to service EXI structure */ + inPos = service->transportHeaderOffset; + service->inStream.data = inStream; + service->inStream.size = sizeInStream+inPos; + service->inStream.pos = &inPos; + service->inStream.buffer=0; + service->inStream.capacity=0; + + init_EXIDocumentType_appHand(exiDoc); + + service->exiMsg=*exiDoc; + + exiInitNameTableRuntime(&runtimeTableDecode); + exiappHandInitDecoder(&(service->inStream), &(service->stateDecode), runtimeTableDecode,stringTableDecode); + + do { + exiappHandDecodeNextEvent(&(service->inStream), &(service->stateDecode), &(service->event)); + if (returnCode < 0) { + return returnCode; + } + + switch (service->event) { + case EXI_EVENT_START_DOCUMENT: + + returnCode = exiappHandDecodeStartDocument(&(service->inStream), &(service->stateDecode)); + + break; + case EXI_EVENT_END_DOCUMENT: + + returnCode = exiappHandDecodeEndDocument(&(service->inStream), &(service->stateDecode)); + noEndOfDocument = 0; /* false */ + break; + case EXI_EVENT_START_ELEMENT: + returnCode = exiappHandDecodeStartElement(&(service->inStream), &(service->stateDecode), &(service->qnameID)); + service->idPath.id[service->idPath.pos++]=service->qnameID; + + break; + case EXI_EVENT_END_ELEMENT: + + returnCode = exiappHandDecodeEndElement(&(service->inStream), &(service->stateDecode), &(service->qnameID)); + service->idPath.pos--; + + returnCode = deserializeElement(service); + break; + case EXI_EVENT_CHARACTERS: + /* decode */ + returnCode = exiappHandDecodeCharacters(&(service->inStream), &(service->stateDecode), &(service->val)); + + /* assign character data to the v2g message structure */ + returnCode = deserializeElementAttributeCharacter(service); + break; + case EXI_EVENT_ATTRIBUTE: + /* decode */ + returnCode = exiappHandDecodeAttribute(&(service->inStream), &(service->stateDecode), &(service->qnameID), &(service->val)); + returnCode = deserializeElementAttributeCharacter(service); + break; + default: + /* ERROR */ + return -1; + } + + } 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 + * \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) +{ + + /* init byte array */ + service->val.binary = service_bytes; + + /* init string array */ + service->val.str.miss = service_string; + + + service->idPath.pos=0; + + /* init offset for transport protocol */ + service->transportHeaderOffset=transportHeaderOffset; + + + return 0; +} + + diff --git a/src/appHandshake/appHand_dataSerialization.c b/src/appHandshake/appHand_dataSerialization.c new file mode 100644 index 0000000..e11dfcc --- /dev/null +++ b/src/appHandshake/appHand_dataSerialization.c @@ -0,0 +1,424 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + +#include "appHand_service.h" +#include "appHand_dataTypes.h" +#include "EXITypes.h" +#include "StringNameTable.h" +#include "appHandEXIEncoder.h" +#include "appHandQNameDefines.h" +#include + + uint16_t numberOfLocalStringsEncode[EXI_appHandMAX_NUMBER_OF_QNAMES]; + + + + + + + +static int serialize_AppProtocolType(struct AppProtocolType* type, struct EXIDatabinder* service) +{ + + + + /* encode start element ProtocolNamespace */ + if (exiappHandEncodeStartElement(&(service->outStream), &(service->stateEncode), 2)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->ProtocolNamespace.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->ProtocolNamespace.data,type->ProtocolNamespace.arraylen.data*sizeof(uint32_t)); + + + + /* encode character ProtocolNamespace */ + if (exiappHandEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ProtocolNamespace */ + exiappHandEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element VersionNumberMajor */ + if (exiappHandEncodeStartElement(&(service->outStream), &(service->stateEncode), 5)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint32=type->VersionNumberMajor; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_32; + + /* encode character VersionNumberMajor */ + if (exiappHandEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of VersionNumberMajor */ + exiappHandEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element VersionNumberMinor */ + if (exiappHandEncodeStartElement(&(service->outStream), &(service->stateEncode), 6)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint32=type->VersionNumberMinor; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_32; + + /* encode character VersionNumberMinor */ + if (exiappHandEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of VersionNumberMinor */ + exiappHandEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element SchemaID */ + if (exiappHandEncodeStartElement(&(service->outStream), &(service->stateEncode), 4)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.uint8=type->SchemaID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_8; + + /* encode character SchemaID */ + if (exiappHandEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of SchemaID */ + exiappHandEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element Priority */ + if (exiappHandEncodeStartElement(&(service->outStream), &(service->stateEncode), 1)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.uint8=type->Priority; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_8; + + /* encode character Priority */ + if (exiappHandEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of Priority */ + exiappHandEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_SupportedAppProtocolReq(struct SupportedAppProtocolReq* type, struct EXIDatabinder* service) +{ + + size_t i_loop; + + for(i_loop=0;i_loop < type->arraylen.AppProtocol;i_loop++) + { + + + + /* encode start element AppProtocol */ + if (exiappHandEncodeStartElement(&(service->outStream), &(service->stateEncode), 0)) + { + return -1; + } + + /* encode children of AppProtocol */ + if(serialize_AppProtocolType(&(type->AppProtocol[i_loop]),service)) + { + return -1; + } + + + /* encode end element of AppProtocol */ + exiappHandEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_SupportedAppProtocolRes(struct SupportedAppProtocolRes* type, struct EXIDatabinder* service) +{ + + + + /* encode start element ResponseCode */ + if (exiappHandEncodeStartElement(&(service->outStream), &(service->stateEncode), 3)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiappHandEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiappHandEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.SchemaID) + { + + + + /* encode start element SchemaID */ + if (exiappHandEncodeStartElement(&(service->outStream), &(service->stateEncode), 4)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.uint8=type->SchemaID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_8; + + /* encode character SchemaID */ + if (exiappHandEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of SchemaID */ + exiappHandEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_EXIDocumentType_appHand(struct EXIDocumentType_appHand* type, struct EXIDatabinder* service) +{ + + if(type->isused.supportedAppProtocolReq) + { + + + + /* encode start element supportedAppProtocolReq */ + if (exiappHandEncodeStartElement(&(service->outStream), &(service->stateEncode), 65)) + { + return -1; + } + + /* encode children of supportedAppProtocolReq */ + if(serialize_SupportedAppProtocolReq( type->supportedAppProtocolReq,service)) + { + return -1; + } + + + + /* encode end element of supportedAppProtocolReq */ + exiappHandEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.supportedAppProtocolRes) + { + + + + /* encode start element supportedAppProtocolRes */ + if (exiappHandEncodeStartElement(&(service->outStream), &(service->stateEncode), 66)) + { + return -1; + } + + /* encode children of supportedAppProtocolRes */ + if(serialize_SupportedAppProtocolRes( type->supportedAppProtocolRes,service)) + { + return -1; + } + + + + /* encode end element of supportedAppProtocolRes */ + exiappHandEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + + + + + /* serialize data to EXI stream */ +static int serialize_message(struct EXIDatabinder* service) + { + + /* encode start document */ + if (exiappHandEncodeStartDocument(&(service->outStream), &(service->stateEncode)) ) + { + + return -1; + } + + + if (serialize_EXIDocumentType_appHand(&(service->exiMsg), service)) + + + { + + return -1; + } + + + /* encode end document */ + if (exiappHandEncodeEndDocument(&(service->outStream), &(service->stateEncode))) { + + return -1; + } + + return 0; + + } + + + +int serialize_appHand(struct EXIDatabinder* service, uint8_t* outStream, uint16_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}; + + uint32_t outPos =service->transportHeaderOffset; + + /* assign outStream data to service EXI structure */ + service->outStream.data = outStream; + service->outStream.pos = &outPos; + service->outStream.buffer=0; + service->outStream.capacity=8; + + service->exiMsg = *exiDoc; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + + if(exiappHandInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode)) + { + lerr = -1; + } + + /* serialze message*/ + if(serialize_message(service)) + { + lerr = -1; + } + + outPos -= service->transportHeaderOffset; + *payloadLength = outPos; + + + return lerr; + } + +/* Initialize serializer */ +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) +{ + + /* init byte array */ + service->val.binary = service_bytes; + + /* init string array */ + service->val.str.miss = service_string; + + /* init output stream */ + + service->outStream.size=max_outStream_size; + + service->transportHeaderOffset=transportHeaderOffset; + + return 0; +} + + diff --git a/src/appHandshake/appHand_dataTypes.c b/src/appHandshake/appHand_dataTypes.c new file mode 100644 index 0000000..02d170b --- /dev/null +++ b/src/appHandshake/appHand_dataTypes.c @@ -0,0 +1,57 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + +#include "EXITypes.h" +#include "appHand_dataTypes.h" + + +static void init_protocolNamespaceType(struct protocolNamespaceType* type) +{ + type->arraylen.data=0; + +} + + void init_SupportedAppProtocolReq(struct SupportedAppProtocolReq* type) +{ + + type->arraylen.AppProtocol=0; + +} + + void init_SupportedAppProtocolRes(struct SupportedAppProtocolRes* type) +{ + type->isused.SchemaID=0; + +} + void init_EXIDocumentType_appHand(struct EXIDocumentType_appHand* type) +{ + type->isused.supportedAppProtocolReq=0; + type->isused.supportedAppProtocolRes=0; + +} diff --git a/src/appHandshake/appHand_dataTypes.h b/src/appHandshake/appHand_dataTypes.h new file mode 100644 index 0000000..fc28224 --- /dev/null +++ b/src/appHandshake/appHand_dataTypes.h @@ -0,0 +1,133 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef APPHANDDATATYPES_H +#define APPHANDDATATYPES_H + +#include "EXITypes.h" +#include "string.h" + + + + +enum responseCodeType_appHand +{ + OK_SuccessfulNegotiation_responseCodeType=0, + OK_SuccessfulNegotiationWithMinorDeviation_responseCodeType=1, + Failed_NoNegotiation_responseCodeType=2 + +}; + + + + +struct arraylen_protocolNamespaceType +{ + size_t data; + + +}; + +struct protocolNamespaceType +{ + uint32_t data[100]; + struct arraylen_protocolNamespaceType arraylen; + +}; + +struct AppProtocolType +{ + struct protocolNamespaceType ProtocolNamespace; + uint32_t VersionNumberMajor; + uint32_t VersionNumberMinor; + uint8_t SchemaID; + uint8_t Priority; + + +}; + +struct arraylen_SupportedAppProtocolReq +{ + size_t AppProtocol; + + +}; + +struct SupportedAppProtocolReq +{ + struct AppProtocolType AppProtocol[20]; + struct arraylen_SupportedAppProtocolReq arraylen; + +}; + +struct selection_EXIDocumentType_appHand +{ + unsigned int supportedAppProtocolReq:1; + unsigned int supportedAppProtocolRes:1; + + +}; + +struct selection_SupportedAppProtocolRes +{ + unsigned int SchemaID:1; + + +}; + +struct SupportedAppProtocolRes +{ + enum responseCodeType_appHand ResponseCode; + uint8_t SchemaID; + struct selection_SupportedAppProtocolRes isused; + +}; + +struct EXIDocumentType_appHand +{ + struct SupportedAppProtocolReq* supportedAppProtocolReq; + struct 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); + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/src/appHandshake/appHand_service.h b/src/appHandshake/appHand_service.h new file mode 100644 index 0000000..1a3834e --- /dev/null +++ b/src/appHandshake/appHand_service.h @@ -0,0 +1,94 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + + +#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 diff --git a/src/codec/AbstractDecoderChannel.c b/src/codec/AbstractDecoderChannel.c new file mode 100644 index 0000000..e22c553 --- /dev/null +++ b/src/codec/AbstractDecoderChannel.c @@ -0,0 +1,669 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include "DecoderChannel.h" + +#include "EXIConfig.h" +#include "EXIOptions.h" +#include "BitInputStream.h" +#include "EXITypes.h" +#include "MethodsBag.h" +#include "v2gEXICoder.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 + +/* unsigned long == 64 bits, 10 * 7bits = 70 bits */ +#define MAX_OCTETS_FOR_UNSIGNED_INTEGER_64 10 +/* unsigned int == 32 bits, 5 * 7bits = 35 bits */ +#define MAX_OCTETS_FOR_UNSIGNED_INTEGER_32 5 + +/* buffer for reading (arbitrary) large integer values */ +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; + uint8_t b; + int k; + + do { + /* 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 ( errn == 0 ) { + /* 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; + } else { + iv->type = EXI_INTEGER_32; + } + } else { + if (iv->val.uint32 <= UINT16_MAX) { + iv->type = EXI_UNSIGNED_INTEGER_16; + } else { + iv->type = EXI_UNSIGNED_INTEGER_32; + } + } + 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; + } + 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; + } else { + iv->type = EXI_INTEGER_64; + } + } else { + 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; + } + } + break; + default: + errn = EXI_UNSUPPORTED_INTEGER_VALUE; + break; + } + } + + return errn; +} + +int decodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv) { + return _decodeUnsignedInteger(stream, iv, 0); +} + +int decodeUnsignedInteger16(bitstream_t* stream, uint16_t* uint16) { + unsigned int mShift = 0; + int errn = 0; + uint8_t b; + *uint16 = 0; + + do { + /* 1. Read the next octet */ + errn = decode(stream, &b); + /* 2. Multiply the value of the unsigned number represented by the 7 + * 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)); + /* 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); + + return errn; +} + +int decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32) { + /* 0XXXXXXX ... 1XXXXXXX 1XXXXXXX */ + unsigned int mShift = 0; + int errn = 0; + uint8_t b; + *uint32 = 0; + + do { + /* 1. Read the next octet */ + errn = decode(stream, &b); + /* 2. Multiply the value of the unsigned number represented by the 7 + * least significant + * bits of the octet by the current multiplier and add the result to + * the current value */ + *uint32 += (uint32_t)((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); + + return errn; +} + +/** + * Decode an arbitrary precision non negative integer using a sequence of + * octets. The most significant bit of the last octet is set to zero to + * indicate sequence termination. Only seven bits per octet are used to + * store the integer's value. + */ +int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64) { + unsigned int mShift = 0; + int errn = 0; + uint8_t b; + *uint64 = 0L; + + do { + errn = decode(stream, &b); + *uint64 += ((uint64_t) (b & 127)) << mShift; + mShift += 7; + } while (errn == 0 && (b >> 7) == 1); + + return errn; +} + + +int decodeInteger(bitstream_t* stream, exi_integer_t* iv) { + int b; + int errn = decodeBoolean(stream, &b); + if (errn == 0) { + errn = _decodeUnsignedInteger(stream, iv, b); + } + + return errn; +} + + +/** + * Decode an arbitrary precision integer using a sign bit followed by a + * sequence of octets. The most significant bit of the last octet is set to + * zero to indicate sequence termination. Only seven bits per octet are used + * to store the integer's value. + */ +int decodeInteger16(bitstream_t* stream, int16_t* int16) { + int b; + 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); + } + } + + return errn; +} + +/** + * Decode an arbitrary precision integer using a sign bit followed by a + * sequence of octets. The most significant bit of the last octet is set to + * zero to indicate sequence termination. Only seven bits per octet are used + * to store the integer's value. + */ +int decodeInteger32(bitstream_t* stream, int32_t* int32) { + int b; + 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); + } + } + + return errn; +} + +/** + * Decode an arbitrary precision integer using a sign bit followed by a + * sequence of octets. The most significant bit of the last octet is set to + * zero to indicate sequence termination. Only seven bits per octet are used + * to store the integer's value. + */ +int decodeInteger64(bitstream_t* stream, int64_t* int64) { + int b; + 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); + } + } + + return errn; +} + +/** + * Decode a Float datatype as two consecutive Integers. + * The first Integer represents the mantissa of the floating point + * number and the second Integer represents the base-10 exponent + * of the floating point number. + */ +int decodeFloat(bitstream_t* stream, exi_float_me_t* f) { + int errn = decodeInteger64(stream, &f->mantissa); + if (errn == 0) { + errn = decodeInteger16(stream, &f->exponent); + } + return errn; +} + +/** + * Decode a decimal represented as a Boolean sign followed by two Unsigned + * Integers. A sign value of zero (0) is used to represent positive Decimal + * values and a sign value of one (1) is used to represent negative Decimal + * values The first Integer represents the integral portion of the Decimal + * value. The second positive integer represents the fractional portion of + * the decimal with the digits in reverse order to preserve leading zeros. + */ +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); + } + } + + return errn; +} + +/** + * 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; + 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; + } + + return errn; +} + +/** + * Decode a length prefixed sequence of characters. + */ +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); + } + return errn; +} + +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; + } + + return errn; +} + + +static int _readStringValueGlobalHit(bitstream_t* stream, exi_state_t* state, uint32_t* globalID) { + int errn; + uint16_t codingLength; + + errn = exiGetCodingLength(state->stringTable.numberOfGlobalStrings, &codingLength); + if(errn == 0) { + errn = decodeNBitUnsignedInteger(stream, codingLength, globalID); + } + + return errn; +} + +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 */ + } + break; + } + } + + return errn; +} + +int decodeRCSStringValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, exi_rcs_t* rcs, exi_string_value_t* s) { + unsigned int i; + 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) { + 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 */ + } + break; + } + } + + return errn; +} + +/** + * Decode a sequence of characters according to a given length. + * Each character is represented by its UCS [ISO/IEC 10646] + * code point encoded as an Unsigned Integer + */ +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++) { + errn = decodeUnsignedInteger32(stream, &chars[i]); + } + + return errn; +} + + +/** + * Decode a binary value as a length-prefixed sequence of octets. + */ +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 */ + } + + for (i = 0; i < bytes->len && errn == 0; i++) { + errn = decode(stream, &b); + bytes->data[i] = (uint8_t)b; + } + } + + return errn; +} + +/** + * Decode Date-Time as sequence of values representing the individual + * components of the Date-Time. + */ +int decodeDateTime(bitstream_t* stream, exi_datetime_type_t type, exi_datetime_t* datetime) { + int errn = 0; + + datetime->type = type; + + datetime->year = 0; + datetime->monthDay = 0; + datetime->time = 0; + datetime->presenceFractionalSecs = 0; + datetime->fractionalSecs = 0; + datetime->presenceTimezone = 0; + datetime->timezone = 0; + + switch (type) { + case EXI_DATETIME_GYEAR: /* Year, [Time-Zone] */ + errn = decodeInteger32(stream, &datetime->year); + if (errn == 0) { + 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); + } + 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; + } + } + /* 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); + } + } + } + break; + case EXI_DATETIME_GMONTH: /* MonthDay, [TimeZone] */ + /* e.g. "--12" */ + case EXI_DATETIME_GMONTHDAY: /* MonthDay, [TimeZone] */ + /* e.g. "--01-28" */ + case EXI_DATETIME_GDAY: /* MonthDay, [TimeZone] */ + /* "---16" */ + errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, &datetime->monthDay ); + break; + default: + errn = EXI_UNSUPPORTED_DATETIME_TYPE; + break; + } + + 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; + } + } + + return errn; +} + +#endif + diff --git a/src/codec/AbstractEncoderChannel.c b/src/codec/AbstractEncoderChannel.c new file mode 100644 index 0000000..2e6367f --- /dev/null +++ b/src/codec/AbstractEncoderChannel.c @@ -0,0 +1,540 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include "EncoderChannel.h" +#include "EXIOptions.h" +#include "BitOutputStream.h" +#include "EXITypes.h" +#include "ErrorCodes.h" +#include "MethodsBag.h" +#include "v2gEXICoder.h" + +#ifndef ABSTRACT_ENCODER_CHANNEL_C +#define ABSTRACT_ENCODER_CHANNEL_C + +int encodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv) { + int errn = 0; + switch (iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + errn = encodeUnsignedInteger32(stream, iv->val.uint8); + break; + case EXI_UNSIGNED_INTEGER_16: + errn = encodeUnsignedInteger32(stream, iv->val.uint16); + break; + case EXI_UNSIGNED_INTEGER_32: + errn = encodeUnsignedInteger32(stream, iv->val.uint32); + break; + case EXI_UNSIGNED_INTEGER_64: + errn = encodeUnsignedInteger64(stream, iv->val.uint64); + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + if (iv->val.int8 < 0) { + return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE; + } + errn = encodeUnsignedInteger32(stream, (uint32_t)(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)); + break; + case EXI_INTEGER_32: + if (iv->val.int32 < 0) { + return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE; + } + errn = encodeUnsignedInteger32(stream, (uint32_t)(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)); + break; + default: + errn = EXI_UNSUPPORTED_INTEGER_VALUE_TYPE; + break; + } + + return errn; +} + +/** + * Encode an arbitrary precision non negative integer using a sequence of + * octets. The most significant bit of the last octet is set to zero to + * indicate sequence termination. Only seven bits per octet are used to + * store the integer's value. + */ +int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n) { + int errn = 0; + if (n < 128) { + /* write byte as is */ + errn = encode(stream, (uint8_t) n); + } else { + uint8_t n7BitBlocks = numberOf7BitBlocksToRepresent(n); + + switch (n7BitBlocks) { + case 5: + errn = encode(stream, (uint8_t) (128 | n)); + n = n >> 7; + if (errn != 0) { + break; + } + /* no break */ + case 4: + errn = encode(stream, (uint8_t) (128 | n)); + n = n >> 7; + if (errn != 0) { + break; + } + /* no break */ + case 3: + errn = encode(stream, (uint8_t) (128 | n)); + n = n >> 7; + if (errn != 0) { + break; + } + /* no break */ + case 2: + errn = encode(stream, (uint8_t) (128 | n)); + n = n >> 7; + if (errn != 0) { + break; + } + /* no break */ + case 1: + /* 0 .. 7 (last byte) */ + errn = encode(stream, (uint8_t) (0 | n)); + /* no break */ + } + } + + return errn; +} + +/** + * Encode an arbitrary precision non negative integer using a sequence of + * octets. The most significant bit of the last octet is set to zero to + * indicate sequence termination. Only seven bits per octet are used to + * store the integer's value. + */ +int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n) { + int errn = 0; + uint8_t lastEncode = (uint8_t) n; + n >>= 7; + + while (n != 0 && errn == 0) { + errn = encode(stream, lastEncode | 128); + lastEncode = (uint8_t) n; + n >>= 7; + } + + if (errn == 0) { + errn = encode(stream, lastEncode); + } + + return errn; +} + +int encodeInteger(bitstream_t* stream, exi_integer_t* iv) { + int errn = 0; + switch (iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + errn = encodeInteger32(stream, iv->val.uint8); + break; + case EXI_UNSIGNED_INTEGER_16: + errn = encodeInteger32(stream, iv->val.uint16); + break; + case EXI_UNSIGNED_INTEGER_32: + errn = encodeInteger64(stream, iv->val.uint32); + break; + case EXI_UNSIGNED_INTEGER_64: + errn = encodeInteger64(stream, (int64_t)(iv->val.uint64)); + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + errn = encodeInteger32(stream, iv->val.int8); + break; + case EXI_INTEGER_16: + errn = encodeInteger32(stream, iv->val.int16); + break; + case EXI_INTEGER_32: + errn = encodeInteger32(stream, iv->val.int32); + break; + case EXI_INTEGER_64: + errn = encodeInteger64(stream, iv->val.int64); + break; + default: + errn = EXI_UNSUPPORTED_INTEGER_VALUE_TYPE; + break; + } + + return errn; +} + +/** + * Encode an arbitrary precision integer using a sign bit followed by a + * sequence of octets. The most significant bit of the last octet is set to + * zero to indicate sequence termination. Only seven bits per octet are used + * to store the integer's value. + */ +int encodeInteger32(bitstream_t* stream, int32_t n) { + int errn; + /* signalize sign */ + if (n < 0) { + errn = encodeBoolean(stream, 1); + /* For negative values, the Unsigned Integer holds the + * magnitude of the value minus 1 */ + n = (-n) - 1; + } else { + errn = encodeBoolean(stream, 0); + } + if (errn == 0) { + errn = encodeUnsignedInteger32(stream, (uint32_t)n); + } + return errn; +} + +/** + * Encode an arbitrary precision integer using a sign bit followed by a + * sequence of octets. The most significant bit of the last octet is set to + * zero to indicate sequence termination. Only seven bits per octet are used + * to store the integer's value. + */ +int encodeInteger64(bitstream_t* stream, int64_t n) { + int errn; + /* signalize sign */ + if (n < 0) { + errn = encodeBoolean(stream, 1); + /* For negative values, the Unsigned Integer holds the + * magnitude of the value minus 1 */ + n = (-n) - 1; + } else { + errn = encodeBoolean(stream, 0); + } + if (errn == 0) { + errn = encodeUnsignedInteger64(stream, (uint64_t)n); + } + return errn; +} + +/** + * The Float datatype representation is two consecutive Integers. + * The first Integer represents the mantissa of the floating point + * number and the second Integer represents the base-10 exponent + * of the floating point number. + */ +int encodeFloat(bitstream_t* stream, exi_float_me_t* f) { + int errn = encodeInteger64(stream, f->mantissa); + if (errn == 0) { + errn = encodeInteger32(stream, f->exponent); + } + return errn; +} + +/** + * Encode a decimal represented as a Boolean sign followed by two Unsigned + * Integers. A sign value of zero (0) is used to represent positive Decimal + * values and a sign value of one (1) is used to represent negative Decimal + * values The first Integer represents the integral portion of the Decimal + * value. The second positive integer represents the fractional portion of + * the decimal with the digits in reverse order to preserve leading zeros. + */ +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); + } + } + return errn; +} + +/** + * Encode a length prefixed sequence of characters. + */ +int encodeString(bitstream_t* stream, exi_string_ucs_t* string) { + int errn = encodeUnsignedInteger32(stream, string->len); + if (errn == 0) { + errn = encodeUCSCharacters(stream, string->codepoints, string->len); + } + return errn; +} + +static int _writeStringValueLocalHit(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 = encodeNBitUnsignedInteger(stream, codingLength, localID); + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + + return errn; +} + +static int _writeStringValueGlobalHit(bitstream_t* stream, exi_state_t* state, + uint32_t globalID) { + int errn; + uint16_t codingLength; + + errn = exiGetCodingLength(state->stringTable.numberOfGlobalStrings, &codingLength); + if (errn == 0) { + errn = encodeNBitUnsignedInteger(stream, codingLength, globalID); + } + + return errn; +} + +int encodeStringValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, + exi_string_value_t* string) { + int errn; + + switch (string->type) { + case EXI_STRING_VALUE_LOCAL_HIT: + errn = encodeUnsignedInteger32(stream, 0); + if (errn == 0) { + 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); + } + 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 = 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 */ + } + } + break; + default: + errn = EXI_UNSUPPORTED_STRING_VALUE_TYPE; + break; + } + + return errn; +} + +int encodeRCSStringValue(bitstream_t* stream, exi_state_t* state, + uint16_t qnameID, exi_rcs_t* rcs, exi_string_value_t* string) { + unsigned int i; + int errn; + uint32_t k; + + switch (string->type) { + case EXI_STRING_VALUE_LOCAL_HIT: + errn = encodeUnsignedInteger32(stream, 0); + if (errn == 0) { + 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); + } + 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 */ + } + } + } +#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 */ + } +#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */ +#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */ + } + break; + default: + errn = EXI_UNSUPPORTED_STRING_VALUE_TYPE; + break; + } + + return errn; +} + +/** + * Encode a sequence of characters according to a given length. + * Each character is represented by its UCS [ISO/IEC 10646] + * code point encoded as an Unsigned Integer + */ +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++) { + errn = encodeUnsignedInteger32(stream, chars[i]); + } + return errn; +} + +/** + * Encode a binary value as a length-prefixed sequence of octets. + */ +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++) { + errn = encode(stream, bytes->data[i]); + } + return errn; +} + +/** + * Encode a datetime representation which is a sequence of values + * representing the individual components of the Date-Time + */ +int encodeDateTime(bitstream_t* stream, exi_datetime_t* datetime) { + int errn = 0; + switch (datetime->type) { + case EXI_DATETIME_GYEAR: /* Year, [Time-Zone] */ + errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET); + break; + 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); + } + 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; + } + } + /* 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); + } + } + break; + case EXI_DATETIME_GMONTH: /* MonthDay, [TimeZone] */ + case EXI_DATETIME_GMONTHDAY: /* MonthDay, [TimeZone] */ + case EXI_DATETIME_GDAY: /* MonthDay, [TimeZone] */ + errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, + datetime->monthDay); + break; + default: + errn = EXI_UNSUPPORTED_DATETIME_TYPE; + break; + } + 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); + } + } + + return errn; +} + +#endif + diff --git a/src/codec/BitDecoderChannel.c b/src/codec/BitDecoderChannel.c new file mode 100644 index 0000000..e861e74 --- /dev/null +++ b/src/codec/BitDecoderChannel.c @@ -0,0 +1,78 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include "DecoderChannel.h" +#include "BitInputStream.h" +#include "EXITypes.h" +#include "ErrorCodes.h" + +#ifndef BIT_DECODER_CHANNEL_C +#define BIT_DECODER_CHANNEL_C + + +#if EXI_OPTION_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; + } + } + + return errn; +} + +int decodeBoolean(bitstream_t* stream, int* b) { + uint32_t ub; + int errn = readBits(stream, 1, &ub); + *b = (ub == 0) ? 0 : 1; + return errn; +} + +int decodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t* uint32) { + int errn = 0; + if (nbits == 0) { + *uint32 = 0; + } else { + errn= readBits(stream, nbits, uint32); + } + return errn; +} + +#endif + +#endif + diff --git a/src/codec/BitEncoderChannel.c b/src/codec/BitEncoderChannel.c new file mode 100644 index 0000000..60e6ab6 --- /dev/null +++ b/src/codec/BitEncoderChannel.c @@ -0,0 +1,93 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include "EncoderChannel.h" + +#include "EXIOptions.h" +#include "BitOutputStream.h" +#include "EXITypes.h" + +#ifndef BIT_ENCODER_CHANNEL_C +#define BIT_ENCODER_CHANNEL_C + +#if EXI_OPTION_ALIGNMENT == BIT_PACKED + + +int encode(bitstream_t* stream, uint8_t b) { + return writeBits(stream, 8, b); +} + +/** + * Encode a single boolean value. A false value is encoded as bit 0 and true + * value is encode as bit 1. + */ +int encodeBoolean(bitstream_t* stream, int b) { + uint8_t val = b ? 1 : 0; + return writeBits(stream, 1, val); +} + + +/** + * Encode n-bit unsigned integer. The n least significant bits of parameter + * 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 errn; +} + +/** + * Flush underlying bit output stream. + */ +int encodeFinish(bitstream_t* stream) { + return flush(stream); +} + + +#endif /* alignment */ + +#endif + + + + + + + + + + + + diff --git a/src/codec/BitInputStream.c b/src/codec/BitInputStream.c new file mode 100644 index 0000000..46064ad --- /dev/null +++ b/src/codec/BitInputStream.c @@ -0,0 +1,106 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include "BitInputStream.h" +#include "EXIConfig.h" +#include "EXITypes.h" +#include "ErrorCodes.h" + +#ifndef BIT_INPUT_STREAM_C +#define BIT_INPUT_STREAM_C + +/* internal method to (re)fill buffer */ +static int readBuffer(bitstream_t* stream) +{ + int errn = 0; + if(stream->capacity==0) + { +#if EXI_STREAM == BYTE_ARRAY + if ( (*stream->pos) < stream->size ) { + stream->buffer = stream->data[(*stream->pos)++]; + stream->capacity = BITS_IN_BYTE; + } else { + errn = EXI_ERROR_INPUT_STREAM_EOF; + } +#endif +#if EXI_STREAM == FILE_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; + } +#endif + } + return errn; +} + +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; + + /* 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 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); + } + } + } + } + + return errn; +} + +#endif diff --git a/src/codec/BitInputStream.h b/src/codec/BitInputStream.h new file mode 100644 index 0000000..c44cceb --- /dev/null +++ b/src/codec/BitInputStream.h @@ -0,0 +1,69 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file BitInputStream.h + * \brief Bit Input Stream + * + * Read bits and bytes from an underlying input stream. + * + */ + +#include "EXITypes.h" + +#ifndef BIT_INPUT_STREAM_H +#define BIT_INPUT_STREAM_H + +/** + * \brief Read bits + * + * Read the next num_bits bits and returns result an integer. + * + * \param stream Input Stream + * \param num_bits Number of bits + * \param b Integer value (out) + * \return Error-Code <> 0 + * + */ +int readBits(bitstream_t* stream, uint16_t num_bits, uint32_t* b); + + +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/BitOutputStream.c b/src/codec/BitOutputStream.c new file mode 100644 index 0000000..4698df2 --- /dev/null +++ b/src/codec/BitOutputStream.c @@ -0,0 +1,125 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include "BitOutputStream.h" +#include "EXIConfig.h" +#include "EXITypes.h" +#include "ErrorCodes.h" + +#ifndef BIT_OUTPUT_STREAM_C +#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); + /* 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; + } +#endif +#if EXI_STREAM == FILE_STREAM + if ( putc(stream->buffer, stream->file) == EOF ) { + errn = EXI_ERROR_OUTPUT_STREAM_EOF; + } +#endif + stream->capacity = BITS_IN_BYTE; + stream->buffer = 0; + } + } 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)) ); + + nbits = (uint16_t)(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; + } +#endif +#if EXI_STREAM == FILE_STREAM + if ( putc(stream->buffer, stream->file) == EOF ) { + errn = 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); +#if EXI_STREAM == BYTE_ARRAY + if ((*stream->pos) >= stream->size) { + errn = EXI_ERROR_OUTPUT_STREAM_EOF; + } else { + 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; + } +#endif + } + + /* spared bits are kept in the buffer */ + stream->buffer = (uint8_t)val; /* Note: the high bits will be shifted out during further filling */ + stream->capacity = (uint8_t)(BITS_IN_BYTE - (nbits)); + } + + return errn; +} + +/** + * Flush output + */ +int flush(bitstream_t* stream) { + int errn = 0; + if (stream->capacity == BITS_IN_BYTE) { + /* nothing to do, no bits in buffer */ + } else { + errn = writeBits(stream, stream->capacity, 0); + } + return errn; +} + +#endif + diff --git a/src/codec/BitOutputStream.h b/src/codec/BitOutputStream.h new file mode 100644 index 0000000..809d011 --- /dev/null +++ b/src/codec/BitOutputStream.h @@ -0,0 +1,86 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file BitOutputStream.h + * \brief Bit Output Stream + * + * Write bits and bytes to an underlying output stream. + * + */ + +#include + +#include "EXITypes.h" + +#ifndef BIT_OUTPUT_STREAM_H +#define BIT_OUTPUT_STREAM_H + +/** + * \brief Write bits + * + * Write the n least significant bits of parameter b starting + * with the most significant, i.e. from left to right. + * + * \param stream Output Stream + * \param nbits Number of bits + * \param bits value + * \return Error-Code <> 0 + * + */ +int writeBits(bitstream_t* stream, uint16_t nbits, uint32_t bits); + + +/** + * \brief Flush output + * + * If there are some unwritten bits, pad them if necessary and + * write them out. Note that this method does flush the + * underlying stream. + * + * \param stream Output Stream + * \return Error-Code <> 0 + * + */ +int flush(bitstream_t* stream); + +#endif + + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/ByteDecoderChannel.c b/src/codec/ByteDecoderChannel.c new file mode 100644 index 0000000..e498d9e --- /dev/null +++ b/src/codec/ByteDecoderChannel.c @@ -0,0 +1,94 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include "DecoderChannel.h" +#include "EXIOptions.h" +#include "BitInputStream.h" +#include "EXITypes.h" +#include "ErrorCodes.h" + +#ifndef BYTE_DECODER_CHANNEL_C +#define BYTE_DECODER_CHANNEL_C + + +#if EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT + +int decode(bitstream_t* stream, uint8_t* b) { + int errn = 0; +#if EXI_STREAM == BYTE_ARRAY + if ( (*stream->pos) < stream->size ) { + *b = stream->data[(*stream->pos)++]; + } else { + errn = EXI_ERROR_INPUT_STREAM_EOF; + } +#endif /* EXI_STREAM == BYTE_ARRAY */ +#if EXI_STREAM == FILE_STREAM + *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; + } +#endif /* EXI_STREAM == FILE_STREAM */ + + return errn; +} + +int decodeBoolean(bitstream_t* stream, int* b) { + uint8_t bb; + int errn = decode(stream, &bb); + *b = (bb == 0) ? 0 : 1; + return errn; +} + +/** + * Decodes and returns an n-bit unsigned integer using the minimum number of + * bytes required for n bits. + */ +int decodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t* uint32) { + uint16_t bitsRead = 0; + uint8_t b; + int errn = 0; + *uint32 = 0; + + while (errn == 0 && bitsRead < nbits) { + errn = decode(stream, &b); + *uint32 = *uint32 + (uint32_t)(b << bitsRead); + bitsRead = (uint16_t)(bitsRead + 8); + } + + return errn; +} + +#endif + +#endif + diff --git a/src/codec/ByteEncoderChannel.c b/src/codec/ByteEncoderChannel.c new file mode 100644 index 0000000..08901bb --- /dev/null +++ b/src/codec/ByteEncoderChannel.c @@ -0,0 +1,144 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include "EncoderChannel.h" + +#include "EXIOptions.h" +#include "BitOutputStream.h" +#include "EXITypes.h" +#include "MethodsBag.h" +#include "ErrorCodes.h" + +#ifndef BYTE_ENCODER_CHANNEL_C +#define BYTE_ENCODER_CHANNEL_C + +#if EXI_OPTION_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; + } else { + errn = 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; + } +#endif /* EXI_STREAM == FILE_STREAM */ + return errn; +} + +/** + * Encode a single boolean value. A false value is encoded as byte 0 and true + * value is encode as byte 1. + */ +int encodeBoolean(bitstream_t* stream, int b) { + uint8_t val = b ? 1 : 0; + return encode(stream, val); +} + + +/** + * Encode n-bit unsigned integer. The n least significant bits of parameter + * 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); + } else if (nbits < 17) { + /* 2 bytes */ + errn = encode(stream, val & 0x00ff); + if(errn == 0) { + errn = encode(stream, (uint8_t)((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)); + } + } + } 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)); + } + } + } + } else { + /* TODO Currently not more than 4 Bytes allowed for NBitUnsignedInteger */ + errn = EXI_UNSUPPORTED_NBIT_INTEGER_LENGTH; + } + } + return errn; +} + + +/** + * Flush underlying bit output stream. + */ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'stream' */ +int encodeFinish(bitstream_t* stream) { + /* no pending bits in byte-aligned mode */ + return 0; +} +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'stream' */ + +#endif /* alignment */ + +#endif + + + + + + + + + + + + diff --git a/src/codec/ByteStream.c b/src/codec/ByteStream.c new file mode 100644 index 0000000..6971dd8 --- /dev/null +++ b/src/codec/ByteStream.c @@ -0,0 +1,89 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +/* Avoid VS warning, put before your included header files */ +/* 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 + +#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) { + FILE* f; + int character; + int errn = 0; + + f = fopen(filename, "rb"); + + if (f == NULL) { + errn = 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; + } + } + fclose(f); + } + + return errn; +} + +int writeBytesToFile(uint8_t* data, uint32_t len, const char * filename) { + size_t rlen; + FILE* f = fopen(filename, "wb+"); + + if (f == NULL) { + return -1; + } else { + rlen = fwrite(data, sizeof(uint8_t), len, f); + fflush(f); + fclose(f); + if(rlen == len) { + return 0; + } else { + return EXI_ERROR_OUTPUT_FILE; + } + } +} + + +#endif /* BYTE_STREAM_C */ + diff --git a/src/codec/ByteStream.h b/src/codec/ByteStream.h new file mode 100644 index 0000000..81ea97a --- /dev/null +++ b/src/codec/ByteStream.h @@ -0,0 +1,76 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + +/** + * \file ByteStream.h + * \brief Byte Stream utilities + * + */ + +#ifndef BYTE_STREAM_H +#define BYTE_STREAM_H + +/** + * \brief Write bytes to file + * + * \param data byte array + * \param len length + * \param filename File name + * \return Error-Code <> 0 + * + */ +int writeBytesToFile(uint8_t* data, uint32_t len, const char * filename); + + +/** + * \brief Read bytes from file + * + * \param filename File name + * \param data byte array + * \param size byte array size + * \param pos byte array position + * \return Error-Code <> 0 + * + */ +int readBytesFromFile(const char * filename, uint8_t* data, uint32_t size, uint32_t* pos); + +#endif /* BYTE_STREAM_H */ + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/CoderChannel.h b/src/codec/CoderChannel.h new file mode 100644 index 0000000..d24a197 --- /dev/null +++ b/src/codec/CoderChannel.h @@ -0,0 +1,51 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.7 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + +#ifndef CODER_CHANNEL_H +#define CODER_CHANNEL_H + +/** EXI alignment mode - Option bit-packed */ +#define BIT_PACKED 1 +/** EXI alignment mode - Option byte-packed */ +#define BYTE_ALIGNMENT 2 +/** EXI alignment mode */ +#define EXI_ALIGNMENT BIT_PACKED + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/DecoderChannel.h b/src/codec/DecoderChannel.h new file mode 100644 index 0000000..ec347d3 --- /dev/null +++ b/src/codec/DecoderChannel.h @@ -0,0 +1,359 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file DecoderChannel.h + * \brief EXI Decoder Channel + * + */ + +#include "EXIOptions.h" +#include "EXITypes.h" + +#ifndef DECODER_CHANNEL_H +#define DECODER_CHANNEL_H + + +/** + * \brief Decode byte value + * + * \param stream Input Stream + * \param b byte (out) + * \return Error-Code <> 0 + * + */ +int decode(bitstream_t* stream, uint8_t* b); + + +/** + * \brief Decode boolean + * + * Decode a single boolean value. The value false is + * represented by 0, and the value true is represented by 1. + * + * \param stream Input Stream + * \param b boolean (out) + * \return Error-Code <> 0 + * + */ +int decodeBoolean(bitstream_t* stream, int* b); + + +/** + * \brief Decode n-bit unsigned integer + * + * Decodes and returns an n-bit unsigned integer. + * + * \param stream Input Stream + * \param nbits Number of bits + * \param uint32 Value (out) + * \return Error-Code <> 0 + * + */ +int decodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t* uint32); + + +/** + * \brief Decode unsigned integer + * + * Decode an arbitrary precision non negative integer using + * a sequence of octets. The most significant bit of the last + * octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Input Stream + * \param iv Unsigned Integer Value (out) + * \return Error-Code <> 0 + * + */ +int decodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv); + + +/** + * \brief Decode unsigned integer + * + * Decode an arbitrary precision non negative integer using + * a sequence of octets. The most significant bit of the last + * octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Input Stream + * \param uint16 Unsigned Integer Value 16 bits (out) + * \return Error-Code <> 0 + * + */ +int decodeUnsignedInteger16(bitstream_t* stream, uint16_t* uint16); + + +/** + * \brief Decode unsigned integer + * + * Decode an arbitrary precision non negative integer using + * a sequence of octets. The most significant bit of the last + * octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Input Stream + * \param uint32 Unsigned Integer Value 32 bits (out) + * \return Error-Code <> 0 + * + */ +int decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32); + + +/** + * \brief Decode unsigned integer + * + * Decode an arbitrary precision non negative integer using + * a sequence of octets. The most significant bit of the last + * octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Input Stream + * \param uint64 Unsigned Integer Value 64 bits (out) + * \return Error-Code <> 0 + * + */ +int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64); + + +/** + * \brief Decode integer + * + * Decode an arbitrary precision integer using a sign bit + * followed by a sequence of octets. The most significant bit + * of the last octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Input Stream + * \param iv Integer Value 64 bits (out) + * \return Error-Code <> 0 + * + */ +int decodeInteger(bitstream_t* stream, exi_integer_t* iv); + + +/** + * \brief Decode integer + * + * Decode an arbitrary precision integer using a sign bit + * followed by a sequence of octets. The most significant bit + * of the last octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Input Stream + * \param int16 Integer Value 16 bits (out) + * \return Error-Code <> 0 + * + */ +int decodeInteger16(bitstream_t* stream, int16_t* int16); + + +/** + * \brief Decode integer + * + * Decode an arbitrary precision integer using a sign bit + * followed by a sequence of octets. The most significant bit + * of the last octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Input Stream + * \param int32 Integer Value 32 bits (out) + * \return Error-Code <> 0 + * + */ +int decodeInteger32(bitstream_t* stream, int32_t* int32); + + +/** + * \brief Decode integer + * + * Decode an arbitrary precision integer using a sign bit + * followed by a sequence of octets. The most significant bit + * of the last octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Input Stream + * \param int64 Integer Value 64 bits (out) + * \return Error-Code <> 0 + * + */ +int decodeInteger64(bitstream_t* stream, int64_t* int64); + + +/** + * \brief Decode float + * + * Decode a Float datatype as two consecutive Integers. The + * first Integer represents the mantissa of the floating point + * number and the second Integer represents the base-10 exponent + * of the floating point number. + * + * \param stream Input Stream + * \param f Float Value (out) + * \return Error-Code <> 0 + * + */ +int decodeFloat(bitstream_t* stream, exi_float_me_t* f); + + +/** + * \brief Decode decimal + * + * Decode a decimal represented as a Boolean sign followed by two + * Unsigned Integers. A sign value of zero (0) is used to represent + * positive Decimal values and a sign value of one (1) is used to + * represent negative Decimal values The first Integer represents + * the integral portion of the Decimal value. The second positive + * integer represents the fractional portion of the decimal with + * the digits in reverse order to preserve leading zeros. + * + * \param stream Input Stream + * \param d Decimal Value (out) + * \return Error-Code <> 0 + * + */ +int decodeDecimal(bitstream_t* stream, exi_decimal_t* d); + + +/** + * \brief Decode String (no length prefix) + * + * Decode a sequence of characters for a given length. + * + * \param stream Input Stream + * \param len Characters length + * \param s String Value (out) + * \return Error-Code <> 0 + * + */ +int decodeStringOnly(bitstream_t* stream, uint16_t len, exi_string_ucs_t* s); + + +/** + * \brief Decode String + * + * Decode a length prefixed sequence of characters. + * + * \param stream Input Stream + * \param s String Value (out) + * \return Error-Code <> 0 + * + */ +int decodeString(bitstream_t* stream, exi_string_ucs_t* s); + + + +/** + * \brief Decode String value + * + * Decode a length prefixed sequence of characters in the sense of string tables. + * length == 0: local value partition hit. + * length == 1: global value partition hit. + * length > 1: string literal is encoded as a String with the length incremented by two + * + * \param stream Input Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \param s String Value (out) + * \return Error-Code <> 0 + * + */ +int decodeStringValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, exi_string_value_t* s); + + +/** + * \brief Decode Restricted characters set string value + * + * \param stream Input Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \param rcs Restricted character set + * \param s String Value (out) + * \return Error-Code <> 0 + * + */ +int decodeRCSStringValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, exi_rcs_t* rcs, exi_string_value_t* s); + + +/** + * \brief Decode characters + * + * Decode a sequence of characters according to a given length. + * + * \param stream Input Stream + * \param len Length + * \param chars Characters (out) + * \return Error-Code <> 0 + * + */ +int decodeCharacters(bitstream_t* stream, uint16_t len, uint32_t* chars); + + +/** + * \brief Decode Binary + * + * Decode a binary value as a length-prefixed sequence of octets. + * + * \param stream Input Stream + * \param bytes Bytes (out) + * \return Error-Code <> 0 + * + */ +int decodeBinary(bitstream_t* stream, exi_bytes_t* bytes); + + +/** + * \brief Decode DateTime + * + * Decode Date-Time as sequence of values representing the + * individual components of the Date-Time. + * + * \param stream Input Stream + * \param type Datetime type + * \param datetime Datetime (out) + * \return Error-Code <> 0 + * + */ +int decodeDateTime(bitstream_t* stream, exi_datetime_type_t type, exi_datetime_t* datetime); + +#endif + + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/DynamicMemory.c b/src/codec/DynamicMemory.c new file mode 100644 index 0000000..25bd8b8 --- /dev/null +++ b/src/codec/DynamicMemory.c @@ -0,0 +1,101 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include "DynamicMemory.h" + +#include + +#include "EXIConfig.h" +#include "EXITypes.h" +#include "ErrorCodes.h" + +#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION +#include + +#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 */ diff --git a/src/codec/DynamicMemory.h b/src/codec/DynamicMemory.h new file mode 100644 index 0000000..5ec5606 --- /dev/null +++ b/src/codec/DynamicMemory.h @@ -0,0 +1,101 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#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 diff --git a/src/codec/EXIConfig.h b/src/codec/EXIConfig.h new file mode 100644 index 0000000..a0e8d17 --- /dev/null +++ b/src/codec/EXIConfig.h @@ -0,0 +1,103 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#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 diff --git a/src/codec/EXIHeaderDecoder.c b/src/codec/EXIHeaderDecoder.c new file mode 100644 index 0000000..9d44038 --- /dev/null +++ b/src/codec/EXIHeaderDecoder.c @@ -0,0 +1,63 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include "EXIHeaderDecoder.h" +#include "BitInputStream.h" +#include "DecoderChannel.h" +#include "ErrorCodes.h" + +#ifndef EXI_HEADER_DECODER_C +#define EXI_HEADER_DECODER_C + +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; + } + } + + return errn; +} + + +#endif + + diff --git a/src/codec/EXIHeaderDecoder.h b/src/codec/EXIHeaderDecoder.h new file mode 100644 index 0000000..ed67723 --- /dev/null +++ b/src/codec/EXIHeaderDecoder.h @@ -0,0 +1,62 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + +/** + * \file EXIHeaderDecoder.h + * \brief EXI Header Decoder + * + */ + +#ifndef EXI_HEADER_DECODER_H +#define EXI_HEADER_DECODER_H + +/** + * \brief Reads EXI header + * + * \param stream Input Stream + * \return Error-Code <> 0 + * + */ +int readEXIHeader(bitstream_t* stream); + +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/EXIHeaderEncoder.c b/src/codec/EXIHeaderEncoder.c new file mode 100644 index 0000000..9cac15a --- /dev/null +++ b/src/codec/EXIHeaderEncoder.c @@ -0,0 +1,47 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include "EXIHeaderEncoder.h" +#include "BitOutputStream.h" +#include "EncoderChannel.h" + +#ifndef EXI_HEADER_ENCODER_C +#define EXI_HEADER_ENCODER_C + +int writeEXIHeader(bitstream_t* stream) { + return writeBits(stream, 8, 128); +} + + +#endif + + diff --git a/src/codec/EXIHeaderEncoder.h b/src/codec/EXIHeaderEncoder.h new file mode 100644 index 0000000..3ab0fde --- /dev/null +++ b/src/codec/EXIHeaderEncoder.h @@ -0,0 +1,63 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + +/** + * \file EXIHeaderEncoder.h + * \brief EXI Header Encoder + * + */ + +#ifndef EXI_HEADER_ENCODER_H +#define EXI_HEADER_ENCODER_H + + +/** + * \brief Writes EXI header + * + * \param stream Output Stream + * \return Error-Code <> 0 + * + */ +int writeEXIHeader(bitstream_t* stream); + +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/EXIOptions.h b/src/codec/EXIOptions.h new file mode 100644 index 0000000..ab2ce47 --- /dev/null +++ b/src/codec/EXIOptions.h @@ -0,0 +1,96 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + + + +/** + * \file EXIOptions.h + * \brief EXI Options for the EXI Codec + * + */ + +#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' + * + * Strict interpretation of schemas is used to achieve better compactness. + * Default Value: false + */ +#define EXI_OPTION_STRICT 0 + + +/** + * \brief EXI 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 + + +/** + * \brief EXI Option 'valuePartitionCapacity' + * + * Specifies the total capacity of value partitions in a string table. + * Default Value: unbounded (-1) + */ +#define EXI_OPTION_VALUE_PARTITION_CAPACITY 0 + +#endif /* EXI_OPTIONS_H */ + + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/EXITypes.h b/src/codec/EXITypes.h new file mode 100644 index 0000000..eee4d6d --- /dev/null +++ b/src/codec/EXITypes.h @@ -0,0 +1,557 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file EXITypes.h + * \brief Basic type definitions and structs + * + */ + +#include +#include "EXIConfig.h" +#if EXI_STREAM == FILE_STREAM +#include +#endif + +#ifndef EXI_TYPES_H +#define EXI_TYPES_H + +/** Number of bits for each byte */ +#define BITS_IN_BYTE 8 + +/** EXI Date-Time offset for year */ +#define DATETIME_YEAR_OFFSET 2000 +/** EXI Date-Time number of bits for monthDay */ +#define DATETIME_NUMBER_BITS_MONTHDAY 9 +/** EXI Date-Time number of bits for time */ +#define DATETIME_NUMBER_BITS_TIME 17 +/** EXI Date-Time number of bits for timezone */ +#define DATETIME_NUMBER_BITS_TIMEZONE 11 +/** EXI Date-Time month multiplicator */ +#define DATETIME_MONTH_MULTIPLICATOR 32 +/** EXI Date-Time offset for timzone minutes */ +#define DATETIME_TIMEZONE_OFFSET_IN_MINUTES 896 + +/** Maximum integer value for uint */ +#define UINT_MAX_VALUE 65535 + + +/** EXI Float exponent special values */ +#define FLOAT_EXPONENT_SPECIAL_VALUES -16384 +/** EXI Float mantissa infinity */ +#define FLOAT_MANTISSA_INFINITY 1 +/** EXI Float minus mantissa infinity */ +#define FLOAT_MANTISSA_MINUS_INFINITY -1 +/** EXI Float not a number */ +#define FLOAT_MANTISSA_NOT_A_NUMBER 0 + +/** \brief EXI Events */ +typedef enum { + /** Start Document SD */ + EXI_EVENT_START_DOCUMENT, + /** End Document ED */ + EXI_EVENT_END_DOCUMENT, + /** Start Element SE(qname) */ + EXI_EVENT_START_ELEMENT, + /** Start Element SE(uri:*) */ + EXI_EVENT_START_ELEMENT_NS, + /** Start Element SE(*) generic */ + EXI_EVENT_START_ELEMENT_GENERIC, + /** Start Element SE(*) generic undeclared */ + EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED, + /** End Element EE */ + EXI_EVENT_END_ELEMENT, + /** End Element EE undeclared*/ + EXI_EVENT_END_ELEMENT_UNDECLARED, + /** Characters CH */ + EXI_EVENT_CHARACTERS, + /** Characters CH generic */ + EXI_EVENT_CHARACTERS_GENERIC, + /** Characters CH generic undeclared */ + EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED, + /** Attribute AT(xsi:type) */ + EXI_EVENT_ATTRIBUTE_XSI_TYPE, + /** Attribute AT(xsi:nil) */ + EXI_EVENT_ATTRIBUTE_XSI_NIL, + /** Attribute AT(qname) */ + EXI_EVENT_ATTRIBUTE, + /** Attribute AT(uri:*) */ + EXI_EVENT_ATTRIBUTE_NS, + /** Attribute AT(*) generic */ + EXI_EVENT_ATTRIBUTE_GENERIC, + /** Attribute AT(*) invalid value */ + EXI_EVENT_ATTRIBUTE_INVALID_VALUE, + /** Attribute AT(*) any invalid value */ + EXI_EVENT_ATTRIBUTE_ANY_INVALID_VALUE, + /** Attribute AT(*) generic undeclared */ + EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED, + /* error state */ + EXI_EVENT_ERROR +} exi_event_t; + + +/** + * \brief Bit stream container + * + * Structure for byteArray/file stream. + */ +typedef struct { +#if EXI_STREAM == BYTE_ARRAY + /** byte array size */ + uint32_t size; + /** byte array data */ + uint8_t* data; + /** byte array next position in array */ + uint32_t* pos; +#endif +#if EXI_STREAM == FILE_STREAM + /** file pointer */ + FILE *file; +#endif + /** Current byte buffer*/ + uint8_t buffer; + /** Remaining bit capacity in current byte buffer*/ + uint8_t capacity; +} bitstream_t; + + +/** \brief EXI Value Datatypes */ +typedef enum { + /** Binary Base64 */ + EXI_DATATYPE_BINARY_BASE64, + /** Binary Hex */ + EXI_DATATYPE_BINARY_HEX, + /** Boolean */ + EXI_DATATYPE_BOOLEAN, + /** Boolean with Facets */ + EXI_DATATYPE_BOOLEAN_FACET, + /** Decimal */ + EXI_DATATYPE_DECIMAL, + /** Float & Double */ + EXI_DATATYPE_FLOAT, + /** N-Bit Unsigned Integer */ + EXI_DATATYPE_NBIT_UNSIGNED_INTEGER, + /** Unsigned Integer */ + EXI_DATATYPE_UNSIGNED_INTEGER, + /** (Signed) Integer */ + EXI_DATATYPE_INTEGER, + /** Datetime */ + EXI_DATATYPE_DATETIME, + /** String */ + EXI_DATATYPE_STRING, + /** Restricted Character Set String */ + EXI_DATATYPE_RCS_STRING, + /** Enumeration */ + EXI_DATATYPE_ENUMERATION, + /** List */ + EXI_DATATYPE_LIST, + /** QName (e.g. xsi:type) */ + EXI_DATATYPE_QNAME +} exi_datatype_t; + + +/** \brief EXI Integer Value types */ +typedef enum { + /** Unsigned Integer 8 bits */ + EXI_UNSIGNED_INTEGER_8, + /** Unsigned Integer 16 bits */ + EXI_UNSIGNED_INTEGER_16, + /** Unsigned Integer 32 bits */ + EXI_UNSIGNED_INTEGER_32, + /** Unsigned Integer 64 bits */ + EXI_UNSIGNED_INTEGER_64, + /** (Signed) Integer 8 bits */ + EXI_INTEGER_8, + /** (Signed) Integer 16 bits */ + EXI_INTEGER_16, + /** (Signed) Integer 32 bits */ + EXI_INTEGER_32, + /** (Signed) Integer 64 bits */ + EXI_INTEGER_64 +} exi_integer_type_t; + + +/** \brief EXI Datetime types */ +typedef enum { + /** gYear */ + EXI_DATETIME_GYEAR, + /** gYearMonth */ + EXI_DATETIME_GYEARMONTH, + /** date */ + EXI_DATETIME_DATE, + /** datetime */ + EXI_DATETIME_DATETIME, + /** gMonth */ + EXI_DATETIME_GMONTH, + /** gMonthDay */ + EXI_DATETIME_GMONTHDAY, + /** gDay */ + EXI_DATETIME_GDAY, + /** time */ + EXI_DATETIME_TIME +} exi_datetime_type_t; + + +/** \brief String value type */ +typedef enum { + /** value miss */ + EXI_STRING_VALUE_MISS, + /** value local-hit */ + EXI_STRING_VALUE_LOCAL_HIT, + /** value global-hit */ + EXI_STRING_VALUE_GLOBAL_HIT +} exi_string_value_type_t; + + +/** \brief Universal Character Set (UCS) strings */ +typedef struct { + /** UCS size */ + uint16_t size; + /** UCS character container */ + uint32_t* codepoints; + /** UCS current length == number of code-points, (len <= size) */ + uint16_t len; +} exi_string_ucs_t; + + +/** \brief String value */ +typedef struct { + /** value type (e.g., miss, local-hit, global-hit) */ + exi_string_value_type_t type; + /** miss entry */ + exi_string_ucs_t miss; + /** (local) hit entry */ + uint32_t localID; + /** (global) hit entry */ + uint32_t globalID; +} exi_string_value_t; + + +/** \brief Restricted Characeter Set */ +typedef struct { + /** size */ + uint16_t size; + /** rcs codepoints */ + uint32_t* codepoints; + /** character coding length (less than 256 characters) */ + uint8_t codingLength; +} exi_rcs_t; + + +/** \brief Byte value container */ +typedef struct { + /** bytes array size */ + uint16_t size; + /** bytes array data container */ + uint8_t* data; + /** bytes array length (len <= size) */ + uint16_t len; +} exi_bytes_t; + + +/** \brief Integer value container */ +typedef struct { + /** type */ + exi_integer_type_t type; + union { + /* (signed) values */ + /** (signed) int 8 bits */ + int8_t int8; + /** (signed) int 16 bits */ + int16_t int16; + /** (signed) int 32 bits */ + int32_t int32; + /** (signed) int 64 bits */ + int64_t int64; + /* unsigned values */ + /** unsigned int 8 bits */ + uint8_t uint8; + /** unsigned int 16 bits */ + uint16_t uint16; + /** unsigned int 32 bits */ + uint32_t uint32; + /** unsigned int 64 bits */ + uint64_t uint64; + } val; +} exi_integer_t; + + +/** \brief Float value container */ +typedef struct { + /** range of the mantissa is -(2^63) to 2^63-1 */ + int64_t mantissa; + /** range of the exponent is - (2^14-1) to 2^14-1 */ + int16_t exponent; /* base-10 */ +} exi_float_me_t; + + +/** \brief Decimal value container */ +typedef struct { + /** a sign value */ + int negative; + /** represents the integral portion of the Decimal */ + exi_integer_t integral; + /** represents the fractional portion of the Decimal with the digits in reverse order to preserve leading zeros */ + exi_integer_t reverseFraction; +} exi_decimal_t; + + +/** \brief Datetime value container */ +typedef struct { + /** datetime type */ + exi_datetime_type_t type; + /** Datetime value for year */ + int32_t year; + /** Datetime value for monthDay */ + uint32_t monthDay; + /** Datetime value for time */ + uint32_t time; + /** Datetime value for presenceFractionalSecs */ + int presenceFractionalSecs; + /** Datetime value for fractionalSecs */ + uint32_t fractionalSecs; + /** Datetime value for presenceTimezone */ + int presenceTimezone; + /** Datetime value for timezone */ + uint32_t timezone; +} exi_datetime_t; + + +/** \brief List value container */ +typedef struct { + /** list item type */ + exi_datatype_t type; + /** number of items */ + uint16_t len; + /* Special datatype: integer */ + /* exi_integer_type_t intType;*/ + /** Special datatype: datetime */ + exi_datetime_type_t datetimeType; +} exi_list_t; + + +/** \brief Efficient qname */ +typedef struct { + /** namespace URI ID*/ + uint16_t namespaceURI; + /** local name ID*/ + uint16_t localPart; +} exi_eqname_t; + + +/** \brief Name entry type */ +typedef enum { + /** As known IDs */ + EXI_NAME_ENTRY_TYPE_ID, + /** As String */ + EXI_NAME_ENTRY_TYPE_STRING_AND_ID +} exi_name_entry_type_t; + + +/** \brief Name entry */ +typedef struct { + /** type */ + exi_name_entry_type_t type; + /** entry ID */ + uint16_t id; + /** entry string */ + exi_string_ucs_t str; +} exi_name_entry_t; + + +/** \brief Qualified name */ +typedef struct { + /** Uri */ + exi_name_entry_t uri; + /** LocalName */ + exi_name_entry_t localName; +} exi_qname_t; + + +/*TODO Doxygen Documentation */ + + + + + + +/* ==================================== */ +/* URI and LocalName Entries */ +typedef struct exiNameTablePrepopulated { + /* number of namespaces AND length name-partitions array */ + uint16_t len; + /* number of localName entries divided by URI */ + uint16_t * localNames; +} exi_name_table_prepopulated_t; + +#define EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES 25 + +typedef enum { + EXI_NAME_PARTITION_URI, EXI_NAME_PARTITION_LOCALNAME +} exi_name_partition_type_t; + +typedef struct { + char* uri; + uint16_t uriID; +} exi_uri_partition_t; + +typedef struct { + char* localName; + uint16_t localNameID; + uint16_t uriID; +} exi_localname_partition_t; + +typedef struct { + exi_name_partition_type_t namePartitionType; + struct { + exi_uri_partition_t uriPartition; + exi_localname_partition_t localNamePartition; + } entry; +} exi_name_partition_t; + +typedef struct exiNameTableRuntime { + /* maximum number of characters in the name partitions entries PLUS null terminators */ + /* char characters[EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_CHARACTERS + EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES]; */ + /* uint16_t numberOfUsedCharacters; *//* initially zero <= EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_CHARACTERS */ + /* maximum number of name partitions entries. Name partitions entries consist in all uri, and local-name partition entries */ + exi_name_partition_t + namePartitionsEntries[EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES]; + /* uint16_t numberOfUsedNamePartitions; *//* initially zero */ + /* added entries */ + uint16_t addedUriEntries; /* initially zero */ + uint16_t addedLocalNameEntries; /* initially zero */ +} exi_name_table_runtime_t; + + +/* StartTagContent grammar initially empty */ +/* ElementContent grammar has EE per default */ +typedef struct { + uint16_t qnameID; + uint16_t numberOfProductions; + int hasXsiType; /* StartTagContent only */ + int hasEE; /* ElementContentper default TRUE */ +} 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; + +typedef struct { + /** number of global strings */ + uint16_t numberOfGlobalStrings; + /** size of local-names container */ + uint16_t sizeLocalStrings; + /** number of local strings container */ + uint16_t* numberOfLocalStrings; + /** string values */ + exi_value_string_table_t* valueStringTable; +} exi_value_table_t; + +typedef struct { + /** stack of grammar states */ + int16_t grammarStack[EXI_ELEMENT_STACK_SIZE]; + /** stack of grammar elements / qnameIDs */ + uint16_t elementStack[EXI_ELEMENT_STACK_SIZE]; + /** stack index for both stacks */ + uint16_t stackIndex; + + /** event-code */ + uint32_t eventCode; + + /** name table entries, pre-populated */ + exi_name_table_prepopulated_t nameTablePrepopulated; + /** name table entries, at runtime */ + exi_name_table_runtime_t nameTableRuntime; + + /** next qname ID */ + uint16_t nextQNameID; + + /** string table entries */ + exi_value_table_t stringTable; + + /** runtime built-in element grammars - numbers */ + uint16_t numberOfRuntimeGrammars; + /** runtime built-in element grammars */ + exi_runtime_element_t runtimeGrammars[MAX_NUMBER_OF_RUNTIME_ELEMENTS * 2]; +} exi_state_t; + +typedef struct { + /* type of value */ + exi_datatype_t type; + + /* base types */ + int boolean; + uint32_t enumeration; + + /* complex types: Integers, Bytes, Strings and Lists are not native types anymore */ + exi_integer_t integer; + exi_bytes_t binary; + exi_string_value_t str; + exi_float_me_t float_me; + exi_decimal_t decimal; + exi_datetime_t datetime; + exi_list_t list; + exi_eqname_t eqname; +} exi_value_t; + + + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/EncoderChannel.h b/src/codec/EncoderChannel.h new file mode 100644 index 0000000..f7e0dac --- /dev/null +++ b/src/codec/EncoderChannel.h @@ -0,0 +1,323 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + +/** + * \file EncoderChannel.h + * \brief EXI Encoder Channel + * + */ + +#ifndef ENCODER_CHANNEL_H +#define ENCODER_CHANNEL_H + +/** + * \brief Encode byte value + * + * \param stream Output Stream + * \param b byte + * \return Error-Code <> 0 + * + */ +int encode(bitstream_t* stream, uint8_t b); + + +/** + * \brief Encode a single boolean value + * + * A false value is encoded as 0 and true value is encode as 1. + * + * \param stream Output Stream + * \param b boolean + * \return Error-Code <> 0 + * + */ +int encodeBoolean(bitstream_t* stream, int b); + + +/** + * \brief Encode n-bit unsigned integer + * + * The n least significant bits of parameter b starting with the + * most significant, i.e. from left to right. + * + * \param stream Output Stream + * \param nbits number of bits + * \param val value + * \return Error-Code <> 0 + * + */ +int encodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t val); + + +/** + * \brief Encode unsigned integer + * + * Encode an arbitrary precision non negative integer using + * a sequence of octets. The most significant bit of the last + * octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Output Stream + * \param iv Unsigned integer value + * \return Error-Code <> 0 + * + */ +int encodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv); + + +/** + * \brief Encode unsigned integer + * + * Encode an arbitrary precision non negative integer using + * a sequence of octets. The most significant bit of the last + * octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Output Stream + * \param n Unsigned integer value 32 bits + * \return Error-Code <> 0 + * + */ +int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n); + + +/** + * \brief Encode unsigned integer + * + * Encode an arbitrary precision non negative integer using + * a sequence of octets. The most significant bit of the last + * octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Output Stream + * \param n Unsigned integer value 64 bits + * \return Error-Code <> 0 + * + */ +int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n); + + +/** + * \brief Encode integer + * + * Encode an arbitrary precision integer using a sign boolean + * followed by a sequence of octets. The most significant bit + * of the last octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Output Stream + * \param iv Integer value + * \return Error-Code <> 0 + * + */ +int encodeInteger(bitstream_t* stream, exi_integer_t* iv); + + +/** + * \brief Encode integer + * + * Encode an arbitrary precision integer using a sign boolean + * followed by a sequence of octets. The most significant bit + * of the last octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Output Stream + * \param n Integer value 32 bits + * \return Error-Code <> 0 + * + */ +int encodeInteger32(bitstream_t* stream, int32_t n); + + +/** + * \brief Encode integer + * + * Encode an arbitrary precision integer using a sign boolean + * followed by a sequence of octets. The most significant bit + * of the last octet is set to zero to indicate sequence termination. + * Only seven bits per octet are used to store the integer's value. + * + * \param stream Output Stream + * \param n Integer value 64 bits + * \return Error-Code <> 0 + * + */ +int encodeInteger64(bitstream_t* stream, int64_t n); + + +/** + * \brief Encode float + * + * Encode a Float datatype as two consecutive Integers. The first + * Integer represents the mantissa of the floating point number + * and the second Integer represents the base-10 exponent of the + * floating point number. + * + * \param stream Output Stream + * \param f Float value + * \return Error-Code <> 0 + * + */ +int encodeFloat(bitstream_t* stream, exi_float_me_t* f); + + +/** + * \brief Encode decimal + * + * Encode a decimal represented as a Boolean sign followed by two + * Unsigned Integers. A sign value of zero (0) is used to represent + * positive Decimal values and a sign value of one (1) is used to + * represent negative Decimal values The first Integer represents + * the integral portion of the Decimal value. The second positive + * integer represents the fractional portion of the decimal with + * the digits in reverse order to preserve leading zeros. + * + * \param stream Output Stream + * \param d Decimal value + * \return Error-Code <> 0 + * + */ +int encodeDecimal(bitstream_t* stream, exi_decimal_t* d); + + +/** + * \brief Encode string + * + * Encode a length prefixed sequence of characters. + * + * \param stream Output Stream + * \param string String + * \return Error-Code <> 0 + * + */ +int encodeString(bitstream_t* stream, exi_string_ucs_t* string); + + +/** + * \brief Encode string value + * + * Encode a length prefixed sequence of characters + * in the sense of string tables + * + * \param stream Output Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \param string String value + * \return Error-Code <> 0 + * + */ +int encodeStringValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, + exi_string_value_t* string); + + +/** + * \brief Encode restricted character set value + * + * Encode a length prefixed sequence of characters + * in the sense of string tables + * + * \param stream Output Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \param rcs Restricted character set + * \param string String value + * \return Error-Code <> 0 + * + */ +int encodeRCSStringValue(bitstream_t* stream, exi_state_t* state, + uint16_t qnameID, exi_rcs_t* rcs, exi_string_value_t* string); + + +/** + * \brief Encode characters + * + * Encode a sequence of characters according to a given length. + * Each character is represented by its UCS [ISO/IEC 10646] + * code point encoded as an Unsigned Integer. + * + * \param stream Output Stream + * \param chars Characters + * \param len Numbr of characters + * \return Error-Code <> 0 + * + */ +int encodeUCSCharacters(bitstream_t* stream, uint32_t* chars, uint16_t len); + + +/** + * \brief Encode binary + * + * Encode a binary value as a length-prefixed sequence of octets. + * + * \param stream Output Stream + * \param bytes Byte values + * \return Error-Code <> 0 + * + */ +int encodeBinary(bitstream_t* stream, exi_bytes_t* bytes); + + +/** + * \brief Encode datetime + * + * Encode a datetime representation which is a sequence of values + * representing the individual components of the Date-Time. + * + * \param stream Output Stream + * \param datetime Datetime values + * \return Error-Code <> 0 + * + */ +int encodeDateTime(bitstream_t* stream, exi_datetime_t* datetime); + + +/** + * \brief Flush underlying bit output stream + * + * \param stream Output Stream + * \return Error-Code <> 0 + * + */ +int encodeFinish(bitstream_t* stream); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/ErrorCodes.h b/src/codec/ErrorCodes.h new file mode 100644 index 0000000..77c932a --- /dev/null +++ b/src/codec/ErrorCodes.h @@ -0,0 +1,116 @@ +/* + * 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 . + */ +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file ErrorCodes.h + * \brief Error Codes descriptions + * + */ + +#ifndef EXI_ERROR_CODES_H +#define EXI_ERROR_CODES_H + + +#define EXI_ERROR_INPUT_STREAM_EOF -10 +#define EXI_ERROR_OUTPUT_STREAM_EOF -11 +#define EXI_ERROR_INPUT_FILE_HANDLE -12 +#define EXI_ERROR_OUTPUT_FILE -13 + +#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_BYTE_BUFFER -103 +#define EXI_ERROR_OUT_OF_GRAMMAR_STACK -104 +#define EXI_ERROR_OUT_OF_RUNTIME_GRAMMAR_STACK -105 +#define EXI_ERROR_OUT_OF_QNAMES -106 + +#define EXI_ERROR_UNKOWN_EVENT -109 +#define EXI_ERROR_UNKOWN_EVENT_CODE -110 +#define EXI_ERROR_UNEXPECTED_EVENT_LEVEL1 -111 +#define EXI_ERROR_UNEXPECTED_EVENT_LEVEL2 -112 + +#define EXI_ERROR_UNEXPECTED_START_DOCUMENT -113 +#define EXI_ERROR_UNEXPECTED_END_DOCUMENT -114 +#define EXI_ERROR_UNEXPECTED_START_ELEMENT -115 +#define EXI_ERROR_UNEXPECTED_START_ELEMENT_NS -116 +#define EXI_ERROR_UNEXPECTED_START_ELEMENT_GENERIC -117 +#define EXI_ERROR_UNEXPECTED_START_ELEMENT_GENERIC_UNDECLARED -118 +#define EXI_ERROR_UNEXPECTED_END_ELEMENT -119 +#define EXI_ERROR_UNEXPECTED_CHARACTERS -120 +#define EXI_ERROR_UNEXPECTED_ATTRIBUTE -121 +#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_NS -122 +#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_GENERIC -123 +#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_GENERIC_UNDECLARED -124 +#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_TYPE -125 +#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_NIL -126 +#define EXI_ERROR_UNEXPECTED_GRAMMAR_ID -127 +#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_MOVE_TO_CONTENT_RULE -128 + +#define EXI_UNSUPPORTED_NBIT_INTEGER_LENGTH -132 +#define EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS -133 +#define EXI_UNSUPPORTED_INTEGER_VALUE -134 +#define EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE -135 +#define EXI_UNSUPPORTED_LIST_VALUE_TYPE -136 +#define EXI_UNSUPPORTED_HEADER_COOKIE -137 +#define EXI_UNSUPPORTED_HEADER_OPTIONS -138 + +#define EXI_UNSUPPORTED_GLOBAL_ATTRIBUTE_VALUE_TYPE -139 +#define EXI_UNSUPPORTED_STRING_VALUE_TYPE -140 +#define EXI_UNSUPPORTED_INTEGER_VALUE_TYPE -141 +#define EXI_UNSUPPORTED_DATETIME_TYPE -142 + +#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 + + +#define EXI_ERROR_CONVERSION_NO_ASCII_CHARACTERS -300 +#define EXI_ERROR_CONVERSION_TYPE_TO_STRING -301 + + +#define EXI_DEVIANT_SUPPORT_NOT_DEPLOYED -500 + + +#endif /* EXI_ERROR_CODES_H */ + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/MethodsBag.c b/src/codec/MethodsBag.c new file mode 100644 index 0000000..7d030be --- /dev/null +++ b/src/codec/MethodsBag.c @@ -0,0 +1,118 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifndef METHODS_BAG_C +#define METHODS_BAG_C + +#include "MethodsBag.h" +#include "ErrorCodes.h" + +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) { + /* 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]; + } else if (characteristics < 33) { + /* 17 .. 32 */ + *codingLength = 5; + } else if (characteristics < 65) { + /* 33 .. 64 */ + *codingLength = 6; + } else if (characteristics < 129) { + /* 65 .. 128 */ + *codingLength = 7; + } else if (characteristics < 257) { + /* 129 .. 256 */ + *codingLength = 8; + } else if (characteristics < 513) { + /* 257 .. 512 */ + *codingLength = 9; + } else if (characteristics < 1025) { + /* 513 .. 1024 */ + *codingLength = 10; + } else if (characteristics < 2049) { + /* 1025 .. 2048 */ + *codingLength = 11; + } else if (characteristics < 4097) { + /* 2049 .. 4096 */ + *codingLength = 12; + } else if (characteristics < 8193) { + /* 4097 .. 8192 */ + *codingLength = 13; + } else if (characteristics < 16385) { + /* 8193 .. 16384 */ + *codingLength = 14; + } else if (characteristics < 32769) { + /* 16385 .. 32768 */ + *codingLength = 15; + } else { + /* 32769 .. 65536 */ + *codingLength = 16; + } + return errn; +} + + +uint8_t numberOf7BitBlocksToRepresent(uint32_t n) { + /* assert (n >= 0); */ + + /* 7 bits */ + if (n < 128) { + return 1; + } + /* 14 bits */ + else if (n < 16384) { + return 2; + } + /* 21 bits */ + else if (n < 2097152) { + return 3; + } + /* 28 bits */ + else if (n < 268435456) { + return 4; + } + /* 35 bits */ + else { + /* int, 32 bits */ + return 5; + } +} + + + +#endif + diff --git a/src/codec/MethodsBag.h b/src/codec/MethodsBag.h new file mode 100644 index 0000000..2b8999b --- /dev/null +++ b/src/codec/MethodsBag.h @@ -0,0 +1,70 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifndef METHODS_BAG_H +#define METHODS_BAG_H + +/** +* \file MethodsBag.h +* \brief Method bag for bit and octet functions +* +*/ + + +#include + + +/** + * \brief Returns the number of bits to identify the characteristics. + * + * \param characteristics number of characteristics + * \param codingLength number of bits + * \return Error-Code <> 0 + * + */ +int exiGetCodingLength(uint16_t characteristics, uint16_t* codingLength); + + +/** + * \brief Returns the least number of 7 bit-blocks that is needed to represent the passed integer value + * + * Note: Returns 1 if passed parameter is 0. + * + * \param n integer value + * \return Error-Code <> 0 + * + */ +uint8_t numberOf7BitBlocksToRepresent(uint32_t n); + + +#endif + diff --git a/src/codec/StringNameTable.c b/src/codec/StringNameTable.c new file mode 100644 index 0000000..839977e --- /dev/null +++ b/src/codec/StringNameTable.c @@ -0,0 +1,118 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifndef STRING_NAME_TABLE_C +#define STRING_NAME_TABLE_C + +#include + +#include "StringNameTable.h" +#include "v2gNameTableEntries.h" +#include "ErrorCodes.h" + + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'runtimeTable' */ +#endif /* __GNUC__ */ +int exiGetUriSize(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t* uriLength) { + *uriLength = prepopulatedTable->len; + return 0; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'runtimeTable' */ +#endif /* __GNUC__ */ + + +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]); + } else { + /* range check */ + if (uriID >= ( prepopulatedTable->len + runtimeTable->addedUriEntries )) { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + } + /* 2. runtime entries */ + if (errn == 0 && runtimeTable->addedLocalNameEntries > 0 ) { + int i; + for(i=0; i<(runtimeTable->addedUriEntries+runtimeTable->addedLocalNameEntries); i++) { + if ( runtimeTable->namePartitionsEntries[i].namePartitionType == EXI_NAME_PARTITION_LOCALNAME && + runtimeTable->namePartitionsEntries[i].entry.localNamePartition.uriID == uriID ) { + (*localNameLength)++; + } + } + } + + return errn; +} + + +/* inline */ +/* +static int _max(int a, int b) { + return (a > b) ? a : b; +} +*/ + +int exiInitNameTableRuntime(exi_name_table_runtime_t* runtimeTable) { + /*runtimeTable->numberOfUsedCharacters = 0;*/ + runtimeTable->addedLocalNameEntries = 0; + runtimeTable->addedUriEntries = 0; + return 0; +} + +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; +} + +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) { + runtimeTable->namePartitionsEntries[index].namePartitionType = EXI_NAME_PARTITION_LOCALNAME; + runtimeTable->namePartitionsEntries[index].entry.localNamePartition.localNameID = *localNameID; + runtimeTable->namePartitionsEntries[index].entry.localNamePartition.uriID = uriID; + runtimeTable->addedLocalNameEntries++; + } + return errn; +} + +#endif + diff --git a/src/codec/StringNameTable.h b/src/codec/StringNameTable.h new file mode 100644 index 0000000..e2e05e1 --- /dev/null +++ b/src/codec/StringNameTable.h @@ -0,0 +1,119 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file StringNameTable.h + * \brief String table count implementation + * + */ + +#ifndef STRING_NAME_TABLE_H +#define STRING_NAME_TABLE_H + +#include "EXITypes.h" + + +/** + * \brief Init name table + * + * Inits counter et cetera + * + * \param runtimeTable Runtime Table + * \return Error-Code <> 0 + * + */ +int exiInitNameTableRuntime(exi_name_table_runtime_t* runtimeTable); + + +/** + * \brief Get Uri Size + * + * \param prepopulatedTable Pre-Populated Table + * \param runtimeTable Runtime Table + * \param uriLength Uri Size (out) + * \return Error-Code <> 0 + * + */ +int exiGetUriSize(exi_name_table_prepopulated_t* prepopulatedTable, + exi_name_table_runtime_t* runtimeTable, uint16_t* uriLength); + + +/** + * \brief Get LocalName Size + * + * \param prepopulatedTable Pre-Populated Table + * \param runtimeTable Runtime Table + * \param uriID Uri ID for local-name + * \param localNameLength Local-Name Size (out) + * \return Error-Code <> 0 + * + */ +int exiGetLocalNameSize(exi_name_table_prepopulated_t* prepopulatedTable, + exi_name_table_runtime_t* runtimeTable, uint16_t uriID, + uint16_t* localNameLength); + + +/** + * \brief Add runtime URI entry + * + * \param prepopulatedTable Pre-Populated Table + * \param runtimeTable Runtime Table + * \return Error-Code <> 0 + * + */ +int exiAddUri(exi_name_table_prepopulated_t* prepopulatedTable, + exi_name_table_runtime_t* runtimeTable); + + +/** + * \brief Add runtime local-name entry + * + * \param prepopulatedTable Pre-Populated Table + * \param runtimeTable Runtime Table + * \param uriID Uri ID for local-name + * \param localNameID LocalName ID (out) + * \return Error-Code <> 0 + * + */ +int exiAddLocalName(exi_name_table_prepopulated_t* prepopulatedTable, + exi_name_table_runtime_t* runtimeTable, uint16_t uriID, uint16_t* localNameID); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/StringValueTable.c b/src/codec/StringValueTable.c new file mode 100644 index 0000000..9d361d2 --- /dev/null +++ b/src/codec/StringValueTable.c @@ -0,0 +1,195 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifndef STRING_VALUE_TABLE_C +#define STRING_VALUE_TABLE_C + +#include + +#include "StringValueTable.h" + +#include "EXIConfig.h" +#include "ErrorCodes.h" +#include "EXIOptions.h" + +#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION +#include "DynamicMemory.h" +#include +#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; ivalueStringTable->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; ivalueStringTable->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; ivalueStringTable->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 + diff --git a/src/codec/StringValueTable.h b/src/codec/StringValueTable.h new file mode 100644 index 0000000..aa08253 --- /dev/null +++ b/src/codec/StringValueTable.h @@ -0,0 +1,120 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#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 + diff --git a/src/codec/UCSString.c b/src/codec/UCSString.c new file mode 100644 index 0000000..475436e --- /dev/null +++ b/src/codec/UCSString.c @@ -0,0 +1,95 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include + +#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) { + for(i=0; ilen; i++) { + s->codepoints[i] = (uint32_t)chars[i]; + } + } + + 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; ilen && errn == 0; i++) { + if( string->codepoints[i] < 128 ) { + outASCII[i] = (char)string->codepoints[i]; + } else { + errn = -1; + } + } + outASCII[string->len] = '\0'; + + return errn; +} + +#endif + diff --git a/src/codec/UCSString.h b/src/codec/UCSString.h new file mode 100644 index 0000000..2054419 --- /dev/null +++ b/src/codec/UCSString.h @@ -0,0 +1,78 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + +/** + * \file UCSString.h + * \brief UCS String utilities + * + */ + +#ifndef UCS_STRING_H +#define UCS_STRING_H + +/** + * \brief Converts characters to USC string + * + * \param chars Characters + * \param s UCS String + * \return Error-Code <> 0 + * + */ +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 + * \param outASCII ASCII Characters (out) + * \return Error-Code <> 0 + * + */ +int toASCIIString(exi_string_ucs_t* string, char* outASCII); + +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/appHandCodec/appHandEXICoder.c b/src/codec/appHandCodec/appHandEXICoder.c new file mode 100644 index 0000000..3b64088 --- /dev/null +++ b/src/codec/appHandCodec/appHandEXICoder.c @@ -0,0 +1,722 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_appHand_CODER_C +#define EXI_appHand_CODER_C + +#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 errn = 0; +#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 +#if EXI_OPTION_VALUE_MAX_LENGTH != 0 + /* increment global string count */ +#if EXI_OPTION_VALUE_PARTITION_CAPACITY < 0 + state->stringTable.numberOfGlobalStrings++; +#else /* EXI_OPTION_VALUE_PARTITION_CAPACITY < 0 */ + if (state->stringTable.numberOfGlobalStrings < EXI_OPTION_VALUE_PARTITION_CAPACITY) { + state->stringTable.numberOfGlobalStrings++; + } +#endif /* EXI_OPTION_VALUE_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 */ + + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'qnameID' */ +#endif /* __GNUC__ */ + + +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; + } else { + errn = 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--; + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + return errn; +} + +int exi_appHand_HandleXsiNilTrue(exi_state_t* state) { + switch (state->grammarStack[state->stackIndex]) { + + } + + return EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_NIL; +} + +int exi_appHand_HandleXsiType(exi_state_t* state, exi_eqname_t* xsiType) { + switch(xsiType->namespaceURI) { + case 0: + switch(xsiType->localPart) { + } + break; + case 1: + switch(xsiType->localPart) { + } + break; + case 2: + switch(xsiType->localPart) { + } + break; + case 3: + switch(xsiType->localPart) { + case 0: + /* {3}0,ENTITIES */ + state->grammarStack[state->stackIndex] = 47; + break; + case 1: + /* {3}1,ENTITY */ + state->grammarStack[state->stackIndex] = 4; + break; + case 2: + /* {3}2,ID */ + state->grammarStack[state->stackIndex] = 4; + break; + case 3: + /* {3}3,IDREF */ + state->grammarStack[state->stackIndex] = 4; + break; + case 4: + /* {3}4,IDREFS */ + state->grammarStack[state->stackIndex] = 47; + break; + case 5: + /* {3}5,NCName */ + state->grammarStack[state->stackIndex] = 4; + break; + case 6: + /* {3}6,NMTOKEN */ + state->grammarStack[state->stackIndex] = 4; + break; + case 7: + /* {3}7,NMTOKENS */ + state->grammarStack[state->stackIndex] = 47; + break; + case 8: + /* {3}8,NOTATION */ + state->grammarStack[state->stackIndex] = 4; + break; + case 9: + /* {3}9,Name */ + state->grammarStack[state->stackIndex] = 4; + break; + case 10: + /* {3}10,QName */ + state->grammarStack[state->stackIndex] = 4; + break; + case 11: + /* {3}11,anySimpleType */ + state->grammarStack[state->stackIndex] = 4; + break; + case 12: + /* {3}12,anyType */ + state->grammarStack[state->stackIndex] = 49; + break; + case 13: + /* {3}13,anyURI */ + state->grammarStack[state->stackIndex] = 4; + break; + case 14: + /* {3}14,base64Binary */ + state->grammarStack[state->stackIndex] = 51; + break; + case 15: + /* {3}15,boolean */ + state->grammarStack[state->stackIndex] = 53; + break; + case 16: + /* {3}16,byte */ + state->grammarStack[state->stackIndex] = 55; + break; + case 17: + /* {3}17,date */ + state->grammarStack[state->stackIndex] = 57; + break; + case 18: + /* {3}18,dateTime */ + state->grammarStack[state->stackIndex] = 59; + break; + case 19: + /* {3}19,decimal */ + state->grammarStack[state->stackIndex] = 61; + break; + case 20: + /* {3}20,double */ + state->grammarStack[state->stackIndex] = 63; + break; + case 21: + /* {3}21,duration */ + state->grammarStack[state->stackIndex] = 4; + break; + case 22: + /* {3}22,float */ + state->grammarStack[state->stackIndex] = 63; + break; + case 23: + /* {3}23,gDay */ + state->grammarStack[state->stackIndex] = 65; + break; + case 24: + /* {3}24,gMonth */ + state->grammarStack[state->stackIndex] = 67; + break; + case 25: + /* {3}25,gMonthDay */ + state->grammarStack[state->stackIndex] = 69; + break; + case 26: + /* {3}26,gYear */ + state->grammarStack[state->stackIndex] = 71; + break; + case 27: + /* {3}27,gYearMonth */ + state->grammarStack[state->stackIndex] = 73; + break; + case 28: + /* {3}28,hexBinary */ + state->grammarStack[state->stackIndex] = 75; + break; + case 29: + /* {3}29,int */ + state->grammarStack[state->stackIndex] = 77; + break; + case 30: + /* {3}30,integer */ + state->grammarStack[state->stackIndex] = 77; + break; + case 31: + /* {3}31,language */ + state->grammarStack[state->stackIndex] = 4; + break; + case 32: + /* {3}32,long */ + state->grammarStack[state->stackIndex] = 77; + break; + case 33: + /* {3}33,negativeInteger */ + state->grammarStack[state->stackIndex] = 77; + break; + case 34: + /* {3}34,nonNegativeInteger */ + state->grammarStack[state->stackIndex] = 79; + break; + case 35: + /* {3}35,nonPositiveInteger */ + state->grammarStack[state->stackIndex] = 77; + break; + case 36: + /* {3}36,normalizedString */ + state->grammarStack[state->stackIndex] = 4; + break; + case 37: + /* {3}37,positiveInteger */ + state->grammarStack[state->stackIndex] = 79; + break; + case 38: + /* {3}38,short */ + state->grammarStack[state->stackIndex] = 77; + break; + case 39: + /* {3}39,string */ + state->grammarStack[state->stackIndex] = 4; + break; + case 40: + /* {3}40,time */ + state->grammarStack[state->stackIndex] = 80; + break; + case 41: + /* {3}41,token */ + state->grammarStack[state->stackIndex] = 4; + break; + case 42: + /* {3}42,unsignedByte */ + state->grammarStack[state->stackIndex] = 13; + break; + case 43: + /* {3}43,unsignedInt */ + state->grammarStack[state->stackIndex] = 79; + break; + case 44: + /* {3}44,unsignedLong */ + state->grammarStack[state->stackIndex] = 79; + break; + case 45: + /* {3}45,unsignedShort */ + state->grammarStack[state->stackIndex] = 79; + break; + } + break; + case 4: + switch(xsiType->localPart) { + case 0: + /* {4}0,AppProtocolType */ + state->grammarStack[state->stackIndex] = 3; + break; + case 1: + /* {4}1,idType */ + state->grammarStack[state->stackIndex] = 13; + break; + case 2: + /* {4}2,priorityType */ + state->grammarStack[state->stackIndex] = 16; + break; + case 3: + /* {4}3,protocolNameType */ + state->grammarStack[state->stackIndex] = 4; + break; + case 4: + /* {4}4,protocolNamespaceType */ + state->grammarStack[state->stackIndex] = 4; + break; + case 5: + /* {4}5,responseCodeType */ + state->grammarStack[state->stackIndex] = 41; + break; + } + break; + } + + + return 0; +} + + +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; + + /* schema-informed global element --> Stack ID */ + switch(qnameID) { + case 65: + errn = exi_appHand_PushStack(state, 2, 65); + break; + case 66: + errn = exi_appHand_PushStack(state, 40, 66); + break; + + default: + found = 0; + break; + } + + if (!found) { + /* retrieve existing grammar for qname if any available */ + for(i=0; inumberOfRuntimeGrammars && !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; + + /* push element stack */ + errn = exi_appHand_PushStack(state, (int16_t)((state->numberOfRuntimeGrammars+1) * (-1)), qnameID); + + state->numberOfRuntimeGrammars = (uint16_t)(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 errn = 0; + int16_t currentID = state->grammarStack[state->stackIndex]; + int16_t runtimeID; + + if (currentID < 0) { + runtimeID = (int16_t)((currentID+1)*(-1)); + + if (uriID == 2 && localID == 1 ) { + /* xsi:type: learned just once */ + if(!state->runtimeGrammars[runtimeID].hasXsiType) { + /* hasXsiType stores production position PLUS 1 (one) */ + state->runtimeGrammars[runtimeID].hasXsiType = ++state->runtimeGrammars[runtimeID].numberOfProductions; + } + } else { + /* increment production count */ + ++state->runtimeGrammars[runtimeID].numberOfProductions; + /* TODO store production information. Note: not necessary in restricted profile */ + } + } else { + /* schema-informed grammar do no evolve */ + } + + return errn; +} +#ifndef __GNUC__ +#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, ... + * 1) StartTagContent (e.g., -1, -3, -5, ...) + * 2) ElementContent (e.g., -2, -4, -6) + * + */ + +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: + /* 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: + /* 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: + /* 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] */ + case 5: + /* Element[END_ELEMENT] --> Element[END_ELEMENT] */ + case 6: + /* Element[] --> Element[] */ + case 7: + /* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */ + 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)] */ + 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)] */ + case 17: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 18: + /* Element[START_ELEMENT(ProtocolNamespace)] --> Element[START_ELEMENT(ProtocolNamespace)] */ + 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] */ + 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 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] */ + 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] */ + case 32: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + 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] */ + case 37: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 38: + /* Element[START_ELEMENT(AppProtocol)] --> Element[START_ELEMENT(AppProtocol)] */ + case 39: + /* DocEnd[END_DOCUMENT] --> DocEnd[END_DOCUMENT] */ + 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 52: + /* Element[CHARACTERS[BINARY_BASE64]] --> Element[CHARACTERS[BINARY_BASE64]] */ + case 54: + /* Element[CHARACTERS[BOOLEAN]] --> Element[CHARACTERS[BOOLEAN]] */ + case 56: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 58: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 60: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + 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: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 70: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 72: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 74: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 76: + /* Element[CHARACTERS[BINARY_HEX]] --> Element[CHARACTERS[BINARY_HEX]] */ + case 78: + /* Element[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */ + case 81: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + break; + case 51: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] --> Element[CHARACTERS[BINARY_BASE64]] */ + state->grammarStack[state->stackIndex] = 52; + break; + 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]] */ + case 79: + /* 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: + /* FirstStartTag[CHARACTERS[LIST]] --> Element[CHARACTERS[LIST]] */ + state->grammarStack[state->stackIndex] = 48; + break; + case 13: + /* 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: + /* 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; + case 55: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + state->grammarStack[state->stackIndex] = 56; + break; + case 69: + /* 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: + /* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + state->grammarStack[state->stackIndex] = 72; + break; + + 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; + } + } + + return errn; +} + + +#endif + diff --git a/src/codec/appHandCodec/appHandEXICoder.h b/src/codec/appHandCodec/appHandEXICoder.h new file mode 100644 index 0000000..9e67116 --- /dev/null +++ b/src/codec/appHandCodec/appHandEXICoder.h @@ -0,0 +1,74 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_appHand_CODER_H +#define EXI_appHand_CODER_H + +#include "EXITypes.h" + +#define DOCUMENT 0 +#define DOC_CONTENT 1 +#define DOC_END 39 + + +/* 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_PushStack(exi_state_t* state, int16_t newState, uint16_t qnameID); + +int exi_appHand_PopStack(exi_state_t* state); + +int exi_appHand_HandleXsiNilTrue(exi_state_t* state); + +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_IsStartContent(int16_t ruleID); + +int exi_appHand_MoveToElementContentRule(exi_state_t* state); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/appHandCodec/appHandEXIDecoder.c b/src/codec/appHandCodec/appHandEXIDecoder.c new file mode 100644 index 0000000..0f9fff9 --- /dev/null +++ b/src/codec/appHandCodec/appHandEXIDecoder.c @@ -0,0 +1,1746 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_appHand_DECODER_C +#define EXI_appHand_DECODER_C + + +#include "appHandEXIDecoder.h" + +#include "EXIOptions.h" +#include "EXITypes.h" +#include "BitInputStream.h" +#include "DecoderChannel.h" + +#include "StringNameTable.h" +#include "appHandNameTableEntries.h" +#include "MethodsBag.h" + +#include "appHandEXICoder.h" +#include "EXIHeaderDecoder.h" +#include "ErrorCodes.h" + +#include "appHandQNames.h" +#include "appHandQNameDefines.h" + + + +/* local variables */ +static uint32_t xsi; +static uint32_t bits; +static int errn; +static exi_event_t currEvent; + +#define URI_CODEPOINTS_SIZE 35 +#define LOCALNAME_CODEPOINTS_SIZE 25 + +uint32_t codepointsUri[URI_CODEPOINTS_SIZE]; +uint32_t codepointsLocalName[LOCALNAME_CODEPOINTS_SIZE]; + +static exi_qname_t _qname = { + {EXI_NAME_ENTRY_TYPE_ID, 0, {URI_CODEPOINTS_SIZE, codepointsUri, 0}}, + {EXI_NAME_ENTRY_TYPE_ID, 0, {LOCALNAME_CODEPOINTS_SIZE, codepointsLocalName, 0}} +}; + + +static int _decodeNBitIntegerValue(bitstream_t* stream, exi_integer_t* iv, uint16_t nbits, int32_t lowerBound) { + int errn; + uint32_t val; + int32_t val2; + + /* at most 8 bits */ + errn = decodeNBitUnsignedInteger(stream, nbits, &val); + if(errn == 0) { + val2 = (int32_t)val + lowerBound; + if(val2 < 0) { + /* negative */ + /* TODO map integer value more fine-grained */ + iv->type = EXI_INTEGER_32; + iv->val.int32 = (int32_t)val2; + } else { + /* positive */ + if (val2 < 0x100) { + /* 8 bit */ + iv->type = EXI_UNSIGNED_INTEGER_8; + iv->val.uint8 = (uint8_t)val2; + } else if (val2 < 0x10000) { + /* 16 bit */ + iv->type = EXI_UNSIGNED_INTEGER_16; + iv->val.uint16 = (uint16_t)val2; + } else { + iv->type = EXI_UNSIGNED_INTEGER_32; + iv->val.uint32 = (uint32_t)val2; + } + } + } + + return (errn); +} + + + +static int exiDecodeNext2Event(bitstream_t* stream, exi_state_t* state, + exi_event_t* nextEvent) { + + uint32_t eventCode2 = 0; + int16_t ruleID = state->grammarStack[state->stackIndex]; + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + + switch (ruleID) { + case 5: + /* Element[END_ELEMENT] */ + case 19: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 20: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 21: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 22: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 23: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 24: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 25: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 26: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 27: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 28: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 29: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 30: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 31: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 32: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 33: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 34: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 35: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 36: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 37: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 43: + /* Element[START_ELEMENT(SchemaID), END_ELEMENT] */ + case 50: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 49: + /* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_TYPE; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_NIL; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 3: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 0, &state->eventCode); + state->eventCode -= 1; + break; + case 4: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 5: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 7: + /* Element[CHARACTERS[STRING]] */ + case 8: + /* Element[START_ELEMENT(VersionNumberMajor)] */ + case 10: + /* Element[CHARACTERS[UNSIGNED_INTEGER]] */ + case 11: + /* Element[START_ELEMENT(VersionNumberMinor)] */ + case 12: + /* Element[START_ELEMENT(SchemaID)] */ + case 14: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 15: + /* Element[START_ELEMENT(Priority)] */ + case 17: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 18: + /* Element[START_ELEMENT(ProtocolNamespace)] */ + case 38: + /* Element[START_ELEMENT(AppProtocol)] */ + case 42: + /* Element[CHARACTERS[ENUMERATION]] */ + case 44: + /* Element[START_ELEMENT(ResponseCode)] */ + case 48: + /* Element[CHARACTERS[LIST]] */ + case 52: + /* Element[CHARACTERS[BINARY_BASE64]] */ + case 54: + /* Element[CHARACTERS[BOOLEAN]] */ + case 56: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 58: + /* Element[CHARACTERS[DATETIME]] */ + case 60: + /* Element[CHARACTERS[DATETIME]] */ + case 62: + /* Element[CHARACTERS[DECIMAL]] */ + case 64: + /* Element[CHARACTERS[FLOAT]] */ + case 66: + /* Element[CHARACTERS[DATETIME]] */ + case 68: + /* Element[CHARACTERS[DATETIME]] */ + case 70: + /* Element[CHARACTERS[DATETIME]] */ + case 72: + /* Element[CHARACTERS[DATETIME]] */ + case 74: + /* Element[CHARACTERS[DATETIME]] */ + case 76: + /* Element[CHARACTERS[BINARY_HEX]] */ + case 78: + /* Element[CHARACTERS[INTEGER]] */ + case 81: + /* Element[CHARACTERS[DATETIME]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 2: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 2: + /* FirstStartTag[START_ELEMENT(AppProtocol)] */ + case 3: + /* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */ + case 4: + /* FirstStartTag[CHARACTERS[STRING]] */ + case 9: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + case 13: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 16: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 40: + /* FirstStartTag[START_ELEMENT(ResponseCode)] */ + case 41: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 47: + /* FirstStartTag[CHARACTERS[LIST]] */ + case 51: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + case 53: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + case 55: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 57: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 59: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 61: + /* FirstStartTag[CHARACTERS[DECIMAL]] */ + case 63: + /* FirstStartTag[CHARACTERS[FLOAT]] */ + case 65: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 67: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 69: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 71: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 73: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 75: + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + case 77: + /* FirstStartTag[CHARACTERS[INTEGER]] */ + case 79: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + case 80: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_TYPE; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_NIL; + break; + case 3: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 4: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 0, &state->eventCode); + state->eventCode -= 1; + break; + case 5: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 6: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + + default: + if (ruleID < 0) { + /* built-in element grammar */ + if ( exi_appHand_IsStartContent(ruleID) ) { + /* TODO generate 2nd level productions */ + + /* StartTagContent grammar */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode2); + if(errn == 0) { + switch(eventCode2) { + case 0: + /* 0: EE */ + *nextEvent = EXI_EVENT_END_ELEMENT_UNDECLARED; + break; + case 1: + /* 1: AT(*) */ + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 2: + /* 2: SE(*) */ + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 3: + /* 3: CH */ + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = (EXI_ERROR_UNEXPECTED_EVENT_LEVEL2); + break; + } + } + } else { + /* TODO generate 2nd level productions */ + + /* ElementContent grammar */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode2); + if(errn == 0) { + switch(eventCode2) { + case 0: + /* 0: SE(*) */ + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 1: + /* 1: CH */ + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = (EXI_ERROR_UNEXPECTED_EVENT_LEVEL2); + break; + } + } + } + } else { + *nextEvent = EXI_EVENT_ERROR; + errn = (EXI_ERROR_UNEXPECTED_EVENT_LEVEL2); + } + break; + } + + return (errn); + +} + + + +static int _exiDecodeNamespaceUri(bitstream_t* stream, exi_state_t* state, + exi_name_entry_t* uri) { + uint16_t uriSize, uriCodingLength; + uint32_t uriID; + + errn = exiGetUriSize(&state->nameTablePrepopulated, &state->nameTableRuntime, &uriSize); + if (errn == 0) { + /* URI Entries + 1 */ + errn = exiGetCodingLength((uint16_t)(uriSize + 1u), &uriCodingLength); + if (errn == 0) { + errn = decodeNBitUnsignedInteger(stream, uriCodingLength, &uriID); + if (errn == 0) { + if (uriID == 0) { + /* uri string value was not found */ + /* ==> zero (0) as an n-nit unsigned integer */ + /* followed by uri encoded as string */ + + uri->type = EXI_NAME_ENTRY_TYPE_STRING_AND_ID; + errn = decodeString(stream, &uri->str); + if (errn) { + return (errn); + } + /* after encoding string value is added to table */ + errn = exiAddUri(&state->nameTablePrepopulated, &state->nameTableRuntime); /*, namespaceURI->chars); */ + if (errn) { + return (errn); + } + uri->id = uriSize; + + } else { + /* uri string value found */ + /* ==> value(i+1) is encoded as n-bit unsigned integer */ + uri->type = EXI_NAME_ENTRY_TYPE_ID; + uri->id = (uint16_t)(uriID - 1); + } + } + } + } + + return (errn); +} + +static int _exiDecodeLocalName(bitstream_t* stream, exi_state_t* state, + uint16_t uriID, exi_name_entry_t* localName) { + + uint32_t localNameID; + uint16_t slen; + uint16_t localNameSize; + uint16_t localNameCodingLength; + + errn = decodeUnsignedInteger16(stream, &slen); + if (errn == 0) { + if (slen > 0) { + /* string value was not found in local partition */ + /* ==> string literal is encoded as a String */ + /* with the length of the string incremented by one */ + + localName->type = EXI_NAME_ENTRY_TYPE_STRING_AND_ID; + if (slen-- >= (localName->str.size) ) { + errn = (EXI_ERROR_OUT_OF_BOUNDS); + } else { + localName->str.len = slen; + errn = decodeCharacters(stream, slen, localName->str.codepoints); + if (errn == 0) { + /* After encoding the string value, it is added to the string table */ + /* partition and assigned the next available compact identifier */ + errn = exiAddLocalName(&state->nameTablePrepopulated, &state->nameTableRuntime, uriID, &localName->id); + } + } + + } else { + /* string value found in local partition */ + /* ==> string value is represented as zero (0) encoded as an */ + /* Unsigned Integer */ + /* followed by an the compact identifier of the string value as an */ + /* n-bit unsigned integer */ + /* n is log2 m and m is the number of entries in the string table */ + /* partition */ + localName->type = EXI_NAME_ENTRY_TYPE_ID; + errn = exiGetLocalNameSize(&state->nameTablePrepopulated, &state->nameTableRuntime, uriID, &localNameSize); /* uriID, &localNameSize); */ + if (errn == 0) { + errn = exiGetCodingLength(localNameSize, &localNameCodingLength); + if (errn == 0) { + errn = decodeNBitUnsignedInteger(stream, localNameCodingLength, &localNameID); /* localNameID);*/ + localName->id = (uint16_t)(localNameID); + } + } + } + } + + return (errn); +} + +static int _exiDecodeQName(bitstream_t* stream, exi_state_t* state, + uint16_t* qnameID, exi_qname_t* qname) { + + /* uri */ + errn = _exiDecodeNamespaceUri(stream, state, &qname->uri); + if (errn == 0) { + /* localName */ + errn = _exiDecodeLocalName(stream, state, qname->uri.id, &qname->localName); + if (errn == 0) { + if (_qname.localName.type == EXI_NAME_ENTRY_TYPE_STRING_AND_ID) { + errn = exiappHandAddEQName(state, qnameID, qname->uri.id, qname->localName.id); + } else { + /* IDs known --> retrieve qnameID */ + errn = exiappHandGetQNameID(state, qname->uri.id, qname->localName.id, qnameID); + } + } + } + + return (errn); +} + + +static int _exiDecodeStartElement(exi_state_t* state, uint16_t qnameID, + uint16_t stackId, int16_t newState) { + + /* move on */ + state->grammarStack[state->stackIndex] = (int16_t)stackId; + /* push element on stack */ + return (exi_appHand_PushStack(state, newState, qnameID)); +} + + +int exiappHandGetLastQName(exi_qname_t** qname) { + *qname = &_qname; + return (0); +} + + +int exiappHandDecodeListValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, exi_value_t* val, exi_list_t lt) { + uint32_t uint32; + + val->type = lt.type; + + switch(lt.type) { + case EXI_DATATYPE_BINARY_BASE64: + case EXI_DATATYPE_BINARY_HEX: + errn = decodeBinary(stream, &val->binary); + break; + case EXI_DATATYPE_BOOLEAN: + errn = decodeBoolean(stream, &val->boolean); + break; + case EXI_DATATYPE_BOOLEAN_FACET: + errn = decodeNBitUnsignedInteger(stream, 2, &uint32); + val->boolean = uint32 > 1; + break; + case EXI_DATATYPE_DECIMAL: + errn = decodeDecimal(stream, &val->decimal); + break; + case EXI_DATATYPE_FLOAT: + errn = decodeFloat(stream, &val->float_me); + break; + case EXI_DATATYPE_NBIT_UNSIGNED_INTEGER: + errn = EXI_UNSUPPORTED_LIST_VALUE_TYPE; + break; + case EXI_DATATYPE_UNSIGNED_INTEGER: + errn = decodeUnsignedInteger(stream, &val->integer); + break; + case EXI_DATATYPE_INTEGER: + errn = decodeInteger(stream, &val->integer); + break; + case EXI_DATATYPE_DATETIME: + errn = decodeDateTime(stream,lt.datetimeType, &val->datetime); + break; + case EXI_DATATYPE_STRING: + errn = decodeStringValue(stream, state, qnameID, &val->str); + break; + default: + errn = EXI_UNSUPPORTED_LIST_VALUE_TYPE; + break; + } + + return (errn); +} + + + + +int exiappHandInitDecoder(bitstream_t* stream, exi_state_t* state, + exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable) { +#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 +#if EXI_OPTION_VALUE_MAX_LENGTH != 0 + int i; +#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */ +#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */ + /* init grammar state */ + state->stackIndex = 0; + state->grammarStack[0] = DOCUMENT; + /* name table */ + state->nameTablePrepopulated = exiappHandNameTablePrepopulated; + state->nameTableRuntime = runtimeTable; + /* next qname ID */ + state->nextQNameID = EXI_appHandNUMBER_OF_PREPOPULATED_QNAMES; + /* string table */ + state->stringTable = stringTable; + state->stringTable.numberOfGlobalStrings = 0; +#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 +#if EXI_OPTION_VALUE_MAX_LENGTH != 0 + for(i=0; i<(state->stringTable.sizeLocalStrings); i++) { + state->stringTable.numberOfLocalStrings[i] = 0; + } +#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */ +#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */ + + /* runtime grammars */ + state->numberOfRuntimeGrammars = 0; + + /* Avoid warning: Unused declaration of variable 'name' */ + xsi = 0; + bits = 0; + + /* decode header */ + return (readEXIHeader(stream)); +} + +int exiappHandDecodeNextEvent(bitstream_t* stream, exi_state_t* state, + exi_event_t* nextEvent) { + uint16_t codingLength; + uint16_t numberOfProductions; + uint32_t eventCode1; + int16_t ruleID = state->grammarStack[state->stackIndex]; + state->eventCode = 0; + errn = 0; + + switch (ruleID) { + case 19: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 20: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 21: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 22: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 23: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 24: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 25: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 26: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 27: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 28: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 29: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 30: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 31: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 32: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 33: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 34: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 35: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 36: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 37: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 43: + /* Element[START_ELEMENT(SchemaID), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 1: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 2: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 2: + /* FirstStartTag[START_ELEMENT(AppProtocol)] */ + case 3: + /* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */ + case 8: + /* Element[START_ELEMENT(VersionNumberMajor)] */ + case 11: + /* Element[START_ELEMENT(VersionNumberMinor)] */ + case 12: + /* Element[START_ELEMENT(SchemaID)] */ + case 15: + /* Element[START_ELEMENT(Priority)] */ + case 18: + /* Element[START_ELEMENT(ProtocolNamespace)] */ + case 38: + /* Element[START_ELEMENT(AppProtocol)] */ + case 40: + /* FirstStartTag[START_ELEMENT(ResponseCode)] */ + case 44: + /* Element[START_ELEMENT(ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 1: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 0: + /* Document[START_DOCUMENT] */ + case 45: + /* Fragment[START_DOCUMENT] */ + *nextEvent = EXI_EVENT_START_DOCUMENT; + break; + 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] */ + errn = decodeNBitUnsignedInteger(stream, 4, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 9: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 10: + *nextEvent = EXI_EVENT_END_DOCUMENT; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 39: + /* DocEnd[END_DOCUMENT] */ + *nextEvent = EXI_EVENT_END_DOCUMENT; + break; + case 49: + /* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC; + break; + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 2: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 3: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 4: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 4: + /* FirstStartTag[CHARACTERS[STRING]] */ + case 7: + /* Element[CHARACTERS[STRING]] */ + case 9: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + case 10: + /* Element[CHARACTERS[UNSIGNED_INTEGER]] */ + case 13: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 14: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 16: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 17: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 41: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 42: + /* Element[CHARACTERS[ENUMERATION]] */ + case 47: + /* FirstStartTag[CHARACTERS[LIST]] */ + case 48: + /* Element[CHARACTERS[LIST]] */ + case 51: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + case 52: + /* Element[CHARACTERS[BINARY_BASE64]] */ + case 53: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + case 54: + /* Element[CHARACTERS[BOOLEAN]] */ + case 55: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 56: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 57: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 58: + /* Element[CHARACTERS[DATETIME]] */ + case 59: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 60: + /* Element[CHARACTERS[DATETIME]] */ + case 61: + /* FirstStartTag[CHARACTERS[DECIMAL]] */ + case 62: + /* Element[CHARACTERS[DECIMAL]] */ + case 63: + /* FirstStartTag[CHARACTERS[FLOAT]] */ + case 64: + /* Element[CHARACTERS[FLOAT]] */ + case 65: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 66: + /* Element[CHARACTERS[DATETIME]] */ + case 67: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 68: + /* Element[CHARACTERS[DATETIME]] */ + case 69: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 70: + /* Element[CHARACTERS[DATETIME]] */ + case 71: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 72: + /* Element[CHARACTERS[DATETIME]] */ + case 73: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 74: + /* Element[CHARACTERS[DATETIME]] */ + case 75: + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + case 76: + /* Element[CHARACTERS[BINARY_HEX]] */ + case 77: + /* FirstStartTag[CHARACTERS[INTEGER]] */ + case 78: + /* Element[CHARACTERS[INTEGER]] */ + case 79: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + case 80: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 81: + /* Element[CHARACTERS[DATETIME]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_CHARACTERS; + break; + case 1: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 5: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 1: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 2: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 50: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 1: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 2: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 3: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + + default: + + if(ruleID < 0) { + /* built-in element grammar */ + numberOfProductions = state->runtimeGrammars[(ruleID + 1)*(-1)].numberOfProductions; + if(numberOfProductions > 0) { + /* decode 1st level event code */ + errn = exiGetCodingLength((uint16_t)(numberOfProductions + 1u), &codingLength); + if(errn == 0) { + errn = decodeNBitUnsignedInteger(stream, codingLength, &eventCode1); + if(errn == 0) { + if(eventCode1 == numberOfProductions) { + /* 2nd level */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + } else { + /* 1st level event not supported in profile */ + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + } + } + } + } else { + errn = exiDecodeNext2Event(stream, state, nextEvent); + } + } else { + *nextEvent = EXI_EVENT_ERROR; + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + } + + break; + } + + currEvent = *nextEvent; + return (errn); +} + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ +int exiappHandDecodeStartDocument(bitstream_t* stream, exi_state_t* state) { + errn = 0; + switch(state->grammarStack[state->stackIndex]) { + case 0: + /* move on */ + state->grammarStack[state->stackIndex] = 1; + break; + case 45: + /* move on */ + state->grammarStack[state->stackIndex] = 46; + break; + + default: + errn =(EXI_ERROR_UNEXPECTED_START_DOCUMENT); + break; + } + + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ +int exiappHandDecodeEndDocument(bitstream_t* stream, exi_state_t* state) { + errn = 0; + switch(state->grammarStack[state->stackIndex]) { + case 39: + break; + case 46: + break; + + default: + errn =(EXI_ERROR_UNEXPECTED_END_DOCUMENT); + break; + } + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ + + +int exiappHandDecodeStartElement(bitstream_t* stream, exi_state_t* state, + uint16_t* qnameID) { + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT; + + switch(currEvent) { + case EXI_EVENT_START_ELEMENT: + switch (state->grammarStack[state->stackIndex]) { + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 65, 39, 2); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 66, 39, 40); + break; + } + break; + case 2: + /* FirstStartTag[START_ELEMENT(AppProtocol)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 19, 3); + break; + } + break; + case 3: + /* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 2, 8, 4); + break; + } + break; + case 8: + /* Element[START_ELEMENT(VersionNumberMajor)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 5, 11, 9); + break; + } + break; + case 11: + /* Element[START_ELEMENT(VersionNumberMinor)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 6, 12, 9); + break; + } + break; + case 12: + /* Element[START_ELEMENT(SchemaID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 4, 15, 13); + break; + } + break; + case 15: + /* Element[START_ELEMENT(Priority)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 1, 5, 16); + break; + } + break; + case 18: + /* Element[START_ELEMENT(ProtocolNamespace)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 2, 8, 4); + break; + } + break; + case 19: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 20, 3); + break; + } + break; + case 20: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 21, 3); + break; + } + break; + case 21: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 22, 3); + break; + } + break; + case 22: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 23, 3); + break; + } + break; + case 23: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 24, 3); + break; + } + break; + case 24: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 25, 3); + break; + } + break; + case 25: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 26, 3); + break; + } + break; + case 26: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 27, 3); + break; + } + break; + case 27: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 28, 3); + break; + } + break; + case 28: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 29, 3); + break; + } + break; + case 29: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 30, 3); + break; + } + break; + case 30: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 31, 3); + break; + } + break; + case 31: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 32, 3); + break; + } + break; + case 32: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 33, 3); + break; + } + break; + case 33: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 34, 3); + break; + } + break; + case 34: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 35, 3); + break; + } + break; + case 35: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 36, 3); + break; + } + break; + case 36: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 37, 3); + break; + } + break; + case 37: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 5, 3); + break; + } + break; + case 38: + /* Element[START_ELEMENT(AppProtocol)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 19, 3); + break; + } + break; + case 40: + /* FirstStartTag[START_ELEMENT(ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 3, 43, 41); + break; + } + break; + case 43: + /* Element[START_ELEMENT(SchemaID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 4, 5, 13); + break; + } + break; + case 44: + /* Element[START_ELEMENT(ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 3, 43, 41); + break; + } + break; + 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] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 0, 46, 3); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 1, 46, 16); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 2, 46, 4); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 3, 46, 41); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 4, 46, 13); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 5, 46, 9); + break; + case 6: + errn = _exiDecodeStartElement(state, *qnameID = 6, 46, 9); + break; + case 7: + errn = _exiDecodeStartElement(state, *qnameID = 65, 46, 2); + break; + case 8: + errn = _exiDecodeStartElement(state, *qnameID = 66, 46, 40); + break; + } + break; + + } + break; + case EXI_EVENT_START_ELEMENT_NS: + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT; + break; + case EXI_EVENT_START_ELEMENT_GENERIC: + errn = _exiDecodeQName(stream, state, qnameID, + &_qname); + if (errn == 0) { + /* update current rule, according next SE(*) grammar */ + switch (state->grammarStack[state->stackIndex]) { + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] --> DocEnd[END_DOCUMENT] */ + state->grammarStack[state->stackIndex] = 39; + break; + 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] */ + state->grammarStack[state->stackIndex] = 46; + 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 50: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 50; + break; + + default: + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT; + break; + } + if (errn == 0) { + /* retrieve global grammar(existing OR runtime) and push it stack */ + errn = exi_appHand_RetrieveAndPushGlobalGrammar(state, *qnameID); + } + } + break; + case EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED: + errn = _exiDecodeQName(stream, state, qnameID, + &_qname); + if (errn == 0) { + /* update current rule --> element content rule (if not already) */ + errn = exi_appHand_MoveToElementContentRule(state); + if (errn == 0) { + /* retrieve global grammar(existing OR runtime) and push it stack */ + errn = exi_appHand_RetrieveAndPushGlobalGrammar(state, *qnameID); + } + } + break; + default: + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT; + break; + } + + return (errn); +} + + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ +int exiappHandDecodeEndElement(bitstream_t* stream, exi_state_t* state, uint16_t* qnameID) { + int16_t currentID; + errn = 0; + switch(currEvent) { + case EXI_EVENT_END_ELEMENT_UNDECLARED: + currentID = state->grammarStack[state->stackIndex]; + if (currentID < 0) { + + /* runtime grammars do have IDs smaller than 0 */ + /* learn EE event */ + errn = exi_appHand_LearnEndElement(state); + + } + if(errn == 0) { + /* copy IDs */ + *qnameID = state->elementStack[state->stackIndex]; + errn = (exi_appHand_PopStack(state)); + } + break; + default: + /* copy IDs */ + *qnameID = state->elementStack[state->stackIndex]; + errn = (exi_appHand_PopStack(state)); + break; + } + + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ + + +int exiappHandDecodeCharacters(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + int16_t moveOnID = 0; + errn = EXI_ERROR_UNEXPECTED_CHARACTERS; + + switch(currEvent) { + case EXI_EVENT_CHARACTERS: + case EXI_EVENT_CHARACTERS_GENERIC: + switch (state->grammarStack[state->stackIndex]) { + case 73: + /* DATETIME */ + case 74: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_GYEARMONTH, &val->datetime); + moveOnID = 5; /* move on ID */ + break; + case 59: + /* DATETIME */ + case 60: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_DATETIME, &val->datetime); + moveOnID = 5; /* move on ID */ + break; + case 80: + /* DATETIME */ + case 81: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_TIME, &val->datetime); + moveOnID = 5; /* move on ID */ + break; + case 75: + /* BINARY_HEX */ + case 76: + /* BINARY_HEX */ + val->type = EXI_DATATYPE_BINARY_HEX; + errn = decodeBinary(stream, &val->binary); + moveOnID = 5; /* move on ID */ + break; + case 53: + /* BOOLEAN */ + case 54: + /* BOOLEAN */ + val->type = EXI_DATATYPE_BOOLEAN; + errn = decodeBoolean(stream, &val->boolean); + moveOnID = 5; /* move on ID */ + break; + case 57: + /* DATETIME */ + case 58: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_DATE, &val->datetime); + moveOnID = 5; /* move on ID */ + break; + case 65: + /* DATETIME */ + case 66: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_GDAY, &val->datetime); + moveOnID = 5; /* move on ID */ + break; + case 55: + /* NBIT_UNSIGNED_INTEGER */ + case 56: + /* NBIT_UNSIGNED_INTEGER */ + val->type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + errn = _decodeNBitIntegerValue(stream, &val->integer, 8, -128); + moveOnID = 5; /* move on ID */ + break; + case 9: + /* UNSIGNED_INTEGER */ + case 10: + /* UNSIGNED_INTEGER */ + case 79: + /* UNSIGNED_INTEGER */ + val->type = EXI_DATATYPE_UNSIGNED_INTEGER; + errn = decodeUnsignedInteger(stream, &val->integer); + moveOnID = 5; /* move on ID */ + break; + case 16: + /* NBIT_UNSIGNED_INTEGER */ + case 17: + /* NBIT_UNSIGNED_INTEGER */ + val->type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + errn = _decodeNBitIntegerValue(stream, &val->integer, 5, 1); + moveOnID = 5; /* move on ID */ + break; + case 51: + /* BINARY_BASE64 */ + case 52: + /* BINARY_BASE64 */ + val->type = EXI_DATATYPE_BINARY_BASE64; + errn = decodeBinary(stream, &val->binary); + moveOnID = 5; /* move on ID */ + break; + case 67: + /* DATETIME */ + case 68: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_GMONTH, &val->datetime); + moveOnID = 5; /* move on ID */ + break; + case 41: + /* ENUMERATION */ + case 42: + /* ENUMERATION */ + val->type = EXI_DATATYPE_ENUMERATION; + errn = decodeNBitUnsignedInteger(stream, 2, &val->enumeration); + moveOnID = 5; /* move on ID */ + break; + case 49: + /* STRING */ + case 50: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 50; /* move on ID */ + break; + case 63: + /* FLOAT */ + case 64: + /* FLOAT */ + val->type = EXI_DATATYPE_FLOAT; + errn = decodeFloat(stream, &val->float_me); + moveOnID = 5; /* move on ID */ + break; + case 47: + /* LIST */ + case 48: + /* LIST */ + val->type = EXI_DATATYPE_LIST; + val->list.type = EXI_DATATYPE_STRING; + errn = decodeUnsignedInteger16(stream, &val->list.len); + moveOnID = 5; /* move on ID */ + break; + case 69: + /* DATETIME */ + case 70: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_GMONTHDAY, &val->datetime); + moveOnID = 5; /* move on ID */ + break; + case 61: + /* DECIMAL */ + case 62: + /* DECIMAL */ + val->type = EXI_DATATYPE_DECIMAL; + errn = decodeDecimal(stream, &val->decimal); + moveOnID = 5; /* move on ID */ + break; + case 13: + /* NBIT_UNSIGNED_INTEGER */ + case 14: + /* NBIT_UNSIGNED_INTEGER */ + val->type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + errn = _decodeNBitIntegerValue(stream, &val->integer, 8, 0); + moveOnID = 5; /* move on ID */ + break; + case 77: + /* INTEGER */ + case 78: + /* INTEGER */ + val->type = EXI_DATATYPE_INTEGER; + errn = decodeInteger(stream, &val->integer); + moveOnID = 5; /* move on ID */ + break; + case 71: + /* DATETIME */ + case 72: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_GYEAR, &val->datetime); + moveOnID = 5; /* move on ID */ + break; + case 4: + /* STRING */ + case 7: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 5; /* move on ID */ + break; + + } + if (errn == 0) { + /* move on */ + state->grammarStack[state->stackIndex] = moveOnID; + } + break; + case EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED: + if (state->grammarStack[state->stackIndex] < 0) { + /* runtime grammars do have IDs smaller than 0 */ + errn = (EXI_UNSUPPORTED_GRAMMAR_LEARNING_CH); + } else { + /* update current rule --> element content rule (if not already) */ + errn = exi_appHand_MoveToElementContentRule(state); + if (errn == 0) { + /* read content value as STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + } + break; + default: + errn = EXI_ERROR_UNEXPECTED_CHARACTERS; + break; + } + + return (errn); +} + + +int exiappHandDecodeAttributeGenericValue(bitstream_t* stream, exi_state_t* state, uint16_t* qnameID, exi_value_t* val) { + int16_t currentID; + + if (_qname.uri.id == 2 && _qname.localName.id == 1 ) { + /* xsi:type --> QName type */ + errn = exiappHandDecodeAttributeXsiType(stream, state, val); + } else { + currentID = state->grammarStack[state->stackIndex]; + if (currentID >= 0) { + /* if schema-informed value type according global attribute */ + switch(*qnameID) { + + default: + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + break; + } + + } else { + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + } + } + + return (errn); +} + +int exiappHandDecodeAttribute(bitstream_t* stream, exi_state_t* state, + uint16_t* qnameID, exi_value_t* val) { + int16_t moveOnID = 0; + int16_t currentID = state->grammarStack[state->stackIndex]; + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE; + + switch(currEvent) { + case EXI_EVENT_ATTRIBUTE: + case EXI_EVENT_ATTRIBUTE_INVALID_VALUE: + switch (currentID) { + + } + + if (errn == 0) { + /* move on */ + state->grammarStack[state->stackIndex] = moveOnID; + } + break; + case EXI_EVENT_ATTRIBUTE_GENERIC: + case EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED: + errn = _exiDecodeQName(stream, state, qnameID, &_qname); + if (errn == 0) { + /* learn attribute ? */ + errn = exi_appHand_LearnAttribute(state, _qname.uri.id, _qname.localName.id); + if (errn == 0) { + /* decode attribute value */ + errn = exiappHandDecodeAttributeGenericValue(stream, state, qnameID, val); + } + } + break; + default: + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE; + break; + } + + return (errn); +} + + + +int exiappHandDecodeAttributeXsiNil(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + errn = decodeBoolean(stream, &val->boolean); + if (errn == 0 && val->boolean) { + /* handle xsi:nil == true */ + errn = exi_appHand_HandleXsiNilTrue(state); + } + return (errn); +} + + +int exiappHandDecodeAttributeXsiType(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + + /* uri */ + errn =_exiDecodeNamespaceUri(stream, state, &_qname.uri); + if (errn == 0) { + /* localName */ + errn = _exiDecodeLocalName(stream, state, _qname.uri.id, &_qname.localName); + if (errn == 0) { + val->type = EXI_DATATYPE_QNAME; + val->eqname.namespaceURI = _qname.uri.id; + val->eqname.localPart = _qname.localName.id; + + /* handle xsi type cast */ + errn = exi_appHand_HandleXsiType(state, &val->eqname); + } + } + + return (errn); +} + + + +#endif + diff --git a/src/codec/appHandCodec/appHandEXIDecoder.h b/src/codec/appHandCodec/appHandEXIDecoder.h new file mode 100644 index 0000000..1ea4c95 --- /dev/null +++ b/src/codec/appHandCodec/appHandEXIDecoder.h @@ -0,0 +1,225 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_appHand_DECODER_H +#define EXI_appHand_DECODER_H + +/** +* \file EXIDecoder.h +* \brief EXI Decoder +* +*/ + +#include "EXITypes.h" + +/** + * \brief Initialize EXI decoder + * + * Resets & initializes the EXI decoder. + * + * \param stream Input Stream + * \param state Codec state + * \param runtimeTable Runtime name-tables + * \param stringTable String table + * \return Error-Code <> 0 + * + */ +int exiappHandInitDecoder(bitstream_t* stream, exi_state_t* state, + exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable); + + +/** + * \brief Reports last decoded qualified name + * + * Note: Qualified name only available for previously unknown qname. Otherwise make use of name table entries. + * + * \param qname Qualified name + * \return Error-Code <> 0 + * + */ +int exiappHandGetLastQName(exi_qname_t** qname); + + +/** + * \brief Decodes next event + * + * Inspects EXI stream and decodes next EXI event. + * + * \param stream Input Stream + * \param state Codec state + * \param nextEvent Next event + * \return Error-Code <> 0 + * + */ +int exiappHandDecodeNextEvent(bitstream_t* stream, + exi_state_t* state, exi_event_t* nextEvent); + + +/** + * \brief Decodes StartDocument (SD) event + * + * \param stream Input Stream + * \param state Codec state + * \return Error-Code <> 0 + * + */ +int exiappHandDecodeStartDocument(bitstream_t* stream, + exi_state_t* state); + +/** + * \brief Decodes EndDocument (ED) event + * + * \param stream Input Stream + * \param state Codec state + * \return Error-Code <> 0 + * + */ +int exiappHandDecodeEndDocument(bitstream_t* stream, + exi_state_t* state); + +/** + * \brief Decodes StartElement (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. + * + * \param stream Input Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \return Error-Code <> 0 + * + */ +int +exiappHandDecodeStartElement(bitstream_t* stream, + exi_state_t* state, uint16_t* qnameID); + + +/** + * \brief Decodes EndElement (EE) event + * + * \param stream Input Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \return Error-Code <> 0 + * + */ +int exiappHandDecodeEndElement(bitstream_t* stream, + exi_state_t* state, uint16_t* qnameID); + + +/** + * \brief Decodes Characters (CH) event. + * + * Reports characters value. + * + * \param stream Input Stream + * \param state Codec state + * \param val Characters value + * \return Error-Code <> 0 + * + */ +int exiappHandDecodeCharacters(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + + +/** + * \brief Decodes Attribute (AT) event. + * + * Reports attribute qname and value. + * + * \param stream Input Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \param val Characters value + * \return Error-Code <> 0 + * + */ +int exiappHandDecodeAttribute(bitstream_t* stream, + exi_state_t* state, uint16_t* qnameID, exi_value_t* val); + + +/** + * \brief Decodes attribute xsi:nil + * + * Reports value. + * + * \param stream Input Stream + * \param state Codec state + * \param val Characters value + * \return Error-Code <> 0 + * + */ +int exiappHandDecodeAttributeXsiNil(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + + +/** + * \brief Decodes attribute xsi:type + * + * Reports value. + * + * \param stream Input Stream + * \param state Codec state + * \param val Characters value + * \return Error-Code <> 0 + * + */ +int exiappHandDecodeAttributeXsiType(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + + +/** + * \brief Decodes attribute/characters list value + * + * List values are special and are processed one by one. + * + * \param stream Input Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \param val List value + * \param lt List type + * \return Error-Code <> 0 + * + */ +int exiappHandDecodeListValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, + exi_value_t* val, exi_list_t lt); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/appHandCodec/appHandEXIEncoder.c b/src/codec/appHandCodec/appHandEXIEncoder.c new file mode 100644 index 0000000..ccf9927 --- /dev/null +++ b/src/codec/appHandCodec/appHandEXIEncoder.c @@ -0,0 +1,1425 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_appHand_ENCODER_C +#define EXI_appHand_ENCODER_C + +#include "EXITypes.h" +#include "EXIOptions.h" +#include "BitOutputStream.h" +#include "EncoderChannel.h" + +#include "StringNameTable.h" +#include "appHandNameTableEntries.h" +#include "MethodsBag.h" + +#include "EXIOptions.h" + +#include "appHandEXICoder.h" +#include "EXIHeaderEncoder.h" +#include "ErrorCodes.h" +#include "appHandQNames.h" +#include "appHandQNameDefines.h" + + + + +/* local variables */ +static uint32_t bits; +static int errn; + +/* ==================================== */ + +static int _encodeNBitIntegerValue(bitstream_t* stream, exi_integer_t* iv, uint16_t nbits, int32_t lowerBound) { + uint32_t val; + errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + val = (uint32_t)(iv->val.int8 - lowerBound); + break; + case EXI_UNSIGNED_INTEGER_16: + val = (uint32_t)(iv->val.int16 - lowerBound); + break; + case EXI_UNSIGNED_INTEGER_32: + val = (uint32_t)(iv->val.int32 - lowerBound); + break; + case EXI_UNSIGNED_INTEGER_64: + val = (uint32_t)(iv->val.int64 - lowerBound); + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + val = (uint32_t)(iv->val.uint8 - lowerBound); + break; + case EXI_INTEGER_16: + val = (uint32_t)(iv->val.uint16 - lowerBound); + break; + case EXI_INTEGER_32: + val = (uint32_t)(iv->val.uint32 - (int64_t)lowerBound); + break; + case EXI_INTEGER_64: + val = (uint32_t)((int64_t)iv->val.uint64 - (int64_t)lowerBound); + break; + default: + errn = (EXI_UNSUPPORTED_INTEGER_VALUE_TYPE); + break; + } + + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, nbits, val); + } + + return (errn); +} + + +static int _exiEncodeNamespaceUriHit(bitstream_t* stream, exi_state_t* state, uint16_t uriID) { + uint16_t uriCodingLength; + uint16_t uriSize; + + errn = exiGetUriSize(&state->nameTablePrepopulated, &state->nameTableRuntime, &uriSize); + if (errn == 0) { + /* URI Entries + 1 */ + errn = exiGetCodingLength( (uint16_t)(uriSize + 1), &uriCodingLength); + if (errn == 0) { + /* uri string value found */ + /* ==> value(i+1) is encoded as n-bit unsigned integer */ + errn = encodeNBitUnsignedInteger(stream, uriCodingLength, (uint32_t)(uriID+1)); + } + } + + return errn; +} + + +static int _exiEncodeLocalNameHit(bitstream_t* stream, exi_state_t* state, + uint16_t uriID, uint16_t localNameID) { + uint16_t localNameSize; + uint16_t localNameCodingLength; + + /* string value found in local partition */ + /* ==> string value is represented as zero (0) encoded as an */ + errn = encodeUnsignedInteger32(stream, 0 ); + if (errn == 0) { + /* Unsigned Integer followed by an the compact identifier of the */ + /* string value as an n-bit unsigned integer n is log2 m and m is */ + /* the number of entries in the string table partition */ + errn = exiGetLocalNameSize(&state->nameTablePrepopulated, &state->nameTableRuntime, uriID, &localNameSize); + if (errn == 0) { + errn = exiGetCodingLength(localNameSize, &localNameCodingLength); + if (errn == 0) { + errn = encodeNBitUnsignedInteger(stream, localNameCodingLength, localNameID); + } + } + } + + return (errn); +} + + +static int _encodeAttributeXsiTypeContent(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + + /* encode qname */ + errn = _exiEncodeNamespaceUriHit(stream, state, val->eqname.namespaceURI); + if (errn == 0) { + errn = _exiEncodeLocalNameHit(stream, state, val->eqname.namespaceURI, val->eqname.localPart); + if (errn == 0) { + /* handle xsi type cast */ + errn = exi_appHand_HandleXsiType(state, &val->eqname); + } + } + + return (errn); +} + + +static int _exiEncodeStartElement(bitstream_t* stream, uint16_t nbits, + uint32_t val, exi_state_t* state, uint16_t qnameID, int16_t stackId, + int16_t newState) { + /* event-code */ + errn = encodeNBitUnsignedInteger(stream, nbits, val); + if (errn == 0) { + /* move on */ + state->grammarStack[state->stackIndex] = stackId; + /* push element on stack */ + errn = (exi_appHand_PushStack(state, newState, qnameID)); + } + + return (errn); +} + + +static int _encode2ndLevelAttribute(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, + exi_value_t* val) { + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; +} + + +int exiappHandEncodeListValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, exi_value_t* val, exi_list_t lt) { + + switch(lt.type) { + case EXI_DATATYPE_BINARY_BASE64: + case EXI_DATATYPE_BINARY_HEX: + errn = encodeBinary(stream, &val->binary); + break; + case EXI_DATATYPE_BOOLEAN: + errn = encodeBoolean(stream, val->boolean); + break; + case EXI_DATATYPE_BOOLEAN_FACET: + errn = encodeNBitUnsignedInteger(stream, 2, val->boolean ? 2 : 0); + break; + case EXI_DATATYPE_DECIMAL: + errn = encodeDecimal(stream, &val->decimal); + break; + case EXI_DATATYPE_FLOAT: + errn = encodeFloat(stream, &val->float_me); + break; + case EXI_DATATYPE_NBIT_UNSIGNED_INTEGER: + errn = EXI_UNSUPPORTED_LIST_VALUE_TYPE; + break; + case EXI_DATATYPE_UNSIGNED_INTEGER: + errn = encodeUnsignedInteger(stream, &val->integer); + break; + case EXI_DATATYPE_INTEGER: + errn = encodeInteger(stream, &val->integer); + break; + case EXI_DATATYPE_DATETIME: + errn = encodeDateTime(stream, &val->datetime); + break; + case EXI_DATATYPE_STRING: + errn = encodeStringValue(stream, state, qnameID, &val->str); + break; + default: + errn = EXI_UNSUPPORTED_LIST_VALUE_TYPE; + break; + } + + return (errn); +} + + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ +int exiappHandEncodeStartDocument(bitstream_t* stream, exi_state_t* state) { + errn = 0; + switch(state->grammarStack[state->stackIndex]) { + case 0: + /* move on */ + state->grammarStack[state->stackIndex] = 1; + break; + case 45: + /* move on */ + state->grammarStack[state->stackIndex] = 46; + break; + + default: + errn =(EXI_ERROR_UNEXPECTED_START_DOCUMENT); + break; + } + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ + + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ +int exiappHandEncodeEndDocument(bitstream_t* stream, exi_state_t* state) { + switch(state->grammarStack[state->stackIndex]) { + case 39: + errn = encodeFinish(stream); + break; + case 46: + errn = encodeFinish(stream); + break; + + default: + errn =(EXI_ERROR_UNEXPECTED_END_DOCUMENT); + break; + } + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ + + +int exiappHandInitEncoder(bitstream_t* stream, exi_state_t* state, + exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable) { +#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 +#if EXI_OPTION_VALUE_MAX_LENGTH != 0 + int i; +#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */ +#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */ + /* init grammar state */ + state->stackIndex = 0; + state->grammarStack[0] = DOCUMENT; + /* name tables */ + state->nameTablePrepopulated = exiappHandNameTablePrepopulated; + state->nameTableRuntime = runtimeTable; + /* next qname ID */ + state->nextQNameID = EXI_appHandNUMBER_OF_PREPOPULATED_QNAMES; + /* string tables */ + state->stringTable = stringTable; + state->stringTable.numberOfGlobalStrings = 0; +#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 +#if EXI_OPTION_VALUE_MAX_LENGTH != 0 + for(i=0; i<(state->stringTable.sizeLocalStrings); i++) { + state->stringTable.numberOfLocalStrings[i] = 0; + } +#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */ +#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */ + + /* runtime grammars */ + state->numberOfRuntimeGrammars = 0; + + /* Avoid warning: Unused declaration of variable 'name' */ + bits = 0; + + /* encode header */ + return (writeEXIHeader(stream)); +} + + + +int exiappHandEncodeStartElement(bitstream_t* stream, exi_state_t* state, uint16_t qnameID) { + int16_t currentID = state->grammarStack[state->stackIndex]; + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT; + + switch (currentID) { + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */ + switch(qnameID) { + case 65: + /* SE( {urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 39, 2); + break; + case 66: + /* SE( {urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 39, 40); + break; + } + break; + case 2: + /* FirstStartTag[START_ELEMENT(AppProtocol)] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 19, 3); + break; + } + break; + case 3: + /* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */ + switch(qnameID) { + case 2: + /* SE( ProtocolNamespace ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 8, 4); + break; + } + break; + case 8: + /* Element[START_ELEMENT(VersionNumberMajor)] */ + switch(qnameID) { + case 5: + /* SE( VersionNumberMajor ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 11, 9); + break; + } + break; + case 11: + /* Element[START_ELEMENT(VersionNumberMinor)] */ + switch(qnameID) { + case 6: + /* SE( VersionNumberMinor ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 12, 9); + break; + } + break; + case 12: + /* Element[START_ELEMENT(SchemaID)] */ + switch(qnameID) { + case 4: + /* SE( SchemaID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 15, 13); + break; + } + break; + case 15: + /* Element[START_ELEMENT(Priority)] */ + switch(qnameID) { + case 1: + /* SE( Priority ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 5, 16); + break; + } + break; + case 18: + /* Element[START_ELEMENT(ProtocolNamespace)] */ + switch(qnameID) { + case 2: + /* SE( ProtocolNamespace ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 8, 4); + break; + } + break; + case 19: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 20, 3); + break; + } + break; + case 20: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 21, 3); + break; + } + break; + case 21: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 22, 3); + break; + } + break; + case 22: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 23, 3); + break; + } + break; + case 23: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 24, 3); + break; + } + break; + case 24: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 25, 3); + break; + } + break; + case 25: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 26, 3); + break; + } + break; + case 26: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 27, 3); + break; + } + break; + case 27: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 28, 3); + break; + } + break; + case 28: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 29, 3); + break; + } + break; + case 29: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 30, 3); + break; + } + break; + case 30: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 31, 3); + break; + } + break; + case 31: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 32, 3); + break; + } + break; + case 32: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 33, 3); + break; + } + break; + case 33: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 34, 3); + break; + } + break; + case 34: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 35, 3); + break; + } + break; + case 35: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 36, 3); + break; + } + break; + case 36: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 37, 3); + break; + } + break; + case 37: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 5, 3); + break; + } + break; + case 38: + /* Element[START_ELEMENT(AppProtocol)] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 19, 3); + break; + } + break; + case 40: + /* FirstStartTag[START_ELEMENT(ResponseCode)] */ + switch(qnameID) { + case 3: + /* SE( ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 43, 41); + break; + } + break; + case 43: + /* Element[START_ELEMENT(SchemaID), END_ELEMENT] */ + switch(qnameID) { + case 4: + /* SE( SchemaID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 5, 13); + break; + } + break; + case 44: + /* Element[START_ELEMENT(ResponseCode)] */ + switch(qnameID) { + case 3: + /* SE( ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 43, 41); + break; + } + break; + 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] */ + switch(qnameID) { + case 0: + /* SE( AppProtocol ) */ + errn = _exiEncodeStartElement(stream, 4, 0, state, qnameID, 46, 3); + break; + case 1: + /* SE( Priority ) */ + errn = _exiEncodeStartElement(stream, 4, 1, state, qnameID, 46, 16); + break; + case 2: + /* SE( ProtocolNamespace ) */ + errn = _exiEncodeStartElement(stream, 4, 2, state, qnameID, 46, 4); + break; + case 3: + /* SE( ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 4, 3, state, qnameID, 46, 41); + break; + case 4: + /* SE( SchemaID ) */ + errn = _exiEncodeStartElement(stream, 4, 4, state, qnameID, 46, 13); + break; + case 5: + /* SE( VersionNumberMajor ) */ + errn = _exiEncodeStartElement(stream, 4, 5, state, qnameID, 46, 9); + break; + case 6: + /* SE( VersionNumberMinor ) */ + errn = _exiEncodeStartElement(stream, 4, 6, state, qnameID, 46, 9); + break; + case 65: + /* SE( {urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq ) */ + errn = _exiEncodeStartElement(stream, 4, 7, state, qnameID, 46, 2); + break; + case 66: + /* SE( {urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes ) */ + errn = _exiEncodeStartElement(stream, 4, 8, state, qnameID, 46, 40); + break; + } + break; + + default: + /* element qname not expected */ + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + } + + return (errn); +} + + + +int exiappHandEncodeStartElementNS(bitstream_t* stream, + exi_state_t* state, uint16_t namespaceUriID, + exi_string_ucs_t* localName) { + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; +} + + +int exiappHandEncodeStartElementGeneric(bitstream_t* stream, + exi_state_t* state, exi_string_ucs_t* namespaceUri, + exi_string_ucs_t* localName) { + + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT_GENERIC; + + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + return (errn); +} + + + +int exiappHandEncodeEndElement(bitstream_t* stream, exi_state_t* state) { + int16_t currentID = state->grammarStack[state->stackIndex]; + switch (currentID) { + case 49: + /* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 3, 2); + break; + case 19: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 20: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 21: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 22: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 23: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 24: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 25: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 26: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 27: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 28: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 29: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 30: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 31: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 32: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 33: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 34: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 35: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 36: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 37: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + case 43: + /* Element[START_ELEMENT(SchemaID), END_ELEMENT] */ + case 50: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 2, 1); + break; + case 5: + /* Element[END_ELEMENT] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + break; + + default: + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + } + + if (errn == 0) { + /* pop item */ + errn = exi_appHand_PopStack(state); + } + + return (errn); +} + + + +int exiappHandEncodeCharacters(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + int16_t moveOnID = 0; + int deviantChars = 0; + int16_t currentID = state->grammarStack[state->stackIndex]; + + errn = EXI_ERROR_UNEXPECTED_CHARACTERS; + + switch (currentID) { + case 48: + /* Element[CHARACTERS[LIST]] */ + if (val->type == EXI_DATATYPE_LIST) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, val->list.len); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 17: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 5, 1); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 63: + /* FirstStartTag[CHARACTERS[FLOAT]] */ + if (val->type == EXI_DATATYPE_FLOAT) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeFloat(stream, &val->float_me); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 56: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, -128); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 57: + case 59: + case 65: + case 67: + case 69: + case 71: + case 73: + case 80: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + if (val->type == EXI_DATATYPE_DATETIME) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeDateTime(stream, &val->datetime); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 75: + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + if (val->type == EXI_DATATYPE_BINARY_HEX) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBinary(stream, &val->binary); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 41: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, val->enumeration); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 55: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, -128); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 78: + /* Element[CHARACTERS[INTEGER]] */ + if (val->type == EXI_DATATYPE_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger(stream, &val->integer); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 61: + /* FirstStartTag[CHARACTERS[DECIMAL]] */ + if (val->type == EXI_DATATYPE_DECIMAL) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeDecimal(stream, &val->decimal); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 9: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger(stream, &val->integer); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 62: + /* Element[CHARACTERS[DECIMAL]] */ + if (val->type == EXI_DATATYPE_DECIMAL) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeDecimal(stream, &val->decimal); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 77: + /* FirstStartTag[CHARACTERS[INTEGER]] */ + if (val->type == EXI_DATATYPE_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger(stream, &val->integer); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 49: + /* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 50; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 5); + deviantChars = 1; + } + } + break; + case 76: + /* Element[CHARACTERS[BINARY_HEX]] */ + if (val->type == EXI_DATATYPE_BINARY_HEX) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBinary(stream, &val->binary); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 52: + /* Element[CHARACTERS[BINARY_BASE64]] */ + if (val->type == EXI_DATATYPE_BINARY_BASE64) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBinary(stream, &val->binary); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 14: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, 0); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 16: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 5, 1); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 7: + /* Element[CHARACTERS[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 58: + case 60: + case 66: + case 68: + case 70: + case 72: + case 74: + case 81: + /* Element[CHARACTERS[DATETIME]] */ + if (val->type == EXI_DATATYPE_DATETIME) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeDateTime(stream, &val->datetime); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 53: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + if (val->type == EXI_DATATYPE_BOOLEAN) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, val->boolean); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 10: + /* Element[CHARACTERS[UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger(stream, &val->integer); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 54: + /* Element[CHARACTERS[BOOLEAN]] */ + if (val->type == EXI_DATATYPE_BOOLEAN) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, val->boolean); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 79: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger(stream, &val->integer); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 50: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 50; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 2, 3); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, 1); + deviantChars = 1; + } + } + break; + case 13: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, 0); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 51: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + if (val->type == EXI_DATATYPE_BINARY_BASE64) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBinary(stream, &val->binary); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 47: + /* FirstStartTag[CHARACTERS[LIST]] */ + if (val->type == EXI_DATATYPE_LIST) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, val->list.len); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 42: + /* Element[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, val->enumeration); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 4: + /* FirstStartTag[CHARACTERS[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 64: + /* Element[CHARACTERS[FLOAT]] */ + if (val->type == EXI_DATATYPE_FLOAT) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeFloat(stream, &val->float_me); + } + moveOnID = 5; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + + default: + errn = (EXI_ERROR_UNEXPECTED_CHARACTERS); + break; + } + + if(errn == 0) { + if (currentID < 0) { + /* TODO runtime rules */ + errn = EXI_ERROR_UNEXPECTED_CHARACTERS; + } else if (deviantChars) { + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + } else { + /* move on */ + state->grammarStack[state->stackIndex] = moveOnID; + } + } + + return (errn); +} + + +int exiappHandEncodeAttribute(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, + exi_value_t* val) { + int16_t moveOnID = 0; + int16_t currentID = state->grammarStack[state->stackIndex]; + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE; + + switch (currentID) { + + } + + /* no expected attribute */ + if (currentID < 0) { + /* runtime element */ + errn = _encode2ndLevelAttribute(stream, state, qnameID, val); + } else { + if(moveOnID == 0) { + /* no action yet */ +#if EXI_OPTION_STRICT != 0 + /* no 2nd level events in strict mode for schema-informed grammars */ + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE; +#else /* EXI_appHandSTRICT != 0 */ + errn = _encode2ndLevelAttribute(stream, state, qnameID, val); +#endif /* EXI_appHandSTRICT != 0 */ + } else { + state->grammarStack[state->stackIndex] = moveOnID; + } + } + + return (errn); +} + + +int exiappHandEncodeAttributeNS(bitstream_t* stream, + exi_state_t* state, uint16_t namespaceUriID, + exi_string_ucs_t* localName, exi_value_t* val) { + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE_NS; + + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + + return (errn); +} + +int exiappHandEncodeAttributeGeneric(bitstream_t* stream, + exi_state_t* state, exi_string_ucs_t* namespaceUri, + exi_string_ucs_t* localName, exi_value_t* val) { + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE_GENERIC_UNDECLARED; + + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + + return (errn); +} + + +int exiappHandEncodeAttributeXsiNil(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + + switch (state->grammarStack[state->stackIndex]) { + + } + + if (errn == 0) { + errn = encodeBoolean(stream, val->boolean); + if (errn == 0 && val->boolean) { + /* handle xsi:nil == true */ + errn = exi_appHand_HandleXsiNilTrue(state); + } + } + + return (errn); +} + + + +int exiappHandEncodeAttributeXsiType(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + /* encode xsi:type event code */ + switch (state->grammarStack[state->stackIndex]) { + case 9: + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + } + break; + + default: + errn = (EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_TYPE); + break; + } + if (errn == 0) { + /* encode qname */ + errn = _encodeAttributeXsiTypeContent(stream, state, val); + } + + return (errn); +} + + + + +#endif + diff --git a/src/codec/appHandCodec/appHandEXIEncoder.h b/src/codec/appHandCodec/appHandEXIEncoder.h new file mode 100644 index 0000000..dc0ecf1 --- /dev/null +++ b/src/codec/appHandCodec/appHandEXIEncoder.h @@ -0,0 +1,274 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_appHand_ENCODER_H +#define EXI_appHand_ENCODER_H + +/** +* \file EXIEncoder.h +* \brief EXI Encoder +* +*/ + +#include "EXITypes.h" +#include "appHandEXIEncoder.h" + +/** + * \brief Initialize EXI encoder + * + * Resets & initializes the EXI encoder. + * + * \param stream Output Stream + * \param state Codec state + * \param runtimeTable Runtime name-tables + * \param stringTable String table + * \return Error-Code <> 0 + * + */ +int exiappHandInitEncoder(bitstream_t* stream, exi_state_t* state, + exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable); + +/** + * \brief Reports the beginning of a set of XML events + * + * see EXI StartDocument (SD) event + * + * \param stream Output Stream + * \param state Codec state + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeStartDocument(bitstream_t* stream, + exi_state_t* state); + +/** + * \brief Reports the end of a set of XML events + * + * see EXI EndDocument (ED) event + * + * \param stream Output Stream + * \param state Codec state + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeEndDocument(bitstream_t* stream, + exi_state_t* state); + +/** + * \brief Supplies the start of a known element + * + * Provides access to the namespace URI and local name of the start tag by providing qnameID. + * Note: Both, namespace URI and local name are known (schema-informed) or have been encoded before. + * see EXI StartElement (SE) event + * + * \param stream Output Stream + * \param state Codec state + * \param qnameID qualified name ID + * \return Error-Code <> 0 + * + */ +int +exiappHandEncodeStartElement(bitstream_t* stream, + exi_state_t* state, uint16_t qnameID); + +/** + * \brief Supplies the start of an element where the namespace is known + * + * Note: Namespace URI is known (schema-informed) or has been encoded before while local name is unknown. + * see EXI StartElement (SE) event + * + * \param stream Output Stream + * \param state Codec state + * \param namespaceUriID namespace URI ID + * \param localName local name as string + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeStartElementNS(bitstream_t* stream, + exi_state_t* state, uint16_t namespaceUriID, + exi_string_ucs_t* localName); + +/** + * \brief Supplies the start of an element where the namespace and the local name is unknown + * + * Note: Neither namespace URI nor local name is known. + * see EXI StartElement (SE) event + * + * \param stream Output Stream + * \param state Codec state + * \param namespaceUri namespace URI as string + * \param localName local name as string + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeStartElementGeneric(bitstream_t* stream, + exi_state_t* state, exi_string_ucs_t* namespaceUri, + exi_string_ucs_t* localName); + +/** + * \brief Supplies the end tag of an element + * + * see EXI EndElement (EE) event + * + * \param stream Output Stream + * \param state Codec state + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeEndElement(bitstream_t* stream, + exi_state_t* state); + +/** + * \brief Supplies characters value + * + * Note: Special handling for list value. + * see EXI Characters (CH) event + * + * \param stream Output Stream + * \param state Codec state + * \param val Characters value + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeCharacters(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + +/** + * \brief Supplies an attribute qname and value + * + * Note: Special handling for list value. + * see EXI Attribute (AT) event + * + * \param stream Output Stream + * \param state Codec state + * \param qnameID qualified name ID + * \param val Attribute value + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeAttribute(bitstream_t* stream, + exi_state_t* state, uint16_t qnameID, exi_value_t* val); + + + + +/** + * \brief Supplies an attribute qname and value where the namespace is known + * + * Note: Special handling for list value. + * see EXI Attribute (AT) event + * + * \param stream Output Stream + * \param state Codec state + * \param namespaceUriID Qualified namespace URI ID + * \param localName Qualified localname as String + * \param val Attribute value + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeAttributeNS(bitstream_t* stream, + exi_state_t* state, uint16_t namespaceUriID, + exi_string_ucs_t* localName, exi_value_t* val); + + +/** + * \brief Supplies an attribute qname and value where the namespace and the local name is unknown + * + * + * \param stream Output Stream + * \param state Codec state + * \param namespaceUri namespace URI as string + * \param localName local name as string + * \param val Attribute value + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeAttributeGeneric(bitstream_t* stream, + exi_state_t* state, exi_string_ucs_t* namespaceUri, + exi_string_ucs_t* localName, exi_value_t* val); + + + +/** + * \brief Supplies an xsi:nil attribute + * + * see EXI Attribute (AT) event + * + * \param stream Output Stream + * \param state Codec state + * \param val Attribute value + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeAttributeXsiNil(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + +/** + * \brief Supplies an xsi:type attribute + * + * see EXI Attribute (AT) event + * + * \param stream Output Stream + * \param state Codec state + * \param val Attribute value + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeAttributeXsiType(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + +/** + * \brief Supplies list value for characters and attribute event + * + * List values are special given that first the number and type of entry needs to be passed (element/attribute event) and then one by one the actual values. + * + * \param stream Output Stream + * \param state Codec state + * \param qnameID qualified name ID + * \param val one list value + * \param lt list type + * \return Error-Code <> 0 + * + */ +int exiappHandEncodeListValue(bitstream_t* stream, + exi_state_t* state, uint16_t qnameID, exi_value_t* val, exi_list_t lt); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/appHandCodec/appHandNameTableEntries.c b/src/codec/appHandCodec/appHandNameTableEntries.c new file mode 100644 index 0000000..b4d88b2 --- /dev/null +++ b/src/codec/appHandCodec/appHandNameTableEntries.c @@ -0,0 +1,101 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_appHand_NAME_TABLE_ENTRIES_C +#define EXI_appHand_NAME_TABLE_ENTRIES_C + +#include "appHandNameTableEntries.h" + + + +/* ==================================== */ +/* String Table Population */ + +/* localName entries for URI '', id = 0 */ +/* + "AppProtocol", "Priority", "ProtocolNamespace", "ResponseCode", "SchemaID", + "VersionNumberMajor", "VersionNumberMinor" + */ + +/* 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 'urn:iso:15118:2:2010:AppProtocol', id = 4 */ +/* + "AppProtocolType", "idType", "priorityType", "protocolNameType", "protocolNamespaceType", + "responseCodeType", "supportedAppProtocolReq", "supportedAppProtocolRes" + */ + + +/* number of local-name entries per URI */ +static uint16_t localNames[5] = { + /* '' */ + 7, + /* 'http://www.w3.org/XML/1998/namespace' */ + 4, + /* 'http://www.w3.org/2001/XMLSchema-instance' */ + 2, + /* 'http://www.w3.org/2001/XMLSchema' */ + 46, + /* 'urn:iso:15118:2:2010:AppProtocol' */ + 8 +}; + + +exi_name_table_prepopulated_t exiappHandNameTablePrepopulated = { 5, localNames }; + + + + +#endif + diff --git a/src/codec/appHandCodec/appHandNameTableEntries.h b/src/codec/appHandCodec/appHandNameTableEntries.h new file mode 100644 index 0000000..7294743 --- /dev/null +++ b/src/codec/appHandCodec/appHandNameTableEntries.h @@ -0,0 +1,44 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_appHand_NAME_TABLE_ENTRIES_H +#define EXI_appHand_NAME_TABLE_ENTRIES_H + +#include "EXITypes.h" + +/* ==================================== */ +/* String Table Population */ + +extern exi_name_table_prepopulated_t exiappHandNameTablePrepopulated; + +#endif + diff --git a/src/codec/appHandCodec/appHandQNameDefines.h b/src/codec/appHandCodec/appHandQNameDefines.h new file mode 100644 index 0000000..15e12bc --- /dev/null +++ b/src/codec/appHandCodec/appHandQNameDefines.h @@ -0,0 +1,54 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_appHand_QNAME_DEFINES_H +#define EXI_appHand_QNAME_DEFINES_H + +/** Number of pre-populated qnames */ +#define EXI_appHandNUMBER_OF_PREPOPULATED_QNAMES 67 + +/** Number of runtime qnames */ +#define EXI_appHandMAX_NUMBER_OF_SUPPORTED_RUNTIMES_QNAMES 100 + +/** 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) + + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/appHandCodec/appHandQNames.c b/src/codec/appHandCodec/appHandQNames.c new file mode 100644 index 0000000..bbd7a9e --- /dev/null +++ b/src/codec/appHandCodec/appHandQNames.c @@ -0,0 +1,227 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_appHand_QNAMES_C +#define EXI_appHand_QNAMES_C + +#include "EXITypes.h" +#include "ErrorCodes.h" +#include "appHandQNameDefines.h" + +/* qname is a composition of namespaceURI(ID) and localPart(ID) */ +static exi_eqname_t qnames[EXI_appHandMAX_NUMBER_OF_QNAMES] = { + /* qnameID == 0: AppProtocol */ + {0, 0}, + /* qnameID == 1: Priority */ + {0, 1}, + /* qnameID == 2: ProtocolNamespace */ + {0, 2}, + /* qnameID == 3: ResponseCode */ + {0, 3}, + /* qnameID == 4: SchemaID */ + {0, 4}, + /* qnameID == 5: VersionNumberMajor */ + {0, 5}, + /* qnameID == 6: VersionNumberMinor */ + {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: {urn:iso:15118:2:2010:AppProtocol}AppProtocolType */ + {4, 0}, + /* qnameID == 60: {urn:iso:15118:2:2010:AppProtocol}idType */ + {4, 1}, + /* qnameID == 61: {urn:iso:15118:2:2010:AppProtocol}priorityType */ + {4, 2}, + /* qnameID == 62: {urn:iso:15118:2:2010:AppProtocol}protocolNameType */ + {4, 3}, + /* qnameID == 63: {urn:iso:15118:2:2010:AppProtocol}protocolNamespaceType */ + {4, 4}, + /* qnameID == 64: {urn:iso:15118:2:2010:AppProtocol}responseCodeType */ + {4, 5}, + /* qnameID == 65: {urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq */ + {4, 6}, + /* qnameID == 66: {urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes */ + {4, 7} + +}; + + +int exiappHandGetEQName(exi_state_t* state, uint16_t qnameID, uint16_t* namespaceURI, uint16_t* localPart) { + int errn = 0; + /* EXI_appHandNUMBER_OF_QNAMES */ + if (qnameID < state->nextQNameID) { + *namespaceURI = qnames[qnameID].namespaceURI; + *localPart = qnames[qnameID].localPart; + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + return errn; +} + + +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; inextQNameID && errn != 0; i++) { + if(qnames[i].localPart == localPart && qnames[i].namespaceURI == namespaceURI) { + *qnameID = i; + errn = 0; + } + } + + return errn; +} + + +int exiappHandAddEQName(exi_state_t* state, uint16_t* qnameID, uint16_t namespaceURI, uint16_t localPart) { + int errn = 0; + if(state->nextQNameID < (EXI_appHandMAX_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 + diff --git a/src/codec/appHandCodec/appHandQNames.h b/src/codec/appHandCodec/appHandQNames.h new file mode 100644 index 0000000..cbd73d1 --- /dev/null +++ b/src/codec/appHandCodec/appHandQNames.h @@ -0,0 +1,77 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_appHand_QNAMES_H +#define EXI_appHand_QNAMES_H + +#include "EXITypes.h" + +/** + * \brief Returns efficient qname (namespaceURI & localName) IDs for qnameID + * + * \param state Codec state + * \param qnameID Qualified name ID + * \param namespaceURI QName namespace URI ID + * \param localPart QName local name ID + * \return Error-Code <> 0 + * + */ +int exiappHandGetEQName(exi_state_t* state, uint16_t qnameID, uint16_t* namespaceURI, uint16_t* localPart); + + +/** + * \brief Returns qnameID for qname namespaceURI & localName + * + * \param state Codec state + * \param namespaceURI QName namespace URI ID + * \param localPart QName local name ID + * \param qnameID QName ID (out) + * \return Error-Code <> 0 + * + */ +int exiappHandGetQNameID(exi_state_t* state, uint16_t namespaceURI, uint16_t localPart, uint16_t* qnameID); + + +/** + * \brief Add efficient qname (namespaceURI & localName) IDs for qnameID + * + * \param state Codec state + * \param qnameID Qualified name ID + * \param namespaceURI QName namespace URI ID + * \param localPart QName local name ID + * \return Error-Code <> 0 + * + */ +int exiappHandAddEQName(exi_state_t* state, uint16_t* qnameID, uint16_t namespaceURI, uint16_t localPart); + +#endif + diff --git a/src/codec/main_codec.c b/src/codec/main_codec.c new file mode 100644 index 0000000..974e814 --- /dev/null +++ b/src/codec/main_codec.c @@ -0,0 +1,604 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +/******************************************************************* + * + *

Sample program to illustrate how to read an EXI stream and + * directly write it again to an output

+ * + *

e.g., in.exi out.exi

+ ********************************************************************/ + +/* Avoid VS warning, put before your included header files */ +/* 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 +#include +#include + +#include "EXIConfig.h" +#include "v2gEXIDecoder.h" +#include "StringNameTable.h" +#include "v2gEXIEncoder.h" +#include "EXITypes.h" +#include "ByteStream.h" +#include "ErrorCodes.h" +#include "v2gQNameDefines.h" + +#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION +#include "DynamicMemory.h" +#include "StringValueTable.h" +#endif /* DYNAMIC_ALLOCATION */ + +/** EXI Debug mode */ +#define EXI_DEBUG 0 + + +#if EXI_STREAM == BYTE_ARRAY +/* 64 kilobytes = 65 536 bytes */ +/* 1 megabyte = 1 048 576 bytes*/ +/* 4 megabytes = 4 194 304 bytes */ +#define BUFFER_SIZE 4194304 +uint8_t bufferIn[BUFFER_SIZE]; +uint8_t bufferOut[BUFFER_SIZE]; +#endif /* EXI_STREAM == BYTE_ARRAY */ + +#if MEMORY_ALLOCATION == STATIC_ALLOCATION +/* avoids warning: initializer element is not computable at load time */ +#define ARRAY_SIZE_BYTES 300 +uint8_t bytesData[ARRAY_SIZE_BYTES]; +#define ARRAY_SIZE_STRINGS 30000 +uint32_t codepoints[ARRAY_SIZE_STRINGS]; +#endif /* STATIC_ALLOCATION */ + +/* String table memory setup */ +uint16_t numberOfLocalStringsDecode[EXI_v2gMAX_NUMBER_OF_QNAMES]; +uint16_t numberOfLocalStringsEncode[EXI_v2gMAX_NUMBER_OF_QNAMES]; + +#if EXI_DEBUG == 0 +# define DEBUG_PRINTF(x) printf x +#else +# define DEBUG_PRINTF(x) do {} while (0) +#endif + +static void debugValue(exi_value_t* val, exi_value_table_t* valueTable, uint16_t qnameID); + + +int main_codec(int argc, char *argv[]) { + + int errn = 0; + int noEndOfDocument; + + unsigned int k; + + bitstream_t iStream, oStream; +#if EXI_STREAM == BYTE_ARRAY + uint32_t posDecode; + uint32_t posEncode; +#endif /* EXI_STREAM == BYTE_ARRAY */ + + /* EXI set-up */ + exi_state_t stateDecode; + exi_state_t stateEncode; + exi_event_t event; + uint16_t qnameID = 0; /* qname */ + uint16_t lastKnownQNameID = EXI_v2gNUMBER_OF_PREPOPULATED_QNAMES - 1; + exi_qname_t* qname; + exi_value_t val; + + exi_name_table_runtime_t runtimeTableDecode; + exi_name_table_runtime_t runtimeTableEncode; + + exi_value_table_t stringTableDecode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsDecode, NULL }; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode, NULL }; + +#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION + exi_value_string_table_t stringTableValuesDecode; + exi_value_string_table_t stringTableValuesEncode; + + stringTableValuesDecode.size = 0; + stringTableValuesDecode.len = 0; + stringTableValuesEncode.size = 0; + stringTableValuesEncode.len = 0; + + /** string values */ + stringTableDecode.valueStringTable = &stringTableValuesDecode; + stringTableEncode.valueStringTable = &stringTableValuesEncode; +#endif /* DYNAMIC_ALLOCATION */ + + + /* BINARY memory setup */ + val.binary.len = 0; +#if MEMORY_ALLOCATION == STATIC_ALLOCATION + val.binary.size = ARRAY_SIZE_BYTES; + val.binary.data = bytesData; +#endif /* STATIC_ALLOCATION */ +#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION + val.binary.size = 0; + val.binary.data = NULL; +#endif /* DYNAMIC_ALLOCATION */ + + /* STRING miss memory setup */ + val.str.type = EXI_STRING_VALUE_MISS; + val.str.miss.len = 0; +#if MEMORY_ALLOCATION == STATIC_ALLOCATION + val.str.miss.size = ARRAY_SIZE_STRINGS; + val.str.miss.codepoints = codepoints; +#endif /* STATIC_ALLOCATION */ +#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION + val.str.miss.size = 0; + val.str.miss.codepoints = NULL; +#endif /* DYNAMIC_ALLOCATION */ + +#if EXI_DEBUG == 1 + /* The Eclipse console has buffering problems on Windows e.g, Debug mode */ + setvbuf(stdout, NULL, _IONBF, 0); + setvbuf(stderr, NULL, _IONBF, 0); +#endif /*EXI_DEBUG*/ + + if (argc != 3) { + printf("Usage: %s exiInput exiOutput\n", argv[0]); + return -1; + } + + +#if EXI_STREAM == BYTE_ARRAY + /* input pos */ + posDecode = 0; + /* parse EXI stream to internal byte structures */ + errn = readBytesFromFile(argv[1], bufferIn, BUFFER_SIZE, &posDecode); + if (errn != 0) { + printf("Problems while reading file into buffer\n"); + return errn; + } + posDecode = 0; /* reset position */ +#endif /* EXI_STREAM == BYTE_ARRAY */ + + /* setup input stream */ +#if EXI_STREAM == BYTE_ARRAY + iStream.size = BUFFER_SIZE; + iStream.data = bufferIn; + iStream.pos = &posDecode; +#endif /* EXI_STREAM == BYTE_ARRAY */ +#if EXI_STREAM == FILE_STREAM + iStream.file = fopen(argv[1], "rb"); +#endif /* EXI_STREAM == FILE_STREAM */ + + iStream.buffer = 0; + iStream.capacity = 0; + + +#if EXI_STREAM == BYTE_ARRAY + /* setup output stream */ + posEncode = 0; + oStream.size = BUFFER_SIZE; + oStream.data = bufferOut; + oStream.pos = &posEncode; +#endif +#if EXI_STREAM == FILE_STREAM + oStream.file = fopen(argv[2], "wb"); +#endif /* EXI_STREAM == FILE_STREAM */ + oStream.buffer = 0; + oStream.capacity = 8; + + noEndOfDocument = 1; /* true */ + + /* init decoder (read header, set initial state) */ + /* init runtime table */ + errn = exiInitNameTableRuntime(&runtimeTableDecode); + exiv2gInitDecoder(&iStream, &stateDecode, runtimeTableDecode, stringTableDecode); + + /* init encoder (write header, set initial state) */ + errn = exiInitNameTableRuntime(&runtimeTableEncode); + exiv2gInitEncoder(&oStream, &stateEncode, runtimeTableEncode, stringTableEncode); + + DEBUG_PRINTF(("[DECODE] >>> EXI >>> [ENCODE] \n")); + + do { + if (errn) { + DEBUG_PRINTF(("[Encode-ERROR] %d \n", errn)); + return errn; + } + + errn = exiv2gDecodeNextEvent(&iStream, &stateDecode, + &event); + if (errn) { + DEBUG_PRINTF(("[Decode-ERROR] %d \n", errn)); + return errn; + } + + switch (event) { + case EXI_EVENT_START_DOCUMENT: + /* decode */ + errn = exiv2gDecodeStartDocument(&iStream, + &stateDecode); + if (errn) { + DEBUG_PRINTF(("[Decode-ERROR-SD] %d \n", errn)); + return errn; + } + DEBUG_PRINTF((">> START_DOCUMENT \n")); + /* encode */ + errn = exiv2gEncodeStartDocument(&oStream, + &stateEncode); + break; + case EXI_EVENT_END_DOCUMENT: + /* decode */ + errn = exiv2gDecodeEndDocument(&iStream, + &stateDecode); + if (errn) { + DEBUG_PRINTF(("[Decode-ERROR-ED] %d \n", errn)); + return errn; + } + DEBUG_PRINTF((">> END_DOCUMENT \n")); + /* encode */ + errn = exiv2gEncodeEndDocument(&oStream, + &stateEncode); + /* signalize end of document */ + noEndOfDocument = 0; /* false */ + break; + case EXI_EVENT_START_ELEMENT: + case EXI_EVENT_START_ELEMENT_GENERIC: + case EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED: + /* decode */ + errn = exiv2gDecodeStartElement(&iStream, + &stateDecode, &qnameID); + if (errn) { + DEBUG_PRINTF(("[Decode-ERROR-SE] %d \n", errn)); + return errn; + } + DEBUG_PRINTF((">> SE (%d) \n", qnameID)); + /* encode */ + if(qnameID > lastKnownQNameID) { + /* new qname */ + lastKnownQNameID = qnameID; + /* URI or LocalName known ? */ + errn = exiv2gGetLastQName(&qname); + if(qname->uri.type == EXI_NAME_ENTRY_TYPE_ID) { + /* local name only new */ + errn = exiv2gEncodeStartElementNS(&oStream, + &stateEncode, qname->uri.id, &qname->localName.str); + } else { + /* both, uri and localname new */ + errn = exiv2gEncodeStartElementGeneric(&oStream, + &stateEncode, &qname->uri.str, &qname->localName.str); + } + } else { + errn = exiv2gEncodeStartElement(&oStream, + &stateEncode, qnameID); + } + break; + case EXI_EVENT_END_ELEMENT: + case EXI_EVENT_END_ELEMENT_UNDECLARED: + /* decode */ + errn = exiv2gDecodeEndElement(&iStream, + &stateDecode, &qnameID); + if (errn) { + DEBUG_PRINTF(("[Decode-ERROR-EE] %d \n", errn)); + return errn; + } + DEBUG_PRINTF(("<< EE \n")); + /* encode */ + errn = exiv2gEncodeEndElement(&oStream, + &stateEncode); + break; + case EXI_EVENT_CHARACTERS: + case EXI_EVENT_CHARACTERS_GENERIC: + case EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED: + /* decode */ + errn = exiv2gDecodeCharacters(&iStream, + &stateDecode, &val); + if (errn) { + DEBUG_PRINTF(("[Decode-ERROR-CH] %d \n", errn)); + return errn; + } + DEBUG_PRINTF((" CH: ")); + debugValue(&val, &stringTableDecode, stateDecode.elementStack[stateDecode.stackIndex]); + /* encode */ + errn = exiv2gEncodeCharacters(&oStream, + &stateEncode, &val); + + /* list value: special behavior */ + if (val.type == EXI_DATATYPE_LIST) { + for(k=0; k lastKnownQNameID) { + /* new qname */ + lastKnownQNameID = qnameID; + /* URI or LocalName known ? */ + errn = exiv2gGetLastQName(&qname); + if(qname->uri.type == EXI_NAME_ENTRY_TYPE_ID) { + /* local name only new */ + errn = exiv2gEncodeAttributeNS(&oStream, + &stateEncode, qname->uri.id, &qname->localName.str, &val); + } else { + /* both, uri and localname new */ + errn = exiv2gEncodeAttributeGeneric(&oStream, + &stateEncode, &qname->uri.str, &qname->localName.str, &val); + } + } else { + errn = exiv2gEncodeAttribute(&oStream, &stateEncode, + qnameID, &val); + } + break; + case EXI_EVENT_ATTRIBUTE_XSI_NIL: + /* decode */ + errn = exiv2gDecodeAttributeXsiNil(&iStream, + &stateDecode, &val); + if (errn) { + DEBUG_PRINTF(("[Decode-ERROR-AT-NIL] %d \n", errn)); + return errn; + } + DEBUG_PRINTF((" AT {xsi}nil == %i \n", val.boolean)); + /* encode */ + errn = exiv2gEncodeAttributeXsiNil(&oStream, + &stateEncode, &val); + break; + case EXI_EVENT_ATTRIBUTE_XSI_TYPE: + /* decode */ + errn = exiv2gDecodeAttributeXsiType(&iStream, + &stateDecode, &val); + if (errn) { + DEBUG_PRINTF(("[Decode-ERROR-AT-TYPE] %d \n", errn)); + return errn; + } + DEBUG_PRINTF((" AT {type}type == {%d}%d \n", val.eqname.namespaceURI, val.eqname.localPart)); + /* encode */ + errn = exiv2gEncodeAttributeXsiType(&oStream, + &stateEncode, &val); + break; + default: + /* ERROR */ + DEBUG_PRINTF(("[Unknown-Event] %d \n", event)); + return EXI_ERROR_UNKOWN_EVENT; + } + + } while (noEndOfDocument); + +#if EXI_STREAM == BYTE_ARRAY + /* write to file */ + writeBytesToFile(oStream.data, posEncode, argv[2]); +#endif +#if EXI_STREAM == FILE_STREAM + fclose(iStream.file); + fclose(oStream.file); +#endif + +#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION + /* free memory if any */ + exiFreeDynamicStringMemory(&val.str.miss); + exiFreeDynamicBinaryMemory(&val.binary); +#endif /* DYNAMIC_ALLOCATION */ + + + + return 0; +} + + + +static void debugValueInteger(exi_integer_t* integer) { + switch (integer->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + printf("uint8 : %d \n", integer->val.uint8); + break; + case EXI_UNSIGNED_INTEGER_16: + printf("uint16 : %d \n", integer->val.uint16); + break; + case EXI_UNSIGNED_INTEGER_32: + printf("uint32 : %d \n", integer->val.uint32); + break; + case EXI_UNSIGNED_INTEGER_64: + printf("uint64 : %ld \n", + (long unsigned int) integer->val.uint64); + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + printf("int8 : %d \n", integer->val.int8); + break; + case EXI_INTEGER_16: + printf("int16 : %d \n", integer->val.int16); + break; + case EXI_INTEGER_32: + printf("int32 : %d \n", integer->val.int32); + break; + case EXI_INTEGER_64: + printf("int64 : %ld \n", (long int) integer->val.int64); + break; + } +} + +static void debugValue(exi_value_t* val, exi_value_table_t* valueTable, uint16_t qnameID) { + exi_string_ucs_t sv; + +#if EXI_DEBUG == 1 + int i; + switch (val->type) { + case EXI_DATATYPE_NBIT_UNSIGNED_INTEGER: + case EXI_DATATYPE_UNSIGNED_INTEGER: + case EXI_DATATYPE_INTEGER: + debugValueInteger(&(val->integer)); + break; + case EXI_DATATYPE_BINARY_BASE64: + case EXI_DATATYPE_BINARY_HEX: + printf("Binary (len == %d) : ", val->binary.len); + for (i = 0; i < val->binary.len; i++) { + printf(" [%d]", val->binary.data[i]); + } + printf("\n"); + break; + case EXI_DATATYPE_BOOLEAN: + printf("Boolean : %d \n", val->boolean); + break; + case EXI_DATATYPE_DECIMAL: + /* Note: reversed fractional part */ + printf("Decimal : negative: %d followed by integral and reversed fractional part \n", val->decimal.negative); + debugValueInteger(&(val->decimal.integral)); + debugValueInteger(&(val->decimal.reverseFraction)); + break; + case EXI_DATATYPE_FLOAT: + if(val->float_me.exponent == FLOAT_EXPONENT_SPECIAL_VALUES) { + if (val->float_me.mantissa == FLOAT_MANTISSA_INFINITY) { + printf("Float Special: INF \n"); + } else if (val->float_me.mantissa == FLOAT_MANTISSA_MINUS_INFINITY) { + printf("Float Special: -INF \n"); + } else { + printf("Float Special: NaN \n"); + } + } else { + printf("Float : %ld E %d \n", (long int) val->float_me.mantissa, val->float_me.exponent); + } + break; + case EXI_DATATYPE_STRING: + case EXI_DATATYPE_RCS_STRING: + switch(val->str.type) { + case EXI_STRING_VALUE_MISS: + printf("String Miss (len==%d) : '", val->str.miss.len); + for (i = 0; i < val->str.miss.len; i++) { + printf("%c", (char) val->str.miss.codepoints[i]); + } + printf("'\n"); + break; + case EXI_STRING_VALUE_LOCAL_HIT: + printf("String LocalHit: %d", val->str.localID); +#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION + if( exiGetLocalStringValue(valueTable, qnameID, (uint16_t)(val->str.localID), &sv)) { + printf("ERROR when retrieving localvalue hit \n"); + } else { + printf(" --> '"); + for (i = 0; i < sv.len; i++) { + printf("%c", (char) sv.codepoints[i]); + } + printf("'"); + } +#endif /* DYNAMIC_ALLOCATION */ + printf("\n"); + break; + case EXI_STRING_VALUE_GLOBAL_HIT: + printf("String GlobalHit: %d ", val->str.globalID); +#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION + if( exiGetGlobalStringValue(valueTable, (uint16_t)(val->str.globalID), &sv)) { + printf("ERROR when retrieving global value hit \n"); + } else { + printf(" --> '"); + for (i = 0; i < sv.len; i++) { + printf("%c", (char) sv.codepoints[i]); + } + printf("'"); + } +#endif /* DYNAMIC_ALLOCATION */ + printf("\n"); + break; + } + break; + case EXI_DATATYPE_DATETIME: + switch(val->datetime.type) { + case EXI_DATETIME_GYEAR: + printf("Datetime gYear: %d", val->datetime.year); + break; + case EXI_DATETIME_GYEARMONTH: + printf("Datetime gYearMonth: Year=%d, MonthDay=%d", val->datetime.year, val->datetime.monthDay); + break; + case EXI_DATETIME_DATE: + printf("Datetime date: Year=%d, MonthDay=%d", val->datetime.year, val->datetime.monthDay); + break; + case EXI_DATETIME_DATETIME: + printf("Datetime dateTime: Year=%d, MonthDay=%d, Time=%d", val->datetime.year, val->datetime.monthDay, val->datetime.time); + break; + case EXI_DATETIME_GMONTH: + printf("Datetime gMonth: MonthDay=%d", val->datetime.monthDay); + break; + case EXI_DATETIME_GMONTHDAY: + printf("Datetime gMonthDay: MonthDay=%d", val->datetime.monthDay); + break; + case EXI_DATETIME_GDAY: + printf("Datetime gDay: MonthDay=%d", val->datetime.monthDay); + break; + case EXI_DATETIME_TIME: + printf("Datetime time: Time=%d", val->datetime.time); + break; + default: + printf("Datetime ?Type?"); + break; + } + if(val->datetime.presenceFractionalSecs) { + printf(", FractionalSecs=%d", val->datetime.fractionalSecs); + } + if(val->datetime.presenceTimezone) { + printf(", TimeZone=%d", val->datetime.timezone); + } + printf("\n"); + break; + case EXI_DATATYPE_ENUMERATION: + printf("Enumeration (id==%d) \n", val->enumeration); + break; + case EXI_DATATYPE_LIST: + printf("List (len==%d) \n", val->list.len); + break; + case EXI_DATATYPE_QNAME: + printf("QName (uri==%d, localName=%d) \n", val->eqname.namespaceURI, val->eqname.localPart); + break; + default: + printf(" ?Value-Type? \n"); + break; + } +#endif /*EXI_DEBUG*/ +} + + diff --git a/src/codec/v2gEXICoder.c b/src/codec/v2gEXICoder.c new file mode 100644 index 0000000..633b653 --- /dev/null +++ b/src/codec/v2gEXICoder.c @@ -0,0 +1,3167 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_v2g_CODER_C +#define EXI_v2g_CODER_C + +#include "v2gEXICoder.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_v2g_AddStringValue(exi_state_t* state, exi_string_ucs_t* sv, uint16_t qnameID) { + int errn = 0; +#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 +#if EXI_OPTION_VALUE_MAX_LENGTH != 0 + /* increment global string count */ +#if EXI_OPTION_VALUE_PARTITION_CAPACITY < 0 + state->stringTable.numberOfGlobalStrings++; +#else /* EXI_OPTION_VALUE_PARTITION_CAPACITY < 0 */ + if (state->stringTable.numberOfGlobalStrings < EXI_OPTION_VALUE_PARTITION_CAPACITY) { + state->stringTable.numberOfGlobalStrings++; + } +#endif /* EXI_OPTION_VALUE_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 */ + + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'qnameID' */ +#endif /* __GNUC__ */ + + +int exi_v2g_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; + } else { + errn = EXI_ERROR_OUT_OF_GRAMMAR_STACK; + } + + return errn; +} + +int exi_v2g_PopStack(exi_state_t* state) { + int errn = 0; + if (state->stackIndex >= 1) { + state->stackIndex--; + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + return errn; +} + +int exi_v2g_HandleXsiNilTrue(exi_state_t* state) { + switch (state->grammarStack[state->stackIndex]) { + case 773: + state->grammarStack[state->stackIndex] = 775; + return 0; + + } + + return EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_NIL; +} + +int exi_v2g_HandleXsiType(exi_state_t* state, exi_eqname_t* xsiType) { + switch(xsiType->namespaceURI) { + case 0: + switch(xsiType->localPart) { + } + break; + case 1: + switch(xsiType->localPart) { + } + break; + case 2: + switch(xsiType->localPart) { + } + break; + case 3: + switch(xsiType->localPart) { + case 0: + /* {3}0,ENTITIES */ + state->grammarStack[state->stackIndex] = 776; + break; + case 1: + /* {3}1,ENTITY */ + state->grammarStack[state->stackIndex] = 118; + break; + case 2: + /* {3}2,ID */ + state->grammarStack[state->stackIndex] = 118; + break; + case 3: + /* {3}3,IDREF */ + state->grammarStack[state->stackIndex] = 118; + break; + case 4: + /* {3}4,IDREFS */ + state->grammarStack[state->stackIndex] = 776; + break; + case 5: + /* {3}5,NCName */ + state->grammarStack[state->stackIndex] = 118; + break; + case 6: + /* {3}6,NMTOKEN */ + state->grammarStack[state->stackIndex] = 118; + break; + case 7: + /* {3}7,NMTOKENS */ + state->grammarStack[state->stackIndex] = 776; + break; + case 8: + /* {3}8,NOTATION */ + state->grammarStack[state->stackIndex] = 118; + break; + case 9: + /* {3}9,Name */ + state->grammarStack[state->stackIndex] = 118; + break; + case 10: + /* {3}10,QName */ + state->grammarStack[state->stackIndex] = 118; + break; + case 11: + /* {3}11,anySimpleType */ + state->grammarStack[state->stackIndex] = 118; + break; + case 12: + /* {3}12,anyType */ + state->grammarStack[state->stackIndex] = 778; + break; + case 13: + /* {3}13,anyURI */ + state->grammarStack[state->stackIndex] = 118; + break; + case 14: + /* {3}14,base64Binary */ + state->grammarStack[state->stackIndex] = 37; + break; + case 15: + /* {3}15,boolean */ + state->grammarStack[state->stackIndex] = 29; + break; + case 16: + /* {3}16,byte */ + state->grammarStack[state->stackIndex] = 779; + break; + case 17: + /* {3}17,date */ + state->grammarStack[state->stackIndex] = 780; + break; + case 18: + /* {3}18,dateTime */ + state->grammarStack[state->stackIndex] = 782; + break; + case 19: + /* {3}19,decimal */ + state->grammarStack[state->stackIndex] = 784; + break; + case 20: + /* {3}20,double */ + state->grammarStack[state->stackIndex] = 786; + break; + case 21: + /* {3}21,duration */ + state->grammarStack[state->stackIndex] = 118; + break; + case 22: + /* {3}22,float */ + state->grammarStack[state->stackIndex] = 786; + break; + case 23: + /* {3}23,gDay */ + state->grammarStack[state->stackIndex] = 788; + break; + case 24: + /* {3}24,gMonth */ + state->grammarStack[state->stackIndex] = 790; + break; + case 25: + /* {3}25,gMonthDay */ + state->grammarStack[state->stackIndex] = 792; + break; + case 26: + /* {3}26,gYear */ + state->grammarStack[state->stackIndex] = 794; + break; + case 27: + /* {3}27,gYearMonth */ + state->grammarStack[state->stackIndex] = 796; + break; + case 28: + /* {3}28,hexBinary */ + state->grammarStack[state->stackIndex] = 313; + break; + case 29: + /* {3}29,int */ + state->grammarStack[state->stackIndex] = 219; + break; + case 30: + /* {3}30,integer */ + state->grammarStack[state->stackIndex] = 219; + break; + case 31: + /* {3}31,language */ + state->grammarStack[state->stackIndex] = 118; + break; + case 32: + /* {3}32,long */ + state->grammarStack[state->stackIndex] = 219; + break; + case 33: + /* {3}33,negativeInteger */ + state->grammarStack[state->stackIndex] = 219; + break; + case 34: + /* {3}34,nonNegativeInteger */ + state->grammarStack[state->stackIndex] = 161; + break; + case 35: + /* {3}35,nonPositiveInteger */ + state->grammarStack[state->stackIndex] = 219; + break; + case 36: + /* {3}36,normalizedString */ + state->grammarStack[state->stackIndex] = 118; + break; + case 37: + /* {3}37,positiveInteger */ + state->grammarStack[state->stackIndex] = 161; + break; + case 38: + /* {3}38,short */ + state->grammarStack[state->stackIndex] = 219; + break; + case 39: + /* {3}39,string */ + state->grammarStack[state->stackIndex] = 118; + break; + case 40: + /* {3}40,time */ + state->grammarStack[state->stackIndex] = 798; + break; + case 41: + /* {3}41,token */ + state->grammarStack[state->stackIndex] = 118; + break; + case 42: + /* {3}42,unsignedByte */ + state->grammarStack[state->stackIndex] = 800; + break; + case 43: + /* {3}43,unsignedInt */ + state->grammarStack[state->stackIndex] = 161; + break; + case 44: + /* {3}44,unsignedLong */ + state->grammarStack[state->stackIndex] = 161; + break; + case 45: + /* {3}45,unsignedShort */ + state->grammarStack[state->stackIndex] = 161; + break; + } + break; + case 4: + switch(xsiType->localPart) { + case 1: + /* {4}1,CanonicalizationMethodType */ + state->grammarStack[state->stackIndex] = 66; + break; + case 2: + /* {4}2,CryptoBinary */ + state->grammarStack[state->stackIndex] = 37; + break; + case 4: + /* {4}4,DSAKeyValueType */ + state->grammarStack[state->stackIndex] = 255; + break; + case 6: + /* {4}6,DigestMethodType */ + state->grammarStack[state->stackIndex] = 66; + break; + case 8: + /* {4}8,DigestValueType */ + state->grammarStack[state->stackIndex] = 37; + break; + case 12: + /* {4}12,HMACOutputLengthType */ + state->grammarStack[state->stackIndex] = 219; + break; + case 15: + /* {4}15,KeyInfoType */ + state->grammarStack[state->stackIndex] = 268; + break; + case 18: + /* {4}18,KeyValueType */ + state->grammarStack[state->stackIndex] = 271; + break; + case 20: + /* {4}20,ManifestType */ + state->grammarStack[state->stackIndex] = 300; + break; + case 24: + /* {4}24,ObjectType */ + state->grammarStack[state->stackIndex] = 321; + break; + case 27: + /* {4}27,PGPDataType */ + state->grammarStack[state->stackIndex] = 291; + break; + case 33: + /* {4}33,RSAKeyValueType */ + state->grammarStack[state->stackIndex] = 273; + break; + case 35: + /* {4}35,ReferenceType */ + state->grammarStack[state->stackIndex] = 302; + break; + case 37: + /* {4}37,RetrievalMethodType */ + state->grammarStack[state->stackIndex] = 277; + break; + case 39: + /* {4}39,SPKIDataType */ + state->grammarStack[state->stackIndex] = 295; + break; + case 44: + /* {4}44,SignatureMethodType */ + state->grammarStack[state->stackIndex] = 742; + break; + case 46: + /* {4}46,SignaturePropertiesType */ + state->grammarStack[state->stackIndex] = 751; + break; + case 48: + /* {4}48,SignaturePropertyType */ + state->grammarStack[state->stackIndex] = 753; + break; + case 49: + /* {4}49,SignatureType */ + state->grammarStack[state->stackIndex] = 737; + break; + case 51: + /* {4}51,SignatureValueType */ + state->grammarStack[state->stackIndex] = 747; + break; + case 53: + /* {4}53,SignedInfoType */ + state->grammarStack[state->stackIndex] = 739; + break; + case 55: + /* {4}55,TransformType */ + state->grammarStack[state->stackIndex] = 281; + break; + case 57: + /* {4}57,TransformsType */ + state->grammarStack[state->stackIndex] = 280; + break; + case 61: + /* {4}61,X509DataType */ + state->grammarStack[state->stackIndex] = 287; + break; + case 64: + /* {4}64,X509IssuerSerialType */ + state->grammarStack[state->stackIndex] = 73; + break; + } + break; + case 5: + switch(xsiType->localPart) { + case 2: + /* {5}2,AuthorizationReqType */ + state->grammarStack[state->stackIndex] = 35; + break; + case 4: + /* {5}4,AuthorizationResType */ + state->grammarStack[state->stackIndex] = 40; + break; + case 5: + /* {5}5,BodyBaseType */ + state->grammarStack[state->stackIndex] = 209; + break; + case 7: + /* {5}7,BodyType */ + state->grammarStack[state->stackIndex] = 768; + break; + case 10: + /* {5}10,CableCheckReqType */ + state->grammarStack[state->stackIndex] = 46; + break; + case 12: + /* {5}12,CableCheckResType */ + state->grammarStack[state->stackIndex] = 56; + break; + case 14: + /* {5}14,CertificateInstallationReqType */ + state->grammarStack[state->stackIndex] = 69; + break; + case 16: + /* {5}16,CertificateInstallationResType */ + state->grammarStack[state->stackIndex] = 99; + break; + case 18: + /* {5}18,CertificateUpdateReqType */ + state->grammarStack[state->stackIndex] = 120; + break; + case 20: + /* {5}20,CertificateUpdateResType */ + state->grammarStack[state->stackIndex] = 124; + break; + case 22: + /* {5}22,ChargeParameterDiscoveryReqType */ + state->grammarStack[state->stackIndex] = 132; + break; + case 24: + /* {5}24,ChargeParameterDiscoveryResType */ + state->grammarStack[state->stackIndex] = 150; + break; + case 31: + /* {5}31,ChargingStatusReqType */ + state->grammarStack[state->stackIndex] = 209; + break; + case 33: + /* {5}33,ChargingStatusResType */ + state->grammarStack[state->stackIndex] = 210; + break; + case 37: + /* {5}37,CurrentDemandReqType */ + state->grammarStack[state->stackIndex] = 225; + break; + case 39: + /* {5}39,CurrentDemandResType */ + state->grammarStack[state->stackIndex] = 236; + break; + case 67: + /* {5}67,MeteringReceiptReqType */ + state->grammarStack[state->stackIndex] = 311; + break; + case 69: + /* {5}69,MeteringReceiptResType */ + state->grammarStack[state->stackIndex] = 318; + break; + case 72: + /* {5}72,PaymentDetailsReqType */ + state->grammarStack[state->stackIndex] = 324; + break; + case 74: + /* {5}74,PaymentDetailsResType */ + state->grammarStack[state->stackIndex] = 327; + break; + case 77: + /* {5}77,PaymentServiceSelectionReqType */ + state->grammarStack[state->stackIndex] = 331; + break; + case 79: + /* {5}79,PaymentServiceSelectionResType */ + state->grammarStack[state->stackIndex] = 356; + break; + case 81: + /* {5}81,PowerDeliveryReqType */ + state->grammarStack[state->stackIndex] = 358; + break; + case 83: + /* {5}83,PowerDeliveryResType */ + state->grammarStack[state->stackIndex] = 318; + break; + case 85: + /* {5}85,PreChargeReqType */ + state->grammarStack[state->stackIndex] = 394; + break; + case 87: + /* {5}87,PreChargeResType */ + state->grammarStack[state->stackIndex] = 398; + break; + case 100: + /* {5}100,ServiceDetailReqType */ + state->grammarStack[state->stackIndex] = 402; + break; + case 102: + /* {5}102,ServiceDetailResType */ + state->grammarStack[state->stackIndex] = 404; + break; + case 104: + /* {5}104,ServiceDiscoveryReqType */ + state->grammarStack[state->stackIndex] = 687; + break; + case 106: + /* {5}106,ServiceDiscoveryResType */ + state->grammarStack[state->stackIndex] = 692; + break; + case 113: + /* {5}113,SessionSetupReqType */ + state->grammarStack[state->stackIndex] = 729; + break; + case 115: + /* {5}115,SessionSetupResType */ + state->grammarStack[state->stackIndex] = 731; + break; + case 117: + /* {5}117,SessionStopReqType */ + state->grammarStack[state->stackIndex] = 735; + break; + case 119: + /* {5}119,SessionStopResType */ + state->grammarStack[state->stackIndex] = 356; + break; + case 121: + /* {5}121,WeldingDetectionReqType */ + state->grammarStack[state->stackIndex] = 46; + break; + case 123: + /* {5}123,WeldingDetectionResType */ + state->grammarStack[state->stackIndex] = 398; + break; + } + break; + case 6: + switch(xsiType->localPart) { + case 1: + /* {6}1,AC_EVChargeParameterType */ + state->grammarStack[state->stackIndex] = 2; + break; + case 3: + /* {6}3,AC_EVSEChargeParameterType */ + state->grammarStack[state->stackIndex] = 23; + break; + case 5: + /* {6}5,AC_EVSEStatusType */ + state->grammarStack[state->stackIndex] = 24; + break; + case 9: + /* {6}9,CertificateChainType */ + state->grammarStack[state->stackIndex] = 101; + break; + case 10: + /* {6}10,ChargeServiceType */ + state->grammarStack[state->stackIndex] = 698; + break; + case 15: + /* {6}15,ChargingProfileType */ + state->grammarStack[state->stackIndex] = 361; + break; + case 17: + /* {6}17,ConsumptionCostType */ + state->grammarStack[state->stackIndex] = 179; + break; + case 18: + /* {6}18,ContractSignatureEncryptedPrivateKeyType */ + state->grammarStack[state->stackIndex] = 112; + break; + case 20: + /* {6}20,CostType */ + state->grammarStack[state->stackIndex] = 181; + break; + case 22: + /* {6}22,DC_EVChargeParameterType */ + state->grammarStack[state->stackIndex] = 137; + break; + case 23: + /* {6}23,DC_EVErrorCodeType */ + state->grammarStack[state->stackIndex] = 49; + break; + case 25: + /* {6}25,DC_EVPowerDeliveryParameterType */ + state->grammarStack[state->stackIndex] = 251; + break; + case 27: + /* {6}27,DC_EVSEChargeParameterType */ + state->grammarStack[state->stackIndex] = 198; + break; + case 29: + /* {6}29,DC_EVSEStatusCodeType */ + state->grammarStack[state->stackIndex] = 49; + break; + case 30: + /* {6}30,DC_EVSEStatusType */ + state->grammarStack[state->stackIndex] = 58; + break; + case 32: + /* {6}32,DC_EVStatusType */ + state->grammarStack[state->stackIndex] = 47; + break; + case 34: + /* {6}34,DiffieHellmanPublickeyType */ + state->grammarStack[state->stackIndex] = 112; + break; + case 36: + /* {6}36,EMAIDType */ + state->grammarStack[state->stackIndex] = 116; + break; + case 39: + /* {6}39,EVChargeParameterType */ + state->grammarStack[state->stackIndex] = 801; + break; + case 50: + /* {6}50,EVPowerDeliveryParameterType */ + state->grammarStack[state->stackIndex] = 209; + break; + case 54: + /* {6}54,EVSEChargeParameterType */ + state->grammarStack[state->stackIndex] = 209; + break; + case 66: + /* {6}66,EVSENotificationType */ + state->grammarStack[state->stackIndex] = 26; + break; + case 68: + /* {6}68,EVSEProcessingType */ + state->grammarStack[state->stackIndex] = 26; + break; + case 71: + /* {6}71,EVSEStatusType */ + state->grammarStack[state->stackIndex] = 802; + break; + case 73: + /* {6}73,EVStatusType */ + state->grammarStack[state->stackIndex] = 209; + break; + case 75: + /* {6}75,EnergyTransferModeType */ + state->grammarStack[state->stackIndex] = 134; + break; + case 77: + /* {6}77,EntryType */ + state->grammarStack[state->stackIndex] = 803; + break; + case 83: + /* {6}83,IntervalType */ + state->grammarStack[state->stackIndex] = 209; + break; + case 84: + /* {6}84,ListOfRootCertificateIDsType */ + state->grammarStack[state->stackIndex] = 72; + break; + case 86: + /* {6}86,MeterInfoType */ + state->grammarStack[state->stackIndex] = 215; + break; + case 92: + /* {6}92,NotificationType */ + state->grammarStack[state->stackIndex] = 762; + break; + case 97: + /* {6}97,PMaxScheduleEntryType */ + state->grammarStack[state->stackIndex] = 159; + break; + case 98: + /* {6}98,PMaxScheduleType */ + state->grammarStack[state->stackIndex] = 158; + break; + case 102: + /* {6}102,ParameterSetType */ + state->grammarStack[state->stackIndex] = 408; + break; + case 103: + /* {6}103,ParameterType */ + state->grammarStack[state->stackIndex] = 410; + break; + case 105: + /* {6}105,PaymentOptionListType */ + state->grammarStack[state->stackIndex] = 694; + break; + case 106: + /* {6}106,PhysicalValueType */ + state->grammarStack[state->stackIndex] = 8; + break; + case 108: + /* {6}108,ProfileEntryType */ + state->grammarStack[state->stackIndex] = 362; + break; + case 111: + /* {6}111,RelativeTimeIntervalType */ + state->grammarStack[state->stackIndex] = 160; + break; + case 113: + /* {6}113,SAIDType */ + state->grammarStack[state->stackIndex] = 155; + break; + case 115: + /* {6}115,SAScheduleListType */ + state->grammarStack[state->stackIndex] = 153; + break; + case 118: + /* {6}118,SAScheduleTupleType */ + state->grammarStack[state->stackIndex] = 154; + break; + case 120: + /* {6}120,SASchedulesType */ + state->grammarStack[state->stackIndex] = 209; + break; + case 124: + /* {6}124,SalesTariffEntryType */ + state->grammarStack[state->stackIndex] = 176; + break; + case 126: + /* {6}126,SalesTariffType */ + state->grammarStack[state->stackIndex] = 169; + break; + case 128: + /* {6}128,SelectedServiceListType */ + state->grammarStack[state->stackIndex] = 335; + break; + case 129: + /* {6}129,SelectedServiceType */ + state->grammarStack[state->stackIndex] = 336; + break; + case 133: + /* {6}133,ServiceListType */ + state->grammarStack[state->stackIndex] = 713; + break; + case 135: + /* {6}135,ServiceParameterListType */ + state->grammarStack[state->stackIndex] = 407; + break; + case 137: + /* {6}137,ServiceType */ + state->grammarStack[state->stackIndex] = 804; + break; + case 140: + /* {6}140,SubCertificatesType */ + state->grammarStack[state->stackIndex] = 104; + break; + case 142: + /* {6}142,SupportedEnergyTransferModeType */ + state->grammarStack[state->stackIndex] = 704; + break; + case 151: + /* {6}151,certificateType */ + state->grammarStack[state->stackIndex] = 37; + break; + case 152: + /* {6}152,chargeProgressType */ + state->grammarStack[state->stackIndex] = 26; + break; + case 153: + /* {6}153,chargingSessionType */ + state->grammarStack[state->stackIndex] = 332; + break; + case 155: + /* {6}155,costKindType */ + state->grammarStack[state->stackIndex] = 26; + break; + case 156: + /* {6}156,dHpublickeyType */ + state->grammarStack[state->stackIndex] = 37; + break; + case 158: + /* {6}158,eMAIDType */ + state->grammarStack[state->stackIndex] = 118; + break; + case 159: + /* {6}159,evccIDType */ + state->grammarStack[state->stackIndex] = 313; + break; + case 160: + /* {6}160,evseIDType */ + state->grammarStack[state->stackIndex] = 118; + break; + case 161: + /* {6}161,faultCodeType */ + state->grammarStack[state->stackIndex] = 26; + break; + case 162: + /* {6}162,faultMsgType */ + state->grammarStack[state->stackIndex] = 118; + break; + case 163: + /* {6}163,genChallengeType */ + state->grammarStack[state->stackIndex] = 37; + break; + case 165: + /* {6}165,isolationLevelType */ + state->grammarStack[state->stackIndex] = 61; + break; + case 166: + /* {6}166,maxNumPhasesType */ + state->grammarStack[state->stackIndex] = 365; + break; + case 167: + /* {6}167,meterIDType */ + state->grammarStack[state->stackIndex] = 118; + break; + case 168: + /* {6}168,meterStatusType */ + state->grammarStack[state->stackIndex] = 219; + break; + case 169: + /* {6}169,paymentOptionType */ + state->grammarStack[state->stackIndex] = 332; + break; + case 170: + /* {6}170,percentValueType */ + state->grammarStack[state->stackIndex] = 52; + break; + case 172: + /* {6}172,privateKeyType */ + state->grammarStack[state->stackIndex] = 37; + break; + case 173: + /* {6}173,responseCodeType */ + state->grammarStack[state->stackIndex] = 41; + break; + case 174: + /* {6}174,serviceCategoryType */ + state->grammarStack[state->stackIndex] = 689; + break; + case 175: + /* {6}175,serviceIDType */ + state->grammarStack[state->stackIndex] = 161; + break; + case 176: + /* {6}176,serviceNameType */ + state->grammarStack[state->stackIndex] = 118; + break; + case 177: + /* {6}177,serviceScopeType */ + state->grammarStack[state->stackIndex] = 118; + break; + case 178: + /* {6}178,sessionIDType */ + state->grammarStack[state->stackIndex] = 313; + break; + case 180: + /* {6}180,sigMeterReadingType */ + state->grammarStack[state->stackIndex] = 37; + break; + case 184: + /* {6}184,tariffDescriptionType */ + state->grammarStack[state->stackIndex] = 118; + break; + case 185: + /* {6}185,unitMultiplierType */ + state->grammarStack[state->stackIndex] = 9; + break; + case 186: + /* {6}186,unitSymbolType */ + state->grammarStack[state->stackIndex] = 12; + break; + case 187: + /* {6}187,valueType */ + state->grammarStack[state->stackIndex] = 134; + break; + } + break; + case 7: + switch(xsiType->localPart) { + } + break; + case 8: + switch(xsiType->localPart) { + case 0: + /* {8}0,MessageHeaderType */ + state->grammarStack[state->stackIndex] = 760; + break; + } + break; + } + + + return 0; +} + + +int exi_v2g_RetrieveAndPushGlobalGrammar(exi_state_t* state, uint16_t qnameID) { + int errn = EXI_ERROR_OUT_OF_RUNTIME_GRAMMAR_STACK; + int i; + int found = 1; + + /* schema-informed global element --> Stack ID */ + switch(qnameID) { + case 59: + errn = exi_v2g_PushStack(state, 66, 59); + break; + case 62: + errn = exi_v2g_PushStack(state, 255, 62); + break; + case 64: + errn = exi_v2g_PushStack(state, 66, 64); + break; + case 66: + errn = exi_v2g_PushStack(state, 37, 66); + break; + case 73: + errn = exi_v2g_PushStack(state, 268, 73); + break; + case 75: + errn = exi_v2g_PushStack(state, 74, 75); + break; + case 76: + errn = exi_v2g_PushStack(state, 271, 76); + break; + case 78: + errn = exi_v2g_PushStack(state, 300, 78); + break; + case 80: + errn = exi_v2g_PushStack(state, 74, 80); + break; + case 82: + errn = exi_v2g_PushStack(state, 321, 82); + break; + case 85: + errn = exi_v2g_PushStack(state, 291, 85); + break; + case 91: + errn = exi_v2g_PushStack(state, 273, 91); + break; + case 93: + errn = exi_v2g_PushStack(state, 302, 93); + break; + case 95: + errn = exi_v2g_PushStack(state, 277, 95); + break; + case 97: + errn = exi_v2g_PushStack(state, 295, 97); + break; + case 101: + errn = exi_v2g_PushStack(state, 737, 101); + break; + case 102: + errn = exi_v2g_PushStack(state, 742, 102); + break; + case 104: + errn = exi_v2g_PushStack(state, 751, 104); + break; + case 106: + errn = exi_v2g_PushStack(state, 753, 106); + break; + case 109: + errn = exi_v2g_PushStack(state, 747, 109); + break; + case 111: + errn = exi_v2g_PushStack(state, 739, 111); + break; + case 113: + errn = exi_v2g_PushStack(state, 281, 113); + break; + case 115: + errn = exi_v2g_PushStack(state, 280, 115); + break; + case 119: + errn = exi_v2g_PushStack(state, 287, 119); + break; + case 130: + errn = exi_v2g_PushStack(state, 35, 130); + break; + case 132: + errn = exi_v2g_PushStack(state, 40, 132); + break; + case 135: + errn = exi_v2g_PushStack(state, 45, 135); + break; + case 138: + errn = exi_v2g_PushStack(state, 46, 138); + break; + case 140: + errn = exi_v2g_PushStack(state, 56, 140); + break; + case 142: + errn = exi_v2g_PushStack(state, 69, 142); + break; + case 144: + errn = exi_v2g_PushStack(state, 99, 144); + break; + case 146: + errn = exi_v2g_PushStack(state, 120, 146); + break; + case 148: + errn = exi_v2g_PushStack(state, 124, 148); + break; + case 150: + errn = exi_v2g_PushStack(state, 132, 150); + break; + case 152: + errn = exi_v2g_PushStack(state, 150, 152); + break; + case 159: + errn = exi_v2g_PushStack(state, 209, 159); + break; + case 161: + errn = exi_v2g_PushStack(state, 210, 161); + break; + case 165: + errn = exi_v2g_PushStack(state, 225, 165); + break; + case 167: + errn = exi_v2g_PushStack(state, 236, 167); + break; + case 195: + errn = exi_v2g_PushStack(state, 311, 195); + break; + case 197: + errn = exi_v2g_PushStack(state, 318, 197); + break; + case 200: + errn = exi_v2g_PushStack(state, 324, 200); + break; + case 202: + errn = exi_v2g_PushStack(state, 327, 202); + break; + case 205: + errn = exi_v2g_PushStack(state, 331, 205); + break; + case 207: + errn = exi_v2g_PushStack(state, 356, 207); + break; + case 209: + errn = exi_v2g_PushStack(state, 358, 209); + break; + case 211: + errn = exi_v2g_PushStack(state, 318, 211); + break; + case 213: + errn = exi_v2g_PushStack(state, 394, 213); + break; + case 215: + errn = exi_v2g_PushStack(state, 398, 215); + break; + case 228: + errn = exi_v2g_PushStack(state, 402, 228); + break; + case 230: + errn = exi_v2g_PushStack(state, 404, 230); + break; + case 232: + errn = exi_v2g_PushStack(state, 687, 232); + break; + case 234: + errn = exi_v2g_PushStack(state, 692, 234); + break; + case 241: + errn = exi_v2g_PushStack(state, 729, 241); + break; + case 243: + errn = exi_v2g_PushStack(state, 731, 243); + break; + case 245: + errn = exi_v2g_PushStack(state, 735, 245); + break; + case 247: + errn = exi_v2g_PushStack(state, 356, 247); + break; + case 249: + errn = exi_v2g_PushStack(state, 46, 249); + break; + case 251: + errn = exi_v2g_PushStack(state, 398, 251); + break; + case 254: + errn = exi_v2g_PushStack(state, 2, 254); + break; + case 256: + errn = exi_v2g_PushStack(state, 23, 256); + break; + case 258: + errn = exi_v2g_PushStack(state, 24, 258); + break; + case 275: + errn = exi_v2g_PushStack(state, 137, 275); + break; + case 278: + errn = exi_v2g_PushStack(state, 251, 278); + break; + case 280: + errn = exi_v2g_PushStack(state, 198, 280); + break; + case 282: + errn = exi_v2g_PushStack(state, 58, 282); + break; + case 285: + errn = exi_v2g_PushStack(state, 47, 285); + break; + case 292: + errn = exi_v2g_PushStack(state, 147, 292); + break; + case 303: + errn = exi_v2g_PushStack(state, 45, 303); + break; + case 307: + errn = exi_v2g_PushStack(state, 45, 307); + break; + case 323: + errn = exi_v2g_PushStack(state, 263, 323); + break; + case 326: + errn = exi_v2g_PushStack(state, 45, 326); + break; + case 330: + errn = exi_v2g_PushStack(state, 266, 330); + break; + case 350: + errn = exi_v2g_PushStack(state, 159, 350); + break; + case 364: + errn = exi_v2g_PushStack(state, 160, 364); + break; + case 368: + errn = exi_v2g_PushStack(state, 153, 368); + break; + case 373: + errn = exi_v2g_PushStack(state, 45, 373); + break; + case 377: + errn = exi_v2g_PushStack(state, 176, 377); + break; + case 398: + errn = exi_v2g_PushStack(state, 45, 398); + break; + case 444: + errn = exi_v2g_PushStack(state, 759, 444); + break; + + default: + found = 0; + break; + } + + if (!found) { + /* retrieve existing grammar for qname if any available */ + for(i=0; inumberOfRuntimeGrammars && !found; i+=2) { + if( state->runtimeGrammars[i].qnameID == qnameID ) { + /* runtime grammar exists already */ + + /* push element stack */ + errn = exi_v2g_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; + + /* push element stack */ + errn = exi_v2g_PushStack(state, (int16_t)((state->numberOfRuntimeGrammars+1) * (-1)), qnameID); + + state->numberOfRuntimeGrammars = (uint16_t)(state->numberOfRuntimeGrammars + 2); + } + } + + return errn; +} + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'qnameID' */ +#endif /* __GNUC__ */ +int exi_v2g_LearnAttribute(exi_state_t* state, 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)); + + if (uriID == 2 && localID == 1 ) { + /* xsi:type: learned just once */ + if(!state->runtimeGrammars[runtimeID].hasXsiType) { + /* hasXsiType stores production position PLUS 1 (one) */ + state->runtimeGrammars[runtimeID].hasXsiType = ++state->runtimeGrammars[runtimeID].numberOfProductions; + } + } else { + /* increment production count */ + ++state->runtimeGrammars[runtimeID].numberOfProductions; + /* TODO store production information. Note: not necessary in restricted profile */ + } + } else { + /* schema-informed grammar do no evolve */ + } + + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'qnameID' */ +#endif /* __GNUC__ */ + +int exi_v2g_LearnEndElement(exi_state_t* state) { + int errn = 0; + int16_t currentID = state->grammarStack[state->stackIndex]; + int16_t runtimeID; + + if (currentID < 0) { + if( exi_v2g_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, ... + * 1) StartTagContent (e.g., -1, -3, -5, ...) + * 2) ElementContent (e.g., -2, -4, -6) + * + */ + +int exi_v2g_IsStartContent(int16_t ruleID) { + /* Note: only for built-in element grammars */ + return (ruleID % 2 != 0); +} + +int exi_v2g_MoveToElementContentRule(exi_state_t* state) { + int errn = 0; + int16_t currentID = state->grammarStack[state->stackIndex]; + int found = 1; + + + switch (currentID) { + case 281: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 282: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 283; + break; + case 104: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + state->grammarStack[state->stackIndex] = 108; + break; + case 160: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + state->grammarStack[state->stackIndex] = 163; + break; + case 713: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + state->grammarStack[state->stackIndex] = 727; + break; + case 762: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + state->grammarStack[state->stackIndex] = 764; + break; + case 154: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + state->grammarStack[state->stackIndex] = 193; + break; + case 116: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] --> FirstStartTag[CHARACTERS[STRING]] */ + case 117: + /* StartTag[CHARACTERS[STRING]] --> FirstStartTag[CHARACTERS[STRING]] */ + state->grammarStack[state->stackIndex] = 118; + break; + case 2: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + state->grammarStack[state->stackIndex] = 21; + break; + case 0: + /* Document[START_DOCUMENT] --> Document[START_DOCUMENT] */ + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT_GENERIC] --> DocContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT_GENERIC] */ + case 4: + /* Element[END_ELEMENT] --> Element[END_ELEMENT] */ + case 5: + /* Element[] --> Element[] */ + case 6: + /* Element[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */ + case 7: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + case 10: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 11: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit)] */ + case 13: + /* Element[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + case 14: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value)] */ + case 16: + /* Element[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */ + case 17: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + case 18: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage)] */ + case 19: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent)] */ + case 20: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent)] */ + case 21: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + case 22: + /* DocEnd[END_DOCUMENT] --> DocEnd[END_DOCUMENT] */ + case 25: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + case 27: + /* Element[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + case 28: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD)] */ + case 30: + /* Element[CHARACTERS[BOOLEAN]] --> Element[CHARACTERS[BOOLEAN]] */ + case 31: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 32: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage)] */ + case 33: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent)] */ + case 34: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + case 38: + /* Element[CHARACTERS[BINARY_BASE64]] --> Element[CHARACTERS[BINARY_BASE64]] */ + case 39: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + case 42: + /* Element[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + case 43: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + case 44: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 48: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode)] */ + case 50: + /* Element[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + case 51: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC)] */ + case 53: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 54: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + case 55: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 57: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + case 59: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + case 60: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + case 62: + /* Element[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + case 63: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + case 64: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 65: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 68: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 71: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */ + case 75: + /* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */ + case 76: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber)] */ + case 77: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + case 78: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 79: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 80: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 81: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 82: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 83: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 84: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 85: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 86: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 87: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 88: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 89: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 90: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 91: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 92: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 93: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 94: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 95: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 96: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 97: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + case 98: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + case 100: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + case 103: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), END_ELEMENT] */ + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 107: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 108: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 109: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 110: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 111: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + case 114: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + case 115: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 119: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 122: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 123: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 125: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + case 126: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 127: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + case 128: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + case 129: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), END_ELEMENT] */ + case 131: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 133: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + case 135: + /* Element[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + case 136: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter)] */ + case 138: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 139: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit)] */ + case 140: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + case 141: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + case 142: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 143: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 144: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 145: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 146: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + case 149: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + case 151: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + case 152: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */ + case 156: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 157: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule)] */ + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), END_ELEMENT] */ + case 163: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + case 164: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax)] */ + case 165: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 166: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] */ + case 167: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + case 168: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), END_ELEMENT] */ + case 171: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + case 172: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + case 174: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 175: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + case 177: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 180: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost)] */ + case 182: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount)] */ + case 183: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), END_ELEMENT] */ + case 184: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + case 185: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + case 187: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 189: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 190: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 191: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), END_ELEMENT] */ + case 192: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + case 193: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + case 194: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + case 195: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + case 196: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + case 197: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */ + case 199: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit)] */ + case 200: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit)] */ + case 201: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit)] */ + case 202: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit)] */ + case 203: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit)] */ + case 204: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + case 205: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + case 206: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] */ + case 207: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + case 208: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 211: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 212: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + case 213: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 214: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 216: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 217: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 220: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 221: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + case 222: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 223: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 224: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 226: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + case 227: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 228: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 229: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 230: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 231: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 232: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 233: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 234: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 235: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 237: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + case 238: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + case 239: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent)] */ + case 240: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved)] */ + case 241: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved)] */ + case 242: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved)] */ + case 243: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 244: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 245: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 246: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 247: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + case 249: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + case 250: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 252: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + case 253: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + case 254: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 256: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q)] */ + case 257: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + case 258: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + case 259: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + case 260: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + case 261: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter)] */ + case 262: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + case 264: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + case 265: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 267: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 270: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 272: + /* Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 274: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent)] */ + case 275: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + case 276: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 283: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 284: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] */ + case 285: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + case 286: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 288: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] */ + case 290: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */ + case 292: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] */ + case 293: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT] --> Element[START_ELEMENT_GENERIC, END_ELEMENT] */ + case 294: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + case 296: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] */ + case 297: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */ + case 298: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + case 299: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 306: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 307: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue)] */ + case 308: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 309: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */ + case 310: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + case 314: + /* Element[CHARACTERS[BINARY_HEX]] --> Element[CHARACTERS[BINARY_HEX]] */ + case 315: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + case 316: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + case 317: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + case 319: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus)] */ + case 320: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 325: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 326: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 328: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge)] */ + case 329: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp)] */ + case 330: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 333: + /* Element[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + case 334: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList)] */ + case 337: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), END_ELEMENT] */ + case 338: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 339: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 340: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 341: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 342: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 343: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 344: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 345: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 346: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 347: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 348: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 349: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 350: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 351: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 352: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 353: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 354: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + case 355: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + case 357: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 359: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + case 360: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + case 363: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + case 364: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), END_ELEMENT] */ + case 366: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 367: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + case 368: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 369: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 370: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 371: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 372: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 373: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 374: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 375: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 376: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 377: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 378: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 379: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 380: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 381: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 382: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 383: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 384: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 385: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 386: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 387: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 388: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 389: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 390: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 391: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + case 392: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + case 393: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + case 395: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 396: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + case 397: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 399: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + case 400: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + case 401: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 403: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + case 405: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + case 406: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), END_ELEMENT] */ + case 409: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter)] */ + case 413: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 414: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */ + case 415: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 416: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 417: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 418: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 419: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 420: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 421: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 422: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 423: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 424: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 425: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 426: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 427: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 428: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 429: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 430: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + case 431: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 432: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 433: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 434: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 435: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 436: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 437: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 438: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 439: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 440: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 441: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 442: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 443: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 444: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 445: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 446: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 447: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 448: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 449: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 450: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 451: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 452: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 453: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 454: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 455: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 456: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 457: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 458: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 459: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 460: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 461: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 462: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 463: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 464: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 465: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 466: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 467: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 468: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 469: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 470: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 471: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 472: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 473: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 474: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 475: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 476: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 477: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 478: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 479: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 480: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 481: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 482: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 483: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 484: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 485: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 486: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 487: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 488: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 489: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 490: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 491: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 492: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 493: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 494: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 495: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 496: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 497: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 498: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 499: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 500: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 501: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 502: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 503: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 504: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 505: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 506: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 507: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 508: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 509: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 510: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 511: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 512: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 513: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 514: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 515: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 516: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 517: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 518: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 519: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 520: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 521: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 522: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 523: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 524: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 525: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 526: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 527: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 528: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 529: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 530: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 531: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 532: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 533: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 534: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 535: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 536: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 537: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 538: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 539: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 540: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 541: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 542: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 543: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 544: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 545: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 546: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 547: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 548: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 549: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 550: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 551: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 552: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 553: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 554: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 555: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 556: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 557: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 558: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 559: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 560: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 561: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 562: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 563: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 564: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 565: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 566: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 567: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 568: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 569: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 570: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 571: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 572: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 573: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 574: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 575: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 576: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 577: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 578: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 579: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 580: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 581: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 582: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 583: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 584: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 585: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 586: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 587: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 588: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 589: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 590: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 591: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 592: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 593: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 594: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 595: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 596: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 597: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 598: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 599: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 600: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 601: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 602: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 603: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 604: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 605: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 606: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 607: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 608: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 609: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 610: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 611: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 612: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 613: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 614: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 615: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 616: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 617: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 618: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 619: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 620: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 621: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 622: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 623: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 624: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 625: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 626: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 627: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 628: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 629: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 630: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 631: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 632: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 633: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 634: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 635: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 636: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 637: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 638: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 639: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 640: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 641: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 642: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 643: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 644: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 645: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 646: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 647: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 648: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 649: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 650: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 651: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 652: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 653: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 654: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 655: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 656: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 657: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 658: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 659: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 660: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 661: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 662: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 663: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 664: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 665: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 666: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 667: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 668: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 669: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 670: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 671: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 672: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 673: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 674: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 675: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 676: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 677: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 678: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 679: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 680: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 681: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 682: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 683: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 684: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 685: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + case 686: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 688: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + case 690: + /* Element[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + case 691: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + case 693: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList)] */ + case 695: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), END_ELEMENT] */ + case 696: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + case 697: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService)] */ + case 699: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 700: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 701: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 702: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 703: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode)] */ + case 705: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 706: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 707: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 708: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 709: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 710: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + case 711: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 712: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), END_ELEMENT] */ + case 715: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 716: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 717: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 718: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 719: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 720: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 721: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 722: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 723: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 724: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 725: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 726: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 727: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + case 728: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 730: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + case 732: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 733: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), END_ELEMENT] */ + case 734: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 736: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + case 741: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod)] */ + case 744: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 745: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + case 746: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue)] */ + case 748: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + case 749: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + case 750: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + case 756: + /* Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 757: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] */ + case 758: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + case 761: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + case 763: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), END_ELEMENT] */ + case 764: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + case 765: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + case 766: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + case 767: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body)] */ + case 769: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + case 770: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + case 771: + /* Fragment[START_DOCUMENT] --> Fragment[START_DOCUMENT] */ + case 772: + /* FragmentContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_DOCUMENT] --> FragmentContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_DOCUMENT] */ + case 774: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 777: + /* Element[CHARACTERS[LIST]] --> Element[CHARACTERS[LIST]] */ + case 781: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 783: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 785: + /* Element[CHARACTERS[DECIMAL]] --> Element[CHARACTERS[DECIMAL]] */ + case 787: + /* Element[CHARACTERS[FLOAT]] --> Element[CHARACTERS[FLOAT]] */ + case 789: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 791: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 793: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 795: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 797: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + case 799: + /* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + break; + case 794: + /* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + state->grammarStack[state->stackIndex] = 795; + break; + case 336: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + state->grammarStack[state->stackIndex] = 338; + break; + case 29: + /* FirstStartTag[CHARACTERS[BOOLEAN]] --> Element[CHARACTERS[BOOLEAN]] */ + state->grammarStack[state->stackIndex] = 30; + break; + case 361: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + state->grammarStack[state->stackIndex] = 391; + break; + case 271: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 276; + break; + case 714: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 804: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + state->grammarStack[state->stackIndex] = 719; + break; + case 704: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + state->grammarStack[state->stackIndex] = 710; + break; + case 9: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + state->grammarStack[state->stackIndex] = 10; + break; + case 66: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 67: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 321: + /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 322: + /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 323: + /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 778: + /* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 68; + break; + case 280: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + state->grammarStack[state->stackIndex] = 285; + break; + case 790: + /* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + state->grammarStack[state->stackIndex] = 791; + break; + case 134: + /* FirstStartTag[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + state->grammarStack[state->stackIndex] = 135; + break; + case 792: + /* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + state->grammarStack[state->stackIndex] = 793; + break; + case 782: + /* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + state->grammarStack[state->stackIndex] = 783; + break; + case 101: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 102: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + state->grammarStack[state->stackIndex] = 109; + break; + case 796: + /* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + state->grammarStack[state->stackIndex] = 797; + break; + case 358: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + state->grammarStack[state->stackIndex] = 393; + break; + case 251: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + state->grammarStack[state->stackIndex] = 254; + break; + case 412: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 779: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + state->grammarStack[state->stackIndex] = 413; + break; + case 753: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Target)] --> Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 754: + /* StartTag[ATTRIBUTE[STRING](Target)] --> Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 755: + /* StartTag[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 756; + break; + case 365: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + state->grammarStack[state->stackIndex] = 366; + break; + case 147: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + case 801: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 148; + break; + case 739: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + case 740: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + state->grammarStack[state->stackIndex] = 745; + break; + case 687: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 691; + break; + case 295: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + state->grammarStack[state->stackIndex] = 298; + break; + case 692: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 728; + break; + case 40: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 44; + break; + case 56: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 65; + break; + case 362: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + state->grammarStack[state->stackIndex] = 367; + break; + case 159: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + state->grammarStack[state->stackIndex] = 165; + break; + case 776: + /* FirstStartTag[CHARACTERS[LIST]] --> Element[CHARACTERS[LIST]] */ + state->grammarStack[state->stackIndex] = 777; + break; + case 23: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + state->grammarStack[state->stackIndex] = 34; + break; + case 268: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 269: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 299; + break; + case 287: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */ + state->grammarStack[state->stackIndex] = 290; + break; + case 759: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + state->grammarStack[state->stackIndex] = 770; + break; + case 404: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 686; + break; + case 311: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + case 312: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + state->grammarStack[state->stackIndex] = 317; + break; + case 46: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + state->grammarStack[state->stackIndex] = 55; + break; + case 408: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + state->grammarStack[state->stackIndex] = 430; + break; + case 26: + /* FirstStartTag[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + state->grammarStack[state->stackIndex] = 27; + break; + case 24: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + state->grammarStack[state->stackIndex] = 31; + break; + case 318: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 320; + break; + case 198: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + state->grammarStack[state->stackIndex] = 207; + break; + case 215: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + state->grammarStack[state->stackIndex] = 221; + break; + case 331: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + state->grammarStack[state->stackIndex] = 355; + break; + case 735: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + state->grammarStack[state->stackIndex] = 736; + break; + case 291: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + state->grammarStack[state->stackIndex] = 294; + break; + case 302: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 303: + /* StartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 304: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 305: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + state->grammarStack[state->stackIndex] = 308; + break; + case 8: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + state->grammarStack[state->stackIndex] = 17; + break; + case 137: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + state->grammarStack[state->stackIndex] = 146; + break; + case 99: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 119; + break; + case 313: + /* FirstStartTag[CHARACTERS[BINARY_HEX]] --> Element[CHARACTERS[BINARY_HEX]] */ + state->grammarStack[state->stackIndex] = 314; + break; + case 689: + /* FirstStartTag[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + state->grammarStack[state->stackIndex] = 690; + break; + case 49: + /* FirstStartTag[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + state->grammarStack[state->stackIndex] = 50; + break; + case 277: + /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 278: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 279: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 286; + break; + case 73: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + state->grammarStack[state->stackIndex] = 77; + break; + case 407: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + state->grammarStack[state->stackIndex] = 685; + break; + case 74: + /* First(xsi:type)StartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */ + case 118: + /* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */ + state->grammarStack[state->stackIndex] = 75; + break; + case 729: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + state->grammarStack[state->stackIndex] = 730; + break; + case 225: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + state->grammarStack[state->stackIndex] = 235; + break; + case 12: + /* FirstStartTag[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + state->grammarStack[state->stackIndex] = 13; + break; + case 255: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + state->grammarStack[state->stackIndex] = 262; + break; + case 3: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */ + case 161: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */ + state->grammarStack[state->stackIndex] = 6; + break; + case 394: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + state->grammarStack[state->stackIndex] = 397; + break; + case 176: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + state->grammarStack[state->stackIndex] = 190; + break; + case 179: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + state->grammarStack[state->stackIndex] = 187; + break; + case 784: + /* FirstStartTag[CHARACTERS[DECIMAL]] --> Element[CHARACTERS[DECIMAL]] */ + state->grammarStack[state->stackIndex] = 785; + break; + case 132: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + state->grammarStack[state->stackIndex] = 149; + break; + case 173: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 800: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + state->grammarStack[state->stackIndex] = 174; + break; + case 786: + /* FirstStartTag[CHARACTERS[FLOAT]] --> Element[CHARACTERS[FLOAT]] */ + state->grammarStack[state->stackIndex] = 787; + break; + case 742: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 743: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 744; + break; + case 150: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 208; + break; + case 335: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + state->grammarStack[state->stackIndex] = 354; + break; + case 52: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + state->grammarStack[state->stackIndex] = 53; + break; + case 698: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + state->grammarStack[state->stackIndex] = 711; + break; + case 324: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + state->grammarStack[state->stackIndex] = 326; + break; + case 773: + /* First(xsi:type)(xsi:nil)StartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 774; + break; + case 768: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 769; + break; + case 120: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 121: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + state->grammarStack[state->stackIndex] = 123; + break; + case 780: + /* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + state->grammarStack[state->stackIndex] = 781; + break; + case 15: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */ + case 219: + /* FirstStartTag[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */ + state->grammarStack[state->stackIndex] = 16; + break; + case 61: + /* FirstStartTag[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + state->grammarStack[state->stackIndex] = 62; + break; + case 263: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 802: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + state->grammarStack[state->stackIndex] = 265; + break; + case 760: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + state->grammarStack[state->stackIndex] = 766; + break; + case 158: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + state->grammarStack[state->stackIndex] = 167; + break; + case 124: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 131; + break; + case 112: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] --> FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + case 113: + /* StartTag[CHARACTERS[BINARY_BASE64]] --> FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + case 747: + /* FirstStartTag[ATTRIBUTE[STRING](Id), CHARACTERS[BINARY_BASE64]] --> FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + state->grammarStack[state->stackIndex] = 37; + break; + case 69: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + case 70: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + state->grammarStack[state->stackIndex] = 98; + break; + case 169: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + case 170: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + state->grammarStack[state->stackIndex] = 192; + break; + case 41: + /* FirstStartTag[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + state->grammarStack[state->stackIndex] = 42; + break; + case 210: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 224; + break; + case 398: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 401; + break; + case 332: + /* FirstStartTag[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */ + state->grammarStack[state->stackIndex] = 333; + break; + case 37: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] --> Element[CHARACTERS[BINARY_BASE64]] */ + case 289: + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] --> Element[CHARACTERS[BINARY_BASE64]] */ + state->grammarStack[state->stackIndex] = 38; + break; + case 356: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 357; + break; + case 694: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + state->grammarStack[state->stackIndex] = 696; + break; + case 72: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + state->grammarStack[state->stackIndex] = 97; + break; + case 737: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + case 738: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + state->grammarStack[state->stackIndex] = 750; + break; + case 181: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + state->grammarStack[state->stackIndex] = 184; + break; + case 327: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 330; + break; + case 266: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 803: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + state->grammarStack[state->stackIndex] = 267; + break; + case 236: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 250; + break; + case 300: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + case 301: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + state->grammarStack[state->stackIndex] = 310; + break; + case 731: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + state->grammarStack[state->stackIndex] = 734; + break; + case 58: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + state->grammarStack[state->stackIndex] = 64; + break; + case 47: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + state->grammarStack[state->stackIndex] = 54; + break; + case 155: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + state->grammarStack[state->stackIndex] = 156; + break; + case 410: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */ + case 411: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */ + state->grammarStack[state->stackIndex] = 414; + break; + case 751: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + case 752: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + state->grammarStack[state->stackIndex] = 758; + break; + case 788: + /* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + state->grammarStack[state->stackIndex] = 789; + break; + case 402: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + state->grammarStack[state->stackIndex] = 403; + break; + case 798: + /* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */ + state->grammarStack[state->stackIndex] = 799; + break; + case 153: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + state->grammarStack[state->stackIndex] = 196; + break; + case 35: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + case 36: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 39; + break; + case 45: + /* First(xsi:type)StartTag[END_ELEMENT] --> Element[END_ELEMENT] */ + case 209: + /* FirstStartTag[END_ELEMENT] --> Element[END_ELEMENT] */ + case 775: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, END_ELEMENT] --> Element[END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 4; + break; + case 273: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + state->grammarStack[state->stackIndex] = 275; + break; + + default: + found = 0; + break; + } + + if(!found) { + if (currentID < 0) { + if(exi_v2g_IsStartContent(currentID)) { + state->grammarStack[state->stackIndex] = (int16_t)(currentID - 1); + } + } else { + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE_MOVE_TO_CONTENT_RULE; + } + } + + return errn; +} + + +#endif + diff --git a/src/codec/v2gEXICoder.h b/src/codec/v2gEXICoder.h new file mode 100644 index 0000000..a21e102 --- /dev/null +++ b/src/codec/v2gEXICoder.h @@ -0,0 +1,74 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_v2g_CODER_H +#define EXI_v2g_CODER_H + +#include "EXITypes.h" + +#define DOCUMENT 0 +#define DOC_CONTENT 1 +#define DOC_END 22 + + +/* 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_v2g_PopStack(exi_state_t* state); + +int exi_v2g_HandleXsiNilTrue(exi_state_t* state); + +int exi_v2g_HandleXsiType(exi_state_t* state, exi_eqname_t* xsiType); + +int exi_v2g_RetrieveAndPushGlobalGrammar(exi_state_t* state, uint16_t qnameID); + +int exi_v2g_LearnAttribute(exi_state_t* state, uint16_t uriID, uint16_t localID); + +int exi_v2g_LearnEndElement(exi_state_t* state); + +int exi_v2g_IsStartContent(int16_t ruleID); + +int exi_v2g_MoveToElementContentRule(exi_state_t* state); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/v2gEXIDecoder.c b/src/codec/v2gEXIDecoder.c new file mode 100644 index 0000000..e9400bd --- /dev/null +++ b/src/codec/v2gEXIDecoder.c @@ -0,0 +1,15616 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_v2g_DECODER_C +#define EXI_v2g_DECODER_C + + +#include "v2gEXIDecoder.h" + +#include "EXIOptions.h" +#include "EXITypes.h" +#include "BitInputStream.h" +#include "DecoderChannel.h" + +#include "StringNameTable.h" +#include "v2gNameTableEntries.h" +#include "MethodsBag.h" + +#include "v2gEXICoder.h" +#include "EXIHeaderDecoder.h" +#include "ErrorCodes.h" + +#include "v2gQNames.h" +#include "v2gQNameDefines.h" + + + +/* local variables */ +static uint32_t xsi; +static uint32_t bits; +static int errn; +static exi_event_t currEvent; + +#define URI_CODEPOINTS_SIZE 35 +#define LOCALNAME_CODEPOINTS_SIZE 25 + +uint32_t codepointsUri[URI_CODEPOINTS_SIZE]; +uint32_t codepointsLocalName[LOCALNAME_CODEPOINTS_SIZE]; + +static exi_qname_t _qname = { + {EXI_NAME_ENTRY_TYPE_ID, 0, {URI_CODEPOINTS_SIZE, codepointsUri, 0}}, + {EXI_NAME_ENTRY_TYPE_ID, 0, {LOCALNAME_CODEPOINTS_SIZE, codepointsLocalName, 0}} +}; + + +static int _decodeNBitIntegerValue(bitstream_t* stream, exi_integer_t* iv, uint16_t nbits, int32_t lowerBound) { + int errn; + uint32_t val; + int32_t val2; + + /* at most 8 bits */ + errn = decodeNBitUnsignedInteger(stream, nbits, &val); + if(errn == 0) { + val2 = (int32_t)val + lowerBound; + if(val2 < 0) { + /* negative */ + /* TODO map integer value more fine-grained */ + iv->type = EXI_INTEGER_32; + iv->val.int32 = (int32_t)val2; + } else { + /* positive */ + if (val2 < 0x100) { + /* 8 bit */ + iv->type = EXI_UNSIGNED_INTEGER_8; + iv->val.uint8 = (uint8_t)val2; + } else if (val2 < 0x10000) { + /* 16 bit */ + iv->type = EXI_UNSIGNED_INTEGER_16; + iv->val.uint16 = (uint16_t)val2; + } else { + iv->type = EXI_UNSIGNED_INTEGER_32; + iv->val.uint32 = (uint32_t)val2; + } + } + } + + return (errn); +} + + + +static int exiDecodeNext2Event(bitstream_t* stream, exi_state_t* state, + exi_event_t* nextEvent) { + + uint32_t eventCode2 = 0; + int16_t ruleID = state->grammarStack[state->stackIndex]; + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + + switch (ruleID) { + case 303: + /* StartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + state->eventCode += 0; + break; + case 3: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 4: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 4: + /* Element[END_ELEMENT] */ + case 39: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + case 68: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 78: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 79: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 80: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 81: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 82: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 83: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 84: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 85: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 86: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 87: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 88: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 89: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 90: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 91: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 92: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 93: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 94: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 95: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 96: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 103: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), END_ELEMENT] */ + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 107: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), END_ELEMENT] */ + case 142: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 143: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 144: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 145: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), END_ELEMENT] */ + case 166: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] */ + case 168: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), END_ELEMENT] */ + case 177: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 183: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), END_ELEMENT] */ + case 185: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 189: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 191: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), END_ELEMENT] */ + case 194: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + case 195: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + case 206: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] */ + case 216: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 217: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 220: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + case 249: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + case 259: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + case 260: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + case 270: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 272: + /* Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 283: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 284: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] */ + case 286: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 288: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] */ + case 292: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] */ + case 293: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT] */ + case 296: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] */ + case 297: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */ + case 309: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */ + case 337: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), END_ELEMENT] */ + case 339: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 340: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 341: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 342: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 343: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 344: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 345: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 346: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 347: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 348: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 349: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 350: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 351: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 352: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 353: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 360: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + case 364: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), END_ELEMENT] */ + case 368: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 369: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 370: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 371: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 372: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 373: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 374: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 375: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 376: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 377: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 378: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 379: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 380: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 381: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 382: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 383: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 384: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 385: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 386: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 387: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 388: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 389: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 390: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 392: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + case 406: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), END_ELEMENT] */ + case 415: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 416: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 417: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 418: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 419: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 420: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 421: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 422: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 423: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 424: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 425: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 426: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 427: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 428: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 429: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 431: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 432: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 433: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 434: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 435: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 436: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 437: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 438: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 439: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 440: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 441: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 442: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 443: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 444: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 445: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 446: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 447: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 448: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 449: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 450: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 451: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 452: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 453: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 454: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 455: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 456: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 457: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 458: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 459: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 460: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 461: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 462: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 463: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 464: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 465: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 466: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 467: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 468: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 469: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 470: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 471: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 472: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 473: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 474: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 475: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 476: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 477: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 478: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 479: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 480: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 481: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 482: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 483: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 484: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 485: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 486: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 487: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 488: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 489: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 490: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 491: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 492: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 493: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 494: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 495: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 496: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 497: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 498: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 499: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 500: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 501: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 502: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 503: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 504: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 505: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 506: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 507: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 508: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 509: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 510: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 511: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 512: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 513: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 514: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 515: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 516: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 517: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 518: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 519: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 520: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 521: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 522: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 523: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 524: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 525: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 526: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 527: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 528: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 529: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 530: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 531: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 532: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 533: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 534: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 535: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 536: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 537: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 538: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 539: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 540: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 541: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 542: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 543: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 544: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 545: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 546: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 547: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 548: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 549: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 550: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 551: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 552: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 553: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 554: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 555: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 556: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 557: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 558: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 559: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 560: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 561: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 562: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 563: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 564: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 565: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 566: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 567: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 568: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 569: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 570: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 571: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 572: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 573: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 574: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 575: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 576: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 577: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 578: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 579: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 580: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 581: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 582: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 583: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 584: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 585: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 586: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 587: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 588: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 589: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 590: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 591: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 592: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 593: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 594: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 595: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 596: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 597: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 598: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 599: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 600: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 601: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 602: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 603: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 604: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 605: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 606: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 607: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 608: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 609: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 610: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 611: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 612: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 613: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 614: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 615: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 616: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 617: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 618: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 619: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 620: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 621: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 622: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 623: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 624: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 625: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 626: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 627: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 628: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 629: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 630: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 631: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 632: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 633: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 634: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 635: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 636: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 637: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 638: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 639: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 640: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 641: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 642: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 643: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 644: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 645: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 646: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 647: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 648: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 649: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 650: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 651: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 652: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 653: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 654: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 655: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 656: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 657: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 658: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 659: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 660: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 661: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 662: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 663: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 664: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 665: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 666: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 667: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 668: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 669: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 670: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 671: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 672: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 673: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 674: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 675: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 676: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 677: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 678: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 679: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 680: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 681: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 682: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 683: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 684: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 688: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + case 691: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + case 695: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), END_ELEMENT] */ + case 705: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 706: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 707: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 708: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 709: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 712: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), END_ELEMENT] */ + case 720: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 721: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 722: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 723: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 724: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 725: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 726: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 733: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), END_ELEMENT] */ + case 744: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 748: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + case 749: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + case 757: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] */ + case 761: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + case 763: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), END_ELEMENT] */ + case 765: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + case 769: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + case 774: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 773: + /* First(xsi:type)(xsi:nil)StartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 775: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_TYPE; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_NIL; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 3: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 4, &state->eventCode); + state->eventCode += 0; + break; + case 4: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 5: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 66: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + case 69: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + case 101: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 112: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + case 116: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + case 120: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + case 169: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + case 268: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 281: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + case 300: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + case 311: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + case 410: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name)] */ + case 737: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + case 739: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + case 742: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + case 747: + /* FirstStartTag[ATTRIBUTE[STRING](Id), CHARACTERS[BINARY_BASE64]] */ + case 751: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_TYPE; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_NIL; + break; + case 3: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 4: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + state->eventCode += 0; + break; + case 5: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 6: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 277: + /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 321: + /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_TYPE; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_NIL; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 3: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + state->eventCode += 0; + break; + case 4: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 5: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 70: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + case 102: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 113: + /* StartTag[CHARACTERS[BINARY_BASE64]] */ + case 117: + /* StartTag[CHARACTERS[STRING]] */ + case 121: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 170: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + case 269: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 301: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + case 305: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 312: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + case 411: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */ + case 738: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + case 740: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + case 752: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + case 755: + /* StartTag[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 0, &state->eventCode); + state->eventCode -= 1; + break; + case 3: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 4: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 36: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + case 67: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 279: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 282: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 743: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 0, &state->eventCode); + state->eventCode -= 1; + break; + case 2: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 3: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 322: + /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + state->eventCode += 0; + break; + case 2: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 3: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 278: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 323: + /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + state->eventCode += 0; + break; + case 2: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 3: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 45: + /* First(xsi:type)StartTag[END_ELEMENT] */ + case 147: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + case 209: + /* FirstStartTag[END_ELEMENT] */ + case 687: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + case 768: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + case 778: + /* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 801: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_TYPE; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_NIL; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 3: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 0, &state->eventCode); + state->eventCode -= 1; + break; + case 4: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 5: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 6: + /* Element[CHARACTERS[UNSIGNED_INTEGER]] */ + case 7: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + case 10: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 11: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit)] */ + case 13: + /* Element[CHARACTERS[ENUMERATION]] */ + case 14: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value)] */ + case 16: + /* Element[CHARACTERS[INTEGER]] */ + case 17: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + case 18: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage)] */ + case 19: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent)] */ + case 20: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent)] */ + case 21: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + case 25: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + case 27: + /* Element[CHARACTERS[ENUMERATION]] */ + case 28: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD)] */ + case 30: + /* Element[CHARACTERS[BOOLEAN]] */ + case 31: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 32: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage)] */ + case 33: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent)] */ + case 34: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + case 38: + /* Element[CHARACTERS[BINARY_BASE64]] */ + case 42: + /* Element[CHARACTERS[ENUMERATION]] */ + case 43: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + case 44: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 48: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode)] */ + case 50: + /* Element[CHARACTERS[ENUMERATION]] */ + case 51: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC)] */ + case 53: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 54: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + case 55: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 57: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + case 59: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + case 60: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + case 62: + /* Element[CHARACTERS[ENUMERATION]] */ + case 63: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + case 64: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 65: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 71: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */ + case 75: + /* Element[CHARACTERS[STRING]] */ + case 76: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber)] */ + case 77: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + case 97: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + case 98: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + case 100: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + case 108: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 109: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 110: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 111: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + case 114: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + case 115: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 119: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 122: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 123: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 125: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + case 126: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 127: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + case 128: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + case 129: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 131: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 133: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + case 135: + /* Element[CHARACTERS[ENUMERATION]] */ + case 136: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter)] */ + case 138: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 139: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit)] */ + case 140: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + case 141: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + case 146: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 149: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + case 151: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + case 152: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */ + case 156: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 157: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule)] */ + case 163: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + case 164: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax)] */ + case 165: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 167: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + case 171: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + case 172: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + case 174: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 175: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + case 180: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost)] */ + case 182: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount)] */ + case 184: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + case 187: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + case 190: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 192: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + case 193: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + case 196: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + case 197: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */ + case 199: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit)] */ + case 200: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit)] */ + case 201: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit)] */ + case 202: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit)] */ + case 203: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit)] */ + case 204: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + case 205: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + case 207: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + case 208: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 211: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 212: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + case 213: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 214: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 221: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + case 222: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 223: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 224: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 226: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + case 227: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 228: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 229: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 230: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 231: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 232: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 233: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 234: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 235: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 237: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + case 238: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + case 239: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent)] */ + case 240: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved)] */ + case 241: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved)] */ + case 242: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved)] */ + case 243: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 244: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 245: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 246: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 247: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + case 250: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 252: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + case 253: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + case 254: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 256: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q)] */ + case 257: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + case 258: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + case 261: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter)] */ + case 262: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + case 264: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + case 265: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 267: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 274: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent)] */ + case 275: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + case 276: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 285: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + case 290: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */ + case 294: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + case 298: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + case 299: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 306: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 307: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue)] */ + case 308: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 310: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + case 314: + /* Element[CHARACTERS[BINARY_HEX]] */ + case 315: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + case 316: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + case 317: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + case 319: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus)] */ + case 320: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 325: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 326: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 328: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge)] */ + case 329: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp)] */ + case 330: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 333: + /* Element[CHARACTERS[ENUMERATION]] */ + case 334: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList)] */ + case 338: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 354: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + case 355: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + case 357: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 359: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + case 363: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + case 366: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 367: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + case 391: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + case 393: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + case 395: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 396: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + case 397: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 399: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + case 400: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + case 401: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 403: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + case 405: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + case 409: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter)] */ + case 413: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 414: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */ + case 430: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + case 685: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + case 686: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 690: + /* Element[CHARACTERS[ENUMERATION]] */ + case 693: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList)] */ + case 696: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + case 697: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService)] */ + case 699: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 700: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 701: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 702: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 703: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode)] */ + case 710: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + case 711: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 715: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 716: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 717: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 718: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 719: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 727: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + case 728: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 730: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + case 732: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 734: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 736: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + case 741: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod)] */ + case 745: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + case 746: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue)] */ + case 750: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + case 756: + /* Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 758: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + case 764: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + case 766: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + case 767: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body)] */ + case 770: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + case 777: + /* Element[CHARACTERS[LIST]] */ + case 781: + /* Element[CHARACTERS[DATETIME]] */ + case 783: + /* Element[CHARACTERS[DATETIME]] */ + case 785: + /* Element[CHARACTERS[DECIMAL]] */ + case 787: + /* Element[CHARACTERS[FLOAT]] */ + case 789: + /* Element[CHARACTERS[DATETIME]] */ + case 791: + /* Element[CHARACTERS[DATETIME]] */ + case 793: + /* Element[CHARACTERS[DATETIME]] */ + case 795: + /* Element[CHARACTERS[DATETIME]] */ + case 797: + /* Element[CHARACTERS[DATETIME]] */ + case 799: + /* Element[CHARACTERS[DATETIME]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 2: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 304: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 754: + /* StartTag[ATTRIBUTE[STRING](Target)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + state->eventCode += 0; + break; + case 3: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 4: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 35: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_TYPE; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_NIL; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 3: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + state->eventCode += 0; + break; + case 4: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 5: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 2: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + case 3: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + case 8: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + case 9: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 12: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 15: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + case 23: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + case 24: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 26: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 29: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + case 37: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + case 40: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 41: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 46: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 47: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + case 49: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 52: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 56: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 58: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 61: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 72: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + case 73: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + case 74: + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + case 99: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 104: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 118: + /* FirstStartTag[CHARACTERS[STRING]] */ + case 124: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 132: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + case 134: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 137: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 150: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 153: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + case 154: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + case 155: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 158: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + case 159: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 160: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + case 161: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + case 173: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 176: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 179: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + case 181: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + case 198: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + case 210: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 215: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + case 219: + /* FirstStartTag[CHARACTERS[INTEGER]] */ + case 225: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 236: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 251: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 255: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + case 263: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 266: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 271: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 273: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + case 280: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + case 287: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */ + case 289: + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + case 291: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + case 295: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + case 313: + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + case 318: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 324: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 327: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 331: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + case 332: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 335: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + case 336: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 356: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 358: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + case 361: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + case 362: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + case 365: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 394: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 398: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 402: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + case 404: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 407: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + case 408: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + case 412: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 689: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 692: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 694: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + case 698: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 704: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + case 713: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + case 714: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 729: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + case 731: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 735: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + case 759: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + case 760: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + case 762: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + case 776: + /* FirstStartTag[CHARACTERS[LIST]] */ + case 779: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 780: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 782: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 784: + /* FirstStartTag[CHARACTERS[DECIMAL]] */ + case 786: + /* FirstStartTag[CHARACTERS[FLOAT]] */ + case 788: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 790: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 792: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 794: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 796: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 798: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 800: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 802: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 803: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 804: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_TYPE; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_NIL; + break; + case 3: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 4: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 0, &state->eventCode); + state->eventCode -= 1; + break; + case 5: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 6: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + case 302: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 753: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Target)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode2); + switch (eventCode2) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT_UNDECLARED; + break; + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_TYPE; + break; + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE_XSI_NIL; + break; + case 3: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 4: + *nextEvent = EXI_EVENT_ATTRIBUTE_INVALID_VALUE; + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + state->eventCode += 0; + break; + case 5: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 6: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL2; + break; + } + break; + + default: + if (ruleID < 0) { + /* built-in element grammar */ + if ( exi_v2g_IsStartContent(ruleID) ) { + /* TODO generate 2nd level productions */ + + /* StartTagContent grammar */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode2); + if(errn == 0) { + switch(eventCode2) { + case 0: + /* 0: EE */ + *nextEvent = EXI_EVENT_END_ELEMENT_UNDECLARED; + break; + case 1: + /* 1: AT(*) */ + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED; + break; + case 2: + /* 2: SE(*) */ + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 3: + /* 3: CH */ + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = (EXI_ERROR_UNEXPECTED_EVENT_LEVEL2); + break; + } + } + } else { + /* TODO generate 2nd level productions */ + + /* ElementContent grammar */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode2); + if(errn == 0) { + switch(eventCode2) { + case 0: + /* 0: SE(*) */ + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED; + break; + case 1: + /* 1: CH */ + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED; + break; + default: + errn = (EXI_ERROR_UNEXPECTED_EVENT_LEVEL2); + break; + } + } + } + } else { + *nextEvent = EXI_EVENT_ERROR; + errn = (EXI_ERROR_UNEXPECTED_EVENT_LEVEL2); + } + break; + } + + return (errn); + +} + + + +static int _exiDecodeNamespaceUri(bitstream_t* stream, exi_state_t* state, + exi_name_entry_t* uri) { + uint16_t uriSize, uriCodingLength; + uint32_t uriID; + + errn = exiGetUriSize(&state->nameTablePrepopulated, &state->nameTableRuntime, &uriSize); + if (errn == 0) { + /* URI Entries + 1 */ + errn = exiGetCodingLength((uint16_t)(uriSize + 1u), &uriCodingLength); + if (errn == 0) { + errn = decodeNBitUnsignedInteger(stream, uriCodingLength, &uriID); + if (errn == 0) { + if (uriID == 0) { + /* uri string value was not found */ + /* ==> zero (0) as an n-nit unsigned integer */ + /* followed by uri encoded as string */ + + uri->type = EXI_NAME_ENTRY_TYPE_STRING_AND_ID; + errn = decodeString(stream, &uri->str); + if (errn) { + return (errn); + } + /* after encoding string value is added to table */ + errn = exiAddUri(&state->nameTablePrepopulated, &state->nameTableRuntime); /*, namespaceURI->chars); */ + if (errn) { + return (errn); + } + uri->id = uriSize; + + } else { + /* uri string value found */ + /* ==> value(i+1) is encoded as n-bit unsigned integer */ + uri->type = EXI_NAME_ENTRY_TYPE_ID; + uri->id = (uint16_t)(uriID - 1); + } + } + } + } + + return (errn); +} + +static int _exiDecodeLocalName(bitstream_t* stream, exi_state_t* state, + uint16_t uriID, exi_name_entry_t* localName) { + + uint32_t localNameID; + uint16_t slen; + uint16_t localNameSize; + uint16_t localNameCodingLength; + + errn = decodeUnsignedInteger16(stream, &slen); + if (errn == 0) { + if (slen > 0) { + /* string value was not found in local partition */ + /* ==> string literal is encoded as a String */ + /* with the length of the string incremented by one */ + + localName->type = EXI_NAME_ENTRY_TYPE_STRING_AND_ID; + if (slen-- >= (localName->str.size) ) { + errn = (EXI_ERROR_OUT_OF_BOUNDS); + } else { + localName->str.len = slen; + errn = decodeCharacters(stream, slen, localName->str.codepoints); + if (errn == 0) { + /* After encoding the string value, it is added to the string table */ + /* partition and assigned the next available compact identifier */ + errn = exiAddLocalName(&state->nameTablePrepopulated, &state->nameTableRuntime, uriID, &localName->id); + } + } + + } else { + /* string value found in local partition */ + /* ==> string value is represented as zero (0) encoded as an */ + /* Unsigned Integer */ + /* followed by an the compact identifier of the string value as an */ + /* n-bit unsigned integer */ + /* n is log2 m and m is the number of entries in the string table */ + /* partition */ + localName->type = EXI_NAME_ENTRY_TYPE_ID; + errn = exiGetLocalNameSize(&state->nameTablePrepopulated, &state->nameTableRuntime, uriID, &localNameSize); /* uriID, &localNameSize); */ + if (errn == 0) { + errn = exiGetCodingLength(localNameSize, &localNameCodingLength); + if (errn == 0) { + errn = decodeNBitUnsignedInteger(stream, localNameCodingLength, &localNameID); /* localNameID);*/ + localName->id = (uint16_t)(localNameID); + } + } + } + } + + return (errn); +} + +static int _exiDecodeQName(bitstream_t* stream, exi_state_t* state, + uint16_t* qnameID, exi_qname_t* qname) { + + /* uri */ + errn = _exiDecodeNamespaceUri(stream, state, &qname->uri); + if (errn == 0) { + /* localName */ + errn = _exiDecodeLocalName(stream, state, qname->uri.id, &qname->localName); + if (errn == 0) { + if (_qname.localName.type == EXI_NAME_ENTRY_TYPE_STRING_AND_ID) { + errn = exiv2gAddEQName(state, qnameID, qname->uri.id, qname->localName.id); + } else { + /* IDs known --> retrieve qnameID */ + errn = exiv2gGetQNameID(state, qname->uri.id, qname->localName.id, qnameID); + } + } + } + + return (errn); +} + + +static int _exiDecodeStartElement(exi_state_t* state, uint16_t qnameID, + uint16_t stackId, int16_t newState) { + + /* move on */ + state->grammarStack[state->stackIndex] = (int16_t)stackId; + /* push element on stack */ + return (exi_v2g_PushStack(state, newState, qnameID)); +} + + +int exiv2gGetLastQName(exi_qname_t** qname) { + *qname = &_qname; + return (0); +} + + +int exiv2gDecodeListValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, exi_value_t* val, exi_list_t lt) { + uint32_t uint32; + + val->type = lt.type; + + switch(lt.type) { + case EXI_DATATYPE_BINARY_BASE64: + case EXI_DATATYPE_BINARY_HEX: + errn = decodeBinary(stream, &val->binary); + break; + case EXI_DATATYPE_BOOLEAN: + errn = decodeBoolean(stream, &val->boolean); + break; + case EXI_DATATYPE_BOOLEAN_FACET: + errn = decodeNBitUnsignedInteger(stream, 2, &uint32); + val->boolean = uint32 > 1; + break; + case EXI_DATATYPE_DECIMAL: + errn = decodeDecimal(stream, &val->decimal); + break; + case EXI_DATATYPE_FLOAT: + errn = decodeFloat(stream, &val->float_me); + break; + case EXI_DATATYPE_NBIT_UNSIGNED_INTEGER: + errn = EXI_UNSUPPORTED_LIST_VALUE_TYPE; + break; + case EXI_DATATYPE_UNSIGNED_INTEGER: + errn = decodeUnsignedInteger(stream, &val->integer); + break; + case EXI_DATATYPE_INTEGER: + errn = decodeInteger(stream, &val->integer); + break; + case EXI_DATATYPE_DATETIME: + errn = decodeDateTime(stream,lt.datetimeType, &val->datetime); + break; + case EXI_DATATYPE_STRING: + errn = decodeStringValue(stream, state, qnameID, &val->str); + break; + default: + errn = EXI_UNSUPPORTED_LIST_VALUE_TYPE; + break; + } + + return (errn); +} + + + + +int exiv2gInitDecoder(bitstream_t* stream, exi_state_t* state, + exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable) { +#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 +#if EXI_OPTION_VALUE_MAX_LENGTH != 0 + int i; +#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */ +#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */ + /* init grammar state */ + state->stackIndex = 0; + state->grammarStack[0] = DOCUMENT; + /* name table */ + state->nameTablePrepopulated = exiv2gNameTablePrepopulated; + state->nameTableRuntime = runtimeTable; + /* next qname ID */ + state->nextQNameID = EXI_v2gNUMBER_OF_PREPOPULATED_QNAMES; + /* string table */ + state->stringTable = stringTable; + state->stringTable.numberOfGlobalStrings = 0; +#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 +#if EXI_OPTION_VALUE_MAX_LENGTH != 0 + for(i=0; i<(state->stringTable.sizeLocalStrings); i++) { + state->stringTable.numberOfLocalStrings[i] = 0; + } +#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */ +#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */ + + /* runtime grammars */ + state->numberOfRuntimeGrammars = 0; + + /* Avoid warning: Unused declaration of variable 'name' */ + xsi = 0; + bits = 0; + + /* decode header */ + return (readEXIHeader(stream)); +} + +int exiv2gDecodeNextEvent(bitstream_t* stream, exi_state_t* state, + exi_event_t* nextEvent) { + uint16_t codingLength; + uint16_t numberOfProductions; + uint32_t eventCode1; + int16_t ruleID = state->grammarStack[state->stackIndex]; + state->eventCode = 0; + errn = 0; + + switch (ruleID) { + case 293: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 1: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 2: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 271: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 276: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 2: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 3: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 4: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 755: + /* StartTag[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 756: + /* Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 1: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 2: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 292: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] */ + case 296: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 2: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 3: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 411: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */ + case 414: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 6: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 304: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 1: + case 2: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 3: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 143: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 217: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 360: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 3: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 4: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 101: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 169: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + case 300: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + case 311: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + case 737: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + case 739: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + case 751: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 2: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 302: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 3: + case 4: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 5: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT_GENERIC] */ + errn = decodeNBitUnsignedInteger(stream, 7, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 80: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 136: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter)] */ + case 171: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + case 197: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */ + case 214: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 229: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 232: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 244: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 255: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + case 262: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + case 319: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 3: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 268: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 4, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 8: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 9: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 10: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 321: + /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 3: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 4: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 5: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 6: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 288: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 5: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 6: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 7: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 66: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + case 69: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + case 112: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + case 116: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + case 120: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + case 281: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + case 410: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name)] */ + case 742: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + case 754: + /* StartTag[ATTRIBUTE[STRING](Target)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 1: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 36: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + case 39: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + case 78: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 79: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 80: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 81: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 82: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 83: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 84: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 85: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 86: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 87: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 88: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 89: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 90: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 91: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 92: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 93: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 94: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 95: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 96: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 103: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), END_ELEMENT] */ + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 107: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), END_ELEMENT] */ + case 145: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 147: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), END_ELEMENT] */ + case 166: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] */ + case 168: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), END_ELEMENT] */ + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 183: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), END_ELEMENT] */ + case 185: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 189: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 191: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), END_ELEMENT] */ + case 194: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + case 195: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + case 206: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] */ + case 220: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 249: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + case 260: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + case 279: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 284: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] */ + case 286: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 297: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */ + case 309: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */ + case 337: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), END_ELEMENT] */ + case 339: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 340: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 341: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 342: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 343: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 344: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 345: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 346: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 347: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 348: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 349: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 350: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 351: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 352: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 353: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 364: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), END_ELEMENT] */ + case 368: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 369: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 370: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 371: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 372: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 373: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 374: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 375: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 376: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 377: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 378: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 379: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 380: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 381: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 382: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 383: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 384: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 385: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 386: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 387: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 388: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 389: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 390: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 406: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), END_ELEMENT] */ + case 415: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 416: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 417: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 418: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 419: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 420: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 421: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 422: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 423: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 424: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 425: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 426: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 427: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 428: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 429: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 431: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 432: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 433: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 434: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 435: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 436: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 437: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 438: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 439: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 440: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 441: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 442: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 443: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 444: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 445: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 446: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 447: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 448: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 449: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 450: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 451: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 452: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 453: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 454: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 455: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 456: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 457: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 458: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 459: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 460: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 461: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 462: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 463: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 464: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 465: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 466: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 467: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 468: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 469: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 470: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 471: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 472: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 473: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 474: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 475: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 476: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 477: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 478: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 479: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 480: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 481: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 482: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 483: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 484: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 485: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 486: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 487: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 488: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 489: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 490: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 491: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 492: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 493: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 494: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 495: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 496: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 497: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 498: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 499: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 500: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 501: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 502: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 503: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 504: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 505: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 506: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 507: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 508: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 509: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 510: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 511: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 512: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 513: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 514: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 515: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 516: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 517: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 518: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 519: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 520: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 521: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 522: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 523: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 524: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 525: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 526: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 527: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 528: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 529: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 530: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 531: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 532: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 533: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 534: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 535: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 536: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 537: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 538: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 539: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 540: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 541: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 542: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 543: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 544: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 545: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 546: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 547: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 548: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 549: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 550: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 551: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 552: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 553: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 554: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 555: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 556: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 557: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 558: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 559: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 560: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 561: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 562: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 563: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 564: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 565: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 566: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 567: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 568: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 569: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 570: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 571: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 572: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 573: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 574: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 575: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 576: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 577: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 578: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 579: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 580: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 581: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 582: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 583: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 584: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 585: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 586: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 587: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 588: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 589: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 590: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 591: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 592: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 593: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 594: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 595: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 596: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 597: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 598: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 599: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 600: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 601: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 602: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 603: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 604: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 605: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 606: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 607: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 608: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 609: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 610: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 611: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 612: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 613: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 614: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 615: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 616: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 617: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 618: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 619: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 620: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 621: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 622: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 623: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 624: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 625: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 626: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 627: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 628: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 629: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 630: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 631: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 632: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 633: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 634: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 635: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 636: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 637: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 638: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 639: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 640: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 641: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 642: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 643: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 644: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 645: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 646: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 647: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 648: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 649: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 650: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 651: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 652: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 653: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 654: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 655: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 656: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 657: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 658: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 659: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 660: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 661: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 662: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 663: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 664: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 665: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 666: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 667: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 668: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 669: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 670: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 671: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 672: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 673: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 674: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 675: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 676: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 677: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 678: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 679: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 680: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 681: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 682: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 683: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 684: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 688: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + case 695: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), END_ELEMENT] */ + case 705: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 706: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 707: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 708: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 709: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 712: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), END_ELEMENT] */ + case 720: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 721: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 722: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 723: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 724: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 725: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 726: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 733: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), END_ELEMENT] */ + case 749: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + case 757: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] */ + case 763: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), END_ELEMENT] */ + case 765: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + case 801: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 1: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 2: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 144: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 177: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + case 259: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + case 392: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + case 687: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + case 691: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + case 748: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + case 761: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 2: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 3: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 277: + /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 2: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 3: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 4: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 7: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + case 8: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + case 11: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit)] */ + case 14: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value)] */ + case 17: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + case 18: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage)] */ + case 19: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent)] */ + case 20: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent)] */ + case 23: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + case 24: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 25: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + case 28: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD)] */ + case 31: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 32: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage)] */ + case 33: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent)] */ + case 34: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + case 40: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 43: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + case 44: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 46: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 47: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + case 48: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode)] */ + case 51: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC)] */ + case 54: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + case 55: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 56: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 57: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + case 58: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 59: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + case 63: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + case 64: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 65: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 70: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + case 71: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */ + case 72: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + case 73: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + case 76: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber)] */ + case 77: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + case 97: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + case 98: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + case 99: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 100: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + case 102: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 104: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 108: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 109: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + case 110: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 111: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + case 114: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + case 115: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 119: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 121: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 122: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 123: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 124: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 125: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + case 126: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 127: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + case 128: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + case 129: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 131: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 133: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + case 138: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 139: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit)] */ + case 141: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + case 150: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 151: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + case 153: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + case 154: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + case 157: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule)] */ + case 158: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + case 160: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + case 163: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + case 164: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax)] */ + case 167: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + case 170: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + case 175: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + case 179: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + case 180: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost)] */ + case 181: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + case 182: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount)] */ + case 184: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + case 187: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + case 192: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + case 193: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + case 196: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + case 198: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + case 199: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit)] */ + case 200: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit)] */ + case 201: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit)] */ + case 202: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit)] */ + case 203: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit)] */ + case 205: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + case 207: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + case 208: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 210: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 211: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 212: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + case 215: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + case 221: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + case 223: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 224: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 225: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 226: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + case 231: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 234: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 235: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 236: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 237: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + case 238: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + case 239: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent)] */ + case 240: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved)] */ + case 241: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved)] */ + case 242: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved)] */ + case 246: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 247: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + case 250: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 251: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 253: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + case 254: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 256: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q)] */ + case 258: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + case 261: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter)] */ + case 263: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 264: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + case 265: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 273: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + case 274: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent)] */ + case 275: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + case 280: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + case 285: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + case 295: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + case 298: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + case 301: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + case 306: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 307: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue)] */ + case 310: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + case 312: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + case 316: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + case 317: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + case 318: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 320: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 324: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 325: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + case 326: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + case 327: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 328: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge)] */ + case 329: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp)] */ + case 330: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 331: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + case 334: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList)] */ + case 335: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + case 336: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 338: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 354: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + case 355: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + case 356: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 357: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 358: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + case 359: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + case 361: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + case 362: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + case 363: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + case 367: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + case 391: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + case 393: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + case 394: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 395: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 396: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + case 397: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + case 398: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 399: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + case 400: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + case 401: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 402: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + case 403: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + case 404: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 405: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + case 407: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + case 408: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + case 409: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter)] */ + case 430: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + case 685: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + case 686: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 692: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 693: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList)] */ + case 694: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + case 696: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + case 697: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService)] */ + case 698: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 700: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 702: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 703: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode)] */ + case 704: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + case 710: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + case 711: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 713: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + case 714: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 716: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 718: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 719: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + case 727: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + case 728: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 729: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + case 730: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + case 731: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 732: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 734: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + case 735: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + case 736: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + case 738: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + case 740: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + case 741: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod)] */ + case 745: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + case 746: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue)] */ + case 750: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + case 752: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + case 758: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + case 759: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + case 760: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + case 762: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + case 764: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + case 766: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + case 767: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body)] */ + case 770: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + case 802: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + case 804: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 1: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 0: + /* Document[START_DOCUMENT] */ + case 771: + /* Fragment[START_DOCUMENT] */ + *nextEvent = EXI_EVENT_START_DOCUMENT; + break; + case 773: + /* First(xsi:type)(xsi:nil)StartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 9, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 10: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC; + break; + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 110: + case 111: + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + case 123: + case 124: + case 125: + case 126: + case 127: + case 128: + case 129: + case 130: + case 131: + case 132: + case 133: + case 134: + case 135: + case 136: + case 137: + case 138: + case 139: + case 140: + case 141: + case 142: + case 143: + case 144: + case 145: + case 146: + case 147: + case 148: + case 149: + case 150: + case 151: + case 152: + case 153: + case 154: + case 155: + case 156: + case 157: + case 158: + case 159: + case 160: + case 161: + case 162: + case 163: + case 164: + case 165: + case 166: + case 167: + case 168: + case 169: + case 170: + case 171: + case 172: + case 173: + case 174: + case 175: + case 176: + case 177: + case 178: + case 179: + case 180: + case 181: + case 182: + case 183: + case 184: + case 185: + case 186: + case 187: + case 188: + case 189: + case 190: + case 191: + case 192: + case 193: + case 194: + case 195: + case 196: + case 197: + case 198: + case 199: + case 200: + case 201: + case 202: + case 203: + case 204: + case 205: + case 206: + case 207: + case 208: + case 209: + case 210: + case 211: + case 212: + case 213: + case 214: + case 215: + case 216: + case 217: + case 218: + case 219: + case 220: + case 221: + case 222: + case 223: + case 224: + case 225: + case 226: + case 227: + case 228: + case 229: + case 230: + case 231: + case 232: + case 233: + case 234: + case 235: + case 236: + case 237: + case 238: + case 239: + case 240: + case 241: + case 242: + case 243: + case 244: + case 245: + case 246: + case 247: + case 248: + case 249: + case 250: + case 251: + case 252: + case 253: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 254: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 255: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 256: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 257: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 303: + /* StartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 2: + case 3: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 4: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 282: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 283: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 743: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 744: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 2: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 3: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 4: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 22: + /* DocEnd[END_DOCUMENT] */ + *nextEvent = EXI_EVENT_END_DOCUMENT; + break; + case 272: + /* Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 1: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 2: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 747: + /* FirstStartTag[ATTRIBUTE[STRING](Id), CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 1: + *nextEvent = EXI_EVENT_CHARACTERS; + break; + case 2: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 3: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + case 6: + /* Element[CHARACTERS[UNSIGNED_INTEGER]] */ + case 9: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 10: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 12: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 13: + /* Element[CHARACTERS[ENUMERATION]] */ + case 15: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + case 16: + /* Element[CHARACTERS[INTEGER]] */ + case 26: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 27: + /* Element[CHARACTERS[ENUMERATION]] */ + case 29: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + case 30: + /* Element[CHARACTERS[BOOLEAN]] */ + case 37: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + case 38: + /* Element[CHARACTERS[BINARY_BASE64]] */ + case 41: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 42: + /* Element[CHARACTERS[ENUMERATION]] */ + case 49: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 50: + /* Element[CHARACTERS[ENUMERATION]] */ + case 52: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 53: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 61: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 62: + /* Element[CHARACTERS[ENUMERATION]] */ + case 74: + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + case 75: + /* Element[CHARACTERS[STRING]] */ + case 113: + /* StartTag[CHARACTERS[BINARY_BASE64]] */ + case 117: + /* StartTag[CHARACTERS[STRING]] */ + case 118: + /* FirstStartTag[CHARACTERS[STRING]] */ + case 134: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 135: + /* Element[CHARACTERS[ENUMERATION]] */ + case 155: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 156: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 161: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + case 173: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 174: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 219: + /* FirstStartTag[CHARACTERS[INTEGER]] */ + case 289: + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + case 313: + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + case 314: + /* Element[CHARACTERS[BINARY_HEX]] */ + case 332: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 333: + /* Element[CHARACTERS[ENUMERATION]] */ + case 365: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 366: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 412: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 413: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 689: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + case 690: + /* Element[CHARACTERS[ENUMERATION]] */ + case 776: + /* FirstStartTag[CHARACTERS[LIST]] */ + case 777: + /* Element[CHARACTERS[LIST]] */ + case 779: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + case 780: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 781: + /* Element[CHARACTERS[DATETIME]] */ + case 782: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 783: + /* Element[CHARACTERS[DATETIME]] */ + case 784: + /* FirstStartTag[CHARACTERS[DECIMAL]] */ + case 785: + /* Element[CHARACTERS[DECIMAL]] */ + case 786: + /* FirstStartTag[CHARACTERS[FLOAT]] */ + case 787: + /* Element[CHARACTERS[FLOAT]] */ + case 788: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 789: + /* Element[CHARACTERS[DATETIME]] */ + case 790: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 791: + /* Element[CHARACTERS[DATETIME]] */ + case 792: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 793: + /* Element[CHARACTERS[DATETIME]] */ + case 794: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 795: + /* Element[CHARACTERS[DATETIME]] */ + case 796: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 797: + /* Element[CHARACTERS[DATETIME]] */ + case 798: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + case 799: + /* Element[CHARACTERS[DATETIME]] */ + case 800: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_CHARACTERS; + break; + case 1: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 269: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + case 299: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 4, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 7: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 8: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 9: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 775: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 4, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 10: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC; + break; + case 11: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 12: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 67: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 68: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 1: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 2: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 3: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 270: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 4, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 7: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 8: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 9: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 10: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 323: + /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 2: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 3: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 4: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 35: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + case 278: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 2: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 3: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 322: + /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 2: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 3: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 4: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 5: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 2: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + case 21: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + case 60: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + case 132: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + case 137: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 140: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + case 146: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + case 149: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + case 159: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 165: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 172: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + case 176: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 190: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 204: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + case 222: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 230: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 233: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + case 245: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + case 252: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + case 257: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + case 266: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 267: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + case 291: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + case 294: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + case 305: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 308: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + case 315: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + case 699: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 701: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 715: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + case 717: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + case 803: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 2: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 142: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 216: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 4: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 5: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 772: + /* FragmentContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_DOCUMENT] */ + errn = decodeNBitUnsignedInteger(stream, 8, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 110: + case 111: + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + case 123: + case 124: + case 125: + case 126: + case 127: + case 128: + case 129: + case 130: + case 131: + case 132: + case 133: + case 134: + case 135: + case 136: + case 137: + case 138: + case 139: + case 140: + case 141: + case 142: + case 143: + case 144: + case 145: + case 146: + case 147: + case 148: + case 149: + case 150: + case 151: + case 152: + case 153: + case 154: + case 155: + case 156: + case 157: + case 158: + case 159: + case 160: + case 161: + case 162: + case 163: + case 164: + case 165: + case 166: + case 167: + case 168: + case 169: + case 170: + case 171: + case 172: + case 173: + case 174: + case 175: + case 176: + case 177: + case 178: + case 179: + case 180: + case 181: + case 182: + case 183: + case 184: + case 185: + case 186: + case 187: + case 188: + case 189: + case 190: + case 191: + case 192: + case 193: + case 194: + case 195: + case 196: + case 197: + case 198: + case 199: + case 200: + case 201: + case 202: + case 203: + case 204: + case 205: + case 206: + case 207: + case 208: + case 209: + case 210: + case 211: + case 212: + case 213: + case 214: + case 215: + case 216: + case 217: + case 218: + case 219: + case 220: + case 221: + case 222: + case 223: + case 224: + case 225: + case 226: + case 227: + case 228: + case 229: + case 230: + case 231: + case 232: + case 233: + case 234: + case 235: + case 236: + case 237: + case 238: + case 239: + case 240: + case 241: + case 242: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 243: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 244: + *nextEvent = EXI_EVENT_END_DOCUMENT; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 778: + /* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_ATTRIBUTE_GENERIC; + break; + case 1: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 2: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 3: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 4: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 287: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */ + case 290: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 5: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 6: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 152: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */ + case 227: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 5: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 774: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 8, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 110: + case 111: + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + case 123: + case 124: + case 125: + case 126: + case 127: + case 128: + case 129: + case 130: + case 131: + case 132: + case 133: + case 134: + case 135: + case 136: + case 137: + case 138: + case 139: + case 140: + case 141: + case 142: + case 143: + case 144: + case 145: + case 146: + case 147: + case 148: + case 149: + case 150: + case 151: + case 152: + case 153: + case 154: + case 155: + case 156: + case 157: + case 158: + case 159: + case 160: + case 161: + case 162: + case 163: + case 164: + case 165: + case 166: + case 167: + case 168: + case 169: + case 170: + case 171: + case 172: + case 173: + case 174: + case 175: + case 176: + case 177: + case 178: + case 179: + case 180: + case 181: + case 182: + case 183: + case 184: + case 185: + case 186: + case 187: + case 188: + case 189: + case 190: + case 191: + case 192: + case 193: + case 194: + case 195: + case 196: + case 197: + case 198: + case 199: + case 200: + case 201: + case 202: + case 203: + case 204: + case 205: + case 206: + case 207: + case 208: + case 209: + case 210: + case 211: + case 212: + case 213: + case 214: + case 215: + case 216: + case 217: + case 218: + case 219: + case 220: + case 221: + case 222: + case 223: + case 224: + case 225: + case 226: + case 227: + case 228: + case 229: + case 230: + case 231: + case 232: + case 233: + case 234: + case 235: + case 236: + case 237: + case 238: + case 239: + case 240: + case 241: + case 242: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 243: + *nextEvent = EXI_EVENT_START_ELEMENT_GENERIC; + break; + case 244: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 245: + *nextEvent = EXI_EVENT_CHARACTERS_GENERIC; + break; + case 246: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 768: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + case 769: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 6, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 35: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 36: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 4: + /* Element[END_ELEMENT] */ + case 45: + /* First(xsi:type)StartTag[END_ELEMENT] */ + case 209: + /* FirstStartTag[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + switch (state->eventCode) { + case 0: + *nextEvent = EXI_EVENT_END_ELEMENT; + break; + case 1: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 213: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + case 228: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + case 243: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + case 2: + case 3: + *nextEvent = EXI_EVENT_START_ELEMENT; + break; + case 4: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + case 753: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Target)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + switch (state->eventCode) { + case 0: + case 1: + *nextEvent = EXI_EVENT_ATTRIBUTE; + break; + case 2: + /* 2nd level events */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + break; + + default: + + if(ruleID < 0) { + /* built-in element grammar */ + numberOfProductions = state->runtimeGrammars[(ruleID + 1)*(-1)].numberOfProductions; + if(numberOfProductions > 0) { + /* decode 1st level event code */ + errn = exiGetCodingLength((uint16_t)(numberOfProductions + 1u), &codingLength); + if(errn == 0) { + errn = decodeNBitUnsignedInteger(stream, codingLength, &eventCode1); + if(errn == 0) { + if(eventCode1 == numberOfProductions) { + /* 2nd level */ + errn = exiDecodeNext2Event(stream, state, nextEvent); + } else { + /* 1st level event not supported in profile */ + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + } + } + } + } else { + errn = exiDecodeNext2Event(stream, state, nextEvent); + } + } else { + *nextEvent = EXI_EVENT_ERROR; + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + } + + break; + } + + currEvent = *nextEvent; + return (errn); +} + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ +int exiv2gDecodeStartDocument(bitstream_t* stream, exi_state_t* state) { + errn = 0; + switch(state->grammarStack[state->stackIndex]) { + case 0: + /* move on */ + state->grammarStack[state->stackIndex] = 1; + break; + case 771: + /* move on */ + state->grammarStack[state->stackIndex] = 772; + break; + + default: + errn =(EXI_ERROR_UNEXPECTED_START_DOCUMENT); + break; + } + + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ +int exiv2gDecodeEndDocument(bitstream_t* stream, exi_state_t* state) { + errn = 0; + switch(state->grammarStack[state->stackIndex]) { + case 22: + break; + case 772: + break; + + default: + errn =(EXI_ERROR_UNEXPECTED_END_DOCUMENT); + break; + } + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ + + +int exiv2gDecodeStartElement(bitstream_t* stream, exi_state_t* state, + uint16_t* qnameID) { + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT; + + switch(currEvent) { + case EXI_EVENT_START_ELEMENT: + switch (state->grammarStack[state->stackIndex]) { + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT_GENERIC] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 254, 22, 2); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 256, 22, 23); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 258, 22, 24); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 130, 22, 35); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 132, 22, 40); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 135, 22, 45); + break; + case 6: + errn = _exiDecodeStartElement(state, *qnameID = 138, 22, 46); + break; + case 7: + errn = _exiDecodeStartElement(state, *qnameID = 140, 22, 56); + break; + case 8: + errn = _exiDecodeStartElement(state, *qnameID = 59, 22, 66); + break; + case 9: + errn = _exiDecodeStartElement(state, *qnameID = 142, 22, 69); + break; + case 10: + errn = _exiDecodeStartElement(state, *qnameID = 144, 22, 99); + break; + case 11: + errn = _exiDecodeStartElement(state, *qnameID = 146, 22, 120); + break; + case 12: + errn = _exiDecodeStartElement(state, *qnameID = 148, 22, 124); + break; + case 13: + errn = _exiDecodeStartElement(state, *qnameID = 150, 22, 132); + break; + case 14: + errn = _exiDecodeStartElement(state, *qnameID = 152, 22, 150); + break; + case 15: + errn = _exiDecodeStartElement(state, *qnameID = 159, 22, 209); + break; + case 16: + errn = _exiDecodeStartElement(state, *qnameID = 161, 22, 210); + break; + case 17: + errn = _exiDecodeStartElement(state, *qnameID = 165, 22, 225); + break; + case 18: + errn = _exiDecodeStartElement(state, *qnameID = 167, 22, 236); + break; + case 19: + errn = _exiDecodeStartElement(state, *qnameID = 275, 22, 137); + break; + case 20: + errn = _exiDecodeStartElement(state, *qnameID = 278, 22, 251); + break; + case 21: + errn = _exiDecodeStartElement(state, *qnameID = 280, 22, 198); + break; + case 22: + errn = _exiDecodeStartElement(state, *qnameID = 282, 22, 58); + break; + case 23: + errn = _exiDecodeStartElement(state, *qnameID = 285, 22, 47); + break; + case 24: + errn = _exiDecodeStartElement(state, *qnameID = 62, 22, 255); + break; + case 25: + errn = _exiDecodeStartElement(state, *qnameID = 64, 22, 66); + break; + case 26: + errn = _exiDecodeStartElement(state, *qnameID = 66, 22, 37); + break; + case 27: + errn = _exiDecodeStartElement(state, *qnameID = 292, 22, 147); + break; + case 28: + errn = _exiDecodeStartElement(state, *qnameID = 303, 22, 45); + break; + case 29: + errn = _exiDecodeStartElement(state, *qnameID = 307, 22, 45); + break; + case 30: + errn = _exiDecodeStartElement(state, *qnameID = 323, 22, 263); + break; + case 31: + errn = _exiDecodeStartElement(state, *qnameID = 326, 22, 45); + break; + case 32: + errn = _exiDecodeStartElement(state, *qnameID = 330, 22, 266); + break; + case 33: + errn = _exiDecodeStartElement(state, *qnameID = 73, 22, 268); + break; + case 34: + errn = _exiDecodeStartElement(state, *qnameID = 75, 22, 74); + break; + case 35: + errn = _exiDecodeStartElement(state, *qnameID = 76, 22, 271); + break; + case 36: + errn = _exiDecodeStartElement(state, *qnameID = 78, 22, 300); + break; + case 37: + errn = _exiDecodeStartElement(state, *qnameID = 195, 22, 311); + break; + case 38: + errn = _exiDecodeStartElement(state, *qnameID = 197, 22, 318); + break; + case 39: + errn = _exiDecodeStartElement(state, *qnameID = 80, 22, 74); + break; + case 40: + errn = _exiDecodeStartElement(state, *qnameID = 82, 22, 321); + break; + case 41: + errn = _exiDecodeStartElement(state, *qnameID = 85, 22, 291); + break; + case 42: + errn = _exiDecodeStartElement(state, *qnameID = 350, 22, 159); + break; + case 43: + errn = _exiDecodeStartElement(state, *qnameID = 200, 22, 324); + break; + case 44: + errn = _exiDecodeStartElement(state, *qnameID = 202, 22, 327); + break; + case 45: + errn = _exiDecodeStartElement(state, *qnameID = 205, 22, 331); + break; + case 46: + errn = _exiDecodeStartElement(state, *qnameID = 207, 22, 356); + break; + case 47: + errn = _exiDecodeStartElement(state, *qnameID = 209, 22, 358); + break; + case 48: + errn = _exiDecodeStartElement(state, *qnameID = 211, 22, 318); + break; + case 49: + errn = _exiDecodeStartElement(state, *qnameID = 213, 22, 394); + break; + case 50: + errn = _exiDecodeStartElement(state, *qnameID = 215, 22, 398); + break; + case 51: + errn = _exiDecodeStartElement(state, *qnameID = 91, 22, 273); + break; + case 52: + errn = _exiDecodeStartElement(state, *qnameID = 93, 22, 302); + break; + case 53: + errn = _exiDecodeStartElement(state, *qnameID = 364, 22, 160); + break; + case 54: + errn = _exiDecodeStartElement(state, *qnameID = 95, 22, 277); + break; + case 55: + errn = _exiDecodeStartElement(state, *qnameID = 368, 22, 153); + break; + case 56: + errn = _exiDecodeStartElement(state, *qnameID = 373, 22, 45); + break; + case 57: + errn = _exiDecodeStartElement(state, *qnameID = 97, 22, 295); + break; + case 58: + errn = _exiDecodeStartElement(state, *qnameID = 377, 22, 176); + break; + case 59: + errn = _exiDecodeStartElement(state, *qnameID = 228, 22, 402); + break; + case 60: + errn = _exiDecodeStartElement(state, *qnameID = 230, 22, 404); + break; + case 61: + errn = _exiDecodeStartElement(state, *qnameID = 232, 22, 687); + break; + case 62: + errn = _exiDecodeStartElement(state, *qnameID = 234, 22, 692); + break; + case 63: + errn = _exiDecodeStartElement(state, *qnameID = 241, 22, 729); + break; + case 64: + errn = _exiDecodeStartElement(state, *qnameID = 243, 22, 731); + break; + case 65: + errn = _exiDecodeStartElement(state, *qnameID = 245, 22, 735); + break; + case 66: + errn = _exiDecodeStartElement(state, *qnameID = 247, 22, 356); + break; + case 67: + errn = _exiDecodeStartElement(state, *qnameID = 101, 22, 737); + break; + case 68: + errn = _exiDecodeStartElement(state, *qnameID = 102, 22, 742); + break; + case 69: + errn = _exiDecodeStartElement(state, *qnameID = 104, 22, 751); + break; + case 70: + errn = _exiDecodeStartElement(state, *qnameID = 106, 22, 753); + break; + case 71: + errn = _exiDecodeStartElement(state, *qnameID = 109, 22, 747); + break; + case 72: + errn = _exiDecodeStartElement(state, *qnameID = 111, 22, 739); + break; + case 73: + errn = _exiDecodeStartElement(state, *qnameID = 398, 22, 45); + break; + case 74: + errn = _exiDecodeStartElement(state, *qnameID = 113, 22, 281); + break; + case 75: + errn = _exiDecodeStartElement(state, *qnameID = 115, 22, 280); + break; + case 76: + errn = _exiDecodeStartElement(state, *qnameID = 444, 22, 759); + break; + case 77: + errn = _exiDecodeStartElement(state, *qnameID = 249, 22, 46); + break; + case 78: + errn = _exiDecodeStartElement(state, *qnameID = 251, 22, 398); + break; + case 79: + errn = _exiDecodeStartElement(state, *qnameID = 119, 22, 287); + break; + } + break; + case 2: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 287, 7, 3); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 289, 18, 8); + break; + } + break; + case 7: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 289, 18, 8); + break; + } + break; + case 8: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 343, 11, 9); + break; + } + break; + case 11: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 399, 14, 12); + break; + } + break; + case 14: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 400, 4, 15); + break; + } + break; + case 17: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 343, 11, 9); + break; + } + break; + case 18: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 298, 19, 8); + break; + } + break; + case 19: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 297, 20, 8); + break; + } + break; + case 20: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 302, 4, 8); + break; + } + break; + case 21: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 287, 7, 3); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 289, 18, 8); + break; + } + break; + case 23: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 258, 32, 24); + break; + } + break; + case 24: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 345, 25, 3); + break; + } + break; + case 25: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 319, 28, 26); + break; + } + break; + case 28: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 363, 4, 29); + break; + } + break; + case 31: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 345, 25, 3); + break; + } + break; + case 32: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 318, 33, 8); + break; + } + break; + case 33: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 312, 4, 8); + break; + } + break; + case 34: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 258, 32, 24); + break; + } + break; + case 35: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + switch(state->eventCode) { + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 190, 4, 37); + break; + } + break; + case 36: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 190, 4, 37); + break; + } + break; + case 39: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 190, 4, 37); + break; + } + break; + case 40: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 43, 41); + break; + } + break; + case 43: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 185, 4, 26); + break; + } + break; + case 44: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 43, 41); + break; + } + break; + case 46: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 170, 4, 47); + break; + } + break; + case 47: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 306, 48, 29); + break; + } + break; + case 48: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 296, 51, 49); + break; + } + break; + case 51: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 305, 4, 52); + break; + } + break; + case 54: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 306, 48, 29); + break; + } + break; + case 55: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 170, 4, 47); + break; + } + break; + case 56: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 57, 41); + break; + } + break; + case 57: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 169, 43, 58); + break; + } + break; + case 58: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 345, 59, 3); + break; + } + break; + case 59: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 319, 60, 26); + break; + } + break; + case 60: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 311, 63, 61); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 324, 4, 49); + break; + } + break; + case 63: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 324, 4, 49); + break; + } + break; + case 64: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 345, 59, 3); + break; + } + break; + case 65: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 57, 41); + break; + } + break; + case 70: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 199, 71, 37); + break; + } + break; + case 71: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 192, 4, 72); + break; + } + break; + case 72: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 78, 73); + break; + } + break; + case 73: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 121, 76, 74); + break; + } + break; + case 76: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 125, 4, 15); + break; + } + break; + case 77: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 121, 76, 74); + break; + } + break; + case 78: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 79, 73); + break; + } + break; + case 79: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 80, 73); + break; + } + break; + case 80: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 81, 73); + break; + } + break; + case 81: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 82, 73); + break; + } + break; + case 82: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 83, 73); + break; + } + break; + case 83: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 84, 73); + break; + } + break; + case 84: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 85, 73); + break; + } + break; + case 85: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 86, 73); + break; + } + break; + case 86: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 87, 73); + break; + } + break; + case 87: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 88, 73); + break; + } + break; + case 88: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 89, 73); + break; + } + break; + case 89: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 90, 73); + break; + } + break; + case 90: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 91, 73); + break; + } + break; + case 91: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 92, 73); + break; + } + break; + case 92: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 93, 73); + break; + } + break; + case 93: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 94, 73); + break; + } + break; + case 94: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 95, 73); + break; + } + break; + case 95: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 96, 73); + break; + } + break; + case 96: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 4, 73); + break; + } + break; + case 97: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 366, 78, 73); + break; + } + break; + case 98: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 199, 71, 37); + break; + } + break; + case 99: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 100, 41); + break; + } + break; + case 100: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 223, 110, 101); + break; + } + break; + case 101: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(state->eventCode) { + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 262, 103, 37); + break; + } + break; + case 102: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 262, 103, 37); + break; + } + break; + case 103: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 393, 4, 104); + break; + } + break; + case 104: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 262, 105, 37); + break; + } + break; + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 262, 106, 37); + break; + } + break; + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 262, 107, 37); + break; + } + break; + case 107: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 262, 4, 37); + break; + } + break; + case 108: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 262, 105, 37); + break; + } + break; + case 109: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 262, 103, 37); + break; + } + break; + case 110: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 163, 111, 101); + break; + } + break; + case 111: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 164, 114, 112); + break; + } + break; + case 114: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 171, 115, 112); + break; + } + break; + case 115: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 253, 4, 116); + break; + } + break; + case 119: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 100, 41); + break; + } + break; + case 121: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 163, 122, 101); + break; + } + break; + case 122: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 253, 71, 74); + break; + } + break; + case 123: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 163, 122, 101); + break; + } + break; + case 124: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 125, 41); + break; + } + break; + case 125: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 223, 126, 101); + break; + } + break; + case 126: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 163, 127, 101); + break; + } + break; + case 127: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 164, 128, 112); + break; + } + break; + case 128: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 171, 129, 112); + break; + } + break; + case 129: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 253, 130, 116); + break; + } + break; + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 222, 4, 15); + break; + } + break; + case 131: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 125, 41); + break; + } + break; + case 132: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 193, 133, 3); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 220, 136, 134); + break; + } + break; + case 133: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 220, 136, 134); + break; + } + break; + case 136: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 254, 4, 2); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 275, 4, 137); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 292, 4, 147); + break; + } + break; + case 137: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 287, 138, 3); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 285, 139, 47); + break; + } + break; + case 138: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 285, 139, 47); + break; + } + break; + case 139: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 299, 140, 8); + break; + } + break; + case 140: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 300, 141, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 301, 142, 8); + break; + } + break; + case 141: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 301, 142, 8); + break; + } + break; + case 142: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 294, 143, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 295, 144, 8); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 335, 145, 52); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 261, 4, 52); + break; + } + break; + case 143: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 295, 144, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 335, 145, 52); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 261, 4, 52); + break; + } + break; + case 144: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 335, 145, 52); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 261, 4, 52); + break; + } + break; + case 145: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 261, 4, 52); + break; + } + break; + case 146: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 287, 138, 3); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 285, 139, 47); + break; + } + break; + case 147: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 287, 4, 3); + break; + } + break; + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 287, 4, 3); + break; + } + break; + case 149: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 193, 133, 3); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 220, 136, 134); + break; + } + break; + case 150: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 151, 41); + break; + } + break; + case 151: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 185, 152, 26); + break; + } + break; + case 152: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 368, 197, 153); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 373, 197, 45); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 256, 4, 23); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 280, 4, 198); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 307, 4, 45); + break; + } + break; + case 153: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 370, 194, 154); + break; + } + break; + case 154: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 371, 157, 155); + break; + } + break; + case 157: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 349, 168, 158); + break; + } + break; + case 158: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 350, 166, 159); + break; + } + break; + case 159: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 364, 164, 160); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 398, 164, 45); + break; + } + break; + case 160: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 435, 162, 161); + break; + } + break; + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 411, 4, 161); + break; + } + break; + case 163: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 435, 162, 161); + break; + } + break; + case 164: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 348, 4, 8); + break; + } + break; + case 165: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 364, 164, 160); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 398, 164, 45); + break; + } + break; + case 166: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 350, 166, 159); + break; + } + break; + case 167: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 350, 166, 159); + break; + } + break; + case 168: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 375, 4, 169); + break; + } + break; + case 169: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + switch(state->eventCode) { + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 379, 171, 155); + break; + } + break; + case 170: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 379, 171, 155); + break; + } + break; + case 171: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 376, 172, 118); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 347, 175, 173); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 377, 191, 176); + break; + } + break; + case 172: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 347, 175, 173); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 377, 191, 176); + break; + } + break; + case 175: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 377, 191, 176); + break; + } + break; + case 176: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 364, 177, 160); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 398, 177, 45); + break; + } + break; + case 177: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 291, 178, 173); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 270, 188, 179); + break; + } + break; + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 270, 188, 179); + break; + } + break; + case 179: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 436, 180, 8); + break; + } + break; + case 180: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 273, 185, 181); + break; + } + break; + case 181: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 408, 182, 26); + break; + } + break; + case 182: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 401, 183, 3); + break; + } + break; + case 183: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 402, 4, 9); + break; + } + break; + case 184: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 408, 182, 26); + break; + } + break; + case 185: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 273, 186, 181); + break; + } + break; + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 273, 4, 181); + break; + } + break; + case 187: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 436, 180, 8); + break; + } + break; + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 270, 189, 179); + break; + } + break; + case 189: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 270, 4, 179); + break; + } + break; + case 190: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 364, 177, 160); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 398, 177, 45); + break; + } + break; + case 191: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 377, 191, 176); + break; + } + break; + case 192: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 379, 171, 155); + break; + } + break; + case 193: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 371, 157, 155); + break; + } + break; + case 194: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 370, 195, 154); + break; + } + break; + case 195: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 370, 4, 154); + break; + } + break; + case 196: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 370, 194, 154); + break; + } + break; + case 197: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 256, 4, 23); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 280, 4, 198); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 307, 4, 45); + break; + } + break; + case 198: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 282, 199, 58); + break; + } + break; + case 199: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 313, 200, 8); + break; + } + break; + case 200: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 314, 201, 8); + break; + } + break; + case 201: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 315, 202, 8); + break; + } + break; + case 202: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 316, 203, 8); + break; + } + break; + case 203: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 317, 204, 8); + break; + } + break; + case 204: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 309, 205, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 321, 206, 8); + break; + } + break; + case 205: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 321, 206, 8); + break; + } + break; + case 206: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 310, 4, 8); + break; + } + break; + case 207: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 282, 199, 58); + break; + } + break; + case 208: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 151, 41); + break; + } + break; + case 210: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 211, 41); + break; + } + break; + case 211: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 177, 212, 118); + break; + } + break; + case 212: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 224, 213, 155); + break; + } + break; + case 213: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 178, 214, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 194, 222, 215); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 217, 223, 29); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 129, 4, 24); + break; + } + break; + case 214: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 194, 222, 215); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 217, 223, 29); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 129, 4, 24); + break; + } + break; + case 215: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 339, 216, 118); + break; + } + break; + case 216: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 341, 217, 3); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 392, 218, 37); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 342, 220, 219); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 397, 4, 15); + break; + } + break; + case 217: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 392, 218, 37); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 342, 220, 219); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 397, 4, 15); + break; + } + break; + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 342, 220, 219); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 397, 4, 15); + break; + } + break; + case 220: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 397, 4, 15); + break; + } + break; + case 221: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 339, 216, 118); + break; + } + break; + case 222: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 217, 223, 29); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 129, 4, 24); + break; + } + break; + case 223: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 129, 4, 24); + break; + } + break; + case 224: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 211, 41); + break; + } + break; + case 225: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 170, 226, 47); + break; + } + break; + case 226: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 188, 227, 8); + break; + } + break; + case 227: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 175, 228, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 173, 229, 8); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 174, 230, 8); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 137, 231, 29); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 156, 232, 29); + break; + } + break; + case 228: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 173, 229, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 174, 230, 8); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 137, 231, 29); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 156, 232, 29); + break; + } + break; + case 229: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 174, 230, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 137, 231, 29); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 156, 232, 29); + break; + } + break; + case 230: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 137, 231, 29); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 156, 232, 29); + break; + } + break; + case 231: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 156, 232, 29); + break; + } + break; + case 232: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 219, 233, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 218, 234, 8); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 189, 4, 8); + break; + } + break; + case 233: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 218, 234, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 189, 4, 8); + break; + } + break; + case 234: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 189, 4, 8); + break; + } + break; + case 235: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 170, 226, 47); + break; + } + break; + case 236: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 237, 41); + break; + } + break; + case 237: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 169, 238, 58); + break; + } + break; + case 238: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 184, 239, 8); + break; + } + break; + case 239: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 183, 240, 8); + break; + } + break; + case 240: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 176, 241, 29); + break; + } + break; + case 241: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 187, 242, 29); + break; + } + break; + case 242: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 182, 243, 29); + break; + } + break; + case 243: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 181, 244, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 179, 245, 8); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 180, 246, 8); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 177, 247, 118); + break; + } + break; + case 244: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 179, 245, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 180, 246, 8); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 177, 247, 118); + break; + } + break; + case 245: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 180, 246, 8); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 177, 247, 118); + break; + } + break; + case 246: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 177, 247, 118); + break; + } + break; + case 247: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 224, 248, 155); + break; + } + break; + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 194, 249, 215); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 217, 4, 29); + break; + } + break; + case 249: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 217, 4, 29); + break; + } + break; + case 250: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 237, 41); + break; + } + break; + case 251: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 285, 252, 47); + break; + } + break; + case 252: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 260, 253, 29); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 265, 4, 29); + break; + } + break; + case 253: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 265, 4, 29); + break; + } + break; + case 254: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 285, 252, 47); + break; + } + break; + case 255: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 84, 256, 37); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 69, 258, 37); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 128, 259, 37); + break; + } + break; + case 256: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 90, 257, 37); + break; + } + break; + case 257: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 69, 258, 37); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 128, 259, 37); + break; + } + break; + case 258: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 128, 259, 37); + break; + } + break; + case 259: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 72, 260, 37); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 100, 261, 37); + break; + } + break; + case 260: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 100, 261, 37); + break; + } + break; + case 261: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 89, 4, 37); + break; + } + break; + case 262: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 84, 256, 37); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 69, 258, 37); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 128, 259, 37); + break; + } + break; + case 263: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 345, 264, 3); + break; + } + break; + case 264: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 319, 4, 26); + break; + } + break; + case 265: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 345, 264, 3); + break; + } + break; + case 266: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 364, 4, 160); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 398, 4, 45); + break; + } + break; + case 267: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 364, 4, 160); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 398, 4, 45); + break; + } + break; + case 268: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 75, 270, 74); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 76, 270, 271); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 95, 270, 277); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 119, 270, 287); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 85, 270, 291); + break; + case 6: + errn = _exiDecodeStartElement(state, *qnameID = 97, 270, 295); + break; + case 7: + errn = _exiDecodeStartElement(state, *qnameID = 80, 270, 74); + break; + } + break; + case 269: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 75, 270, 74); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 76, 270, 271); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 95, 270, 277); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 119, 270, 287); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 85, 270, 291); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 97, 270, 295); + break; + case 6: + errn = _exiDecodeStartElement(state, *qnameID = 80, 270, 74); + break; + } + break; + case 270: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 75, 270, 74); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 76, 270, 271); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 95, 270, 277); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 119, 270, 287); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 85, 270, 291); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 97, 270, 295); + break; + case 6: + errn = _exiDecodeStartElement(state, *qnameID = 80, 270, 74); + break; + } + break; + case 271: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 62, 272, 255); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 91, 272, 273); + break; + } + break; + case 273: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 81, 274, 37); + break; + } + break; + case 274: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 68, 4, 37); + break; + } + break; + case 275: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 81, 274, 37); + break; + } + break; + case 276: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 62, 272, 255); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 91, 272, 273); + break; + } + break; + case 277: + /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(state->eventCode) { + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 115, 4, 280); + break; + } + break; + case 278: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(state->eventCode) { + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 115, 4, 280); + break; + } + break; + case 279: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 115, 4, 280); + break; + } + break; + case 280: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 113, 284, 281); + break; + } + break; + case 282: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 127, 283, 74); + break; + } + break; + case 283: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 127, 283, 74); + break; + } + break; + case 284: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 113, 284, 281); + break; + } + break; + case 285: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 113, 284, 281); + break; + } + break; + case 286: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 115, 4, 280); + break; + } + break; + case 287: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 122, 288, 73); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 124, 288, 289); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 126, 288, 74); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 118, 288, 289); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 117, 288, 289); + break; + } + break; + case 288: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 122, 288, 73); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 124, 288, 289); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 126, 288, 74); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 118, 288, 289); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 117, 288, 289); + break; + } + break; + case 290: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 122, 288, 73); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 124, 288, 289); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 126, 288, 74); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 118, 288, 289); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 117, 288, 289); + break; + } + break; + case 291: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 87, 292, 289); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 88, 293, 289); + break; + } + break; + case 292: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 88, 293, 289); + break; + } + break; + case 294: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 87, 292, 289); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 88, 293, 289); + break; + } + break; + case 295: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 99, 296, 289); + break; + } + break; + case 296: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 99, 296, 289); + break; + } + break; + case 297: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 99, 296, 289); + break; + } + break; + case 298: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 99, 296, 289); + break; + } + break; + case 299: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 75, 270, 74); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 76, 270, 271); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 95, 270, 277); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 119, 270, 287); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 85, 270, 291); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 97, 270, 295); + break; + case 6: + errn = _exiDecodeStartElement(state, *qnameID = 80, 270, 74); + break; + } + break; + case 300: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + switch(state->eventCode) { + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 93, 309, 302); + break; + } + break; + case 301: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 93, 309, 302); + break; + } + break; + case 302: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(state->eventCode) { + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 115, 306, 280); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 64, 307, 66); + break; + } + break; + case 303: + /* StartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(state->eventCode) { + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 115, 306, 280); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 64, 307, 66); + break; + } + break; + case 304: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(state->eventCode) { + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 115, 306, 280); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 64, 307, 66); + break; + } + break; + case 305: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 115, 306, 280); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 64, 307, 66); + break; + } + break; + case 306: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 64, 307, 66); + break; + } + break; + case 307: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 66, 4, 37); + break; + } + break; + case 308: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 115, 306, 280); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 64, 307, 66); + break; + } + break; + case 309: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 93, 309, 302); + break; + } + break; + case 310: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 93, 309, 302); + break; + } + break; + case 311: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + switch(state->eventCode) { + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 240, 315, 313); + break; + } + break; + case 312: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 240, 315, 313); + break; + } + break; + case 315: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 224, 316, 155); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 194, 4, 215); + break; + } + break; + case 316: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 194, 4, 215); + break; + } + break; + case 317: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 240, 315, 313); + break; + } + break; + case 318: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 319, 41); + break; + } + break; + case 319: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 258, 4, 24); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 282, 4, 58); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 323, 4, 263); + break; + } + break; + case 320: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 319, 41); + break; + } + break; + case 324: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 253, 325, 74); + break; + } + break; + case 325: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 163, 4, 101); + break; + } + break; + case 326: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 253, 325, 74); + break; + } + break; + case 327: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 328, 41); + break; + } + break; + case 328: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 190, 329, 37); + break; + } + break; + case 329: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 186, 4, 15); + break; + } + break; + case 330: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 328, 41); + break; + } + break; + case 331: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 225, 334, 332); + break; + } + break; + case 334: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 226, 4, 335); + break; + } + break; + case 335: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 339, 336); + break; + } + break; + case 336: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 386, 337, 161); + break; + } + break; + case 337: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 355, 4, 15); + break; + } + break; + case 338: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 386, 337, 161); + break; + } + break; + case 339: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 340, 336); + break; + } + break; + case 340: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 341, 336); + break; + } + break; + case 341: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 342, 336); + break; + } + break; + case 342: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 343, 336); + break; + } + break; + case 343: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 344, 336); + break; + } + break; + case 344: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 345, 336); + break; + } + break; + case 345: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 346, 336); + break; + } + break; + case 346: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 347, 336); + break; + } + break; + case 347: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 348, 336); + break; + } + break; + case 348: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 349, 336); + break; + } + break; + case 349: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 350, 336); + break; + } + break; + case 350: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 351, 336); + break; + } + break; + case 351: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 352, 336); + break; + } + break; + case 352: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 353, 336); + break; + } + break; + case 353: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 4, 336); + break; + } + break; + case 354: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 381, 339, 336); + break; + } + break; + case 355: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 225, 334, 332); + break; + } + break; + case 356: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 4, 41); + break; + } + break; + case 357: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 4, 41); + break; + } + break; + case 358: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 154, 359, 26); + break; + } + break; + case 359: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 224, 360, 155); + break; + } + break; + case 360: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 157, 392, 361); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 278, 4, 251); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 303, 4, 45); + break; + } + break; + case 361: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 368, 362); + break; + } + break; + case 362: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 268, 363, 3); + break; + } + break; + case 363: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 267, 364, 8); + break; + } + break; + case 364: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 266, 4, 365); + break; + } + break; + case 367: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 268, 363, 3); + break; + } + break; + case 368: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 369, 362); + break; + } + break; + case 369: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 370, 362); + break; + } + break; + case 370: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 371, 362); + break; + } + break; + case 371: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 372, 362); + break; + } + break; + case 372: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 373, 362); + break; + } + break; + case 373: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 374, 362); + break; + } + break; + case 374: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 375, 362); + break; + } + break; + case 375: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 376, 362); + break; + } + break; + case 376: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 377, 362); + break; + } + break; + case 377: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 378, 362); + break; + } + break; + case 378: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 379, 362); + break; + } + break; + case 379: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 380, 362); + break; + } + break; + case 380: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 381, 362); + break; + } + break; + case 381: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 382, 362); + break; + } + break; + case 382: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 383, 362); + break; + } + break; + case 383: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 384, 362); + break; + } + break; + case 384: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 385, 362); + break; + } + break; + case 385: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 386, 362); + break; + } + break; + case 386: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 387, 362); + break; + } + break; + case 387: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 388, 362); + break; + } + break; + case 388: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 389, 362); + break; + } + break; + case 389: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 390, 362); + break; + } + break; + case 390: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 4, 362); + break; + } + break; + case 391: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 361, 368, 362); + break; + } + break; + case 392: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 278, 4, 251); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 303, 4, 45); + break; + } + break; + case 393: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 154, 359, 26); + break; + } + break; + case 394: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 170, 395, 47); + break; + } + break; + case 395: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 189, 396, 8); + break; + } + break; + case 396: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 188, 4, 8); + break; + } + break; + case 397: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 170, 395, 47); + break; + } + break; + case 398: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 399, 41); + break; + } + break; + case 399: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 169, 400, 58); + break; + } + break; + case 400: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 184, 4, 8); + break; + } + break; + case 401: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 399, 41); + break; + } + break; + case 402: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 236, 4, 161); + break; + } + break; + case 403: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 236, 4, 161); + break; + } + break; + case 404: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 405, 41); + break; + } + break; + case 405: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 236, 406, 161); + break; + } + break; + case 406: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 238, 4, 407); + break; + } + break; + case 407: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 431, 408); + break; + } + break; + case 408: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 355, 409, 15); + break; + } + break; + case 409: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 415, 410); + break; + } + break; + case 411: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 403, 4, 29); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 404, 4, 412); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 433, 4, 15); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 418, 4, 15); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 425, 4, 8); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 437, 4, 74); + break; + } + break; + case 414: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 403, 4, 29); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 404, 4, 412); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 433, 4, 15); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 418, 4, 15); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 425, 4, 8); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 437, 4, 74); + break; + } + break; + case 415: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 416, 410); + break; + } + break; + case 416: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 417, 410); + break; + } + break; + case 417: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 418, 410); + break; + } + break; + case 418: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 419, 410); + break; + } + break; + case 419: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 420, 410); + break; + } + break; + case 420: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 421, 410); + break; + } + break; + case 421: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 422, 410); + break; + } + break; + case 422: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 423, 410); + break; + } + break; + case 423: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 424, 410); + break; + } + break; + case 424: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 425, 410); + break; + } + break; + case 425: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 426, 410); + break; + } + break; + case 426: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 427, 410); + break; + } + break; + case 427: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 428, 410); + break; + } + break; + case 428: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 429, 410); + break; + } + break; + case 429: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 353, 4, 410); + break; + } + break; + case 430: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 355, 409, 15); + break; + } + break; + case 431: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 432, 408); + break; + } + break; + case 432: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 433, 408); + break; + } + break; + case 433: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 434, 408); + break; + } + break; + case 434: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 435, 408); + break; + } + break; + case 435: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 436, 408); + break; + } + break; + case 436: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 437, 408); + break; + } + break; + case 437: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 438, 408); + break; + } + break; + case 438: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 439, 408); + break; + } + break; + case 439: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 440, 408); + break; + } + break; + case 440: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 441, 408); + break; + } + break; + case 441: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 442, 408); + break; + } + break; + case 442: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 443, 408); + break; + } + break; + case 443: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 444, 408); + break; + } + break; + case 444: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 445, 408); + break; + } + break; + case 445: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 446, 408); + break; + } + break; + case 446: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 447, 408); + break; + } + break; + case 447: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 448, 408); + break; + } + break; + case 448: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 449, 408); + break; + } + break; + case 449: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 450, 408); + break; + } + break; + case 450: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 451, 408); + break; + } + break; + case 451: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 452, 408); + break; + } + break; + case 452: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 453, 408); + break; + } + break; + case 453: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 454, 408); + break; + } + break; + case 454: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 455, 408); + break; + } + break; + case 455: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 456, 408); + break; + } + break; + case 456: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 457, 408); + break; + } + break; + case 457: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 458, 408); + break; + } + break; + case 458: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 459, 408); + break; + } + break; + case 459: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 460, 408); + break; + } + break; + case 460: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 461, 408); + break; + } + break; + case 461: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 462, 408); + break; + } + break; + case 462: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 463, 408); + break; + } + break; + case 463: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 464, 408); + break; + } + break; + case 464: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 465, 408); + break; + } + break; + case 465: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 466, 408); + break; + } + break; + case 466: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 467, 408); + break; + } + break; + case 467: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 468, 408); + break; + } + break; + case 468: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 469, 408); + break; + } + break; + case 469: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 470, 408); + break; + } + break; + case 470: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 471, 408); + break; + } + break; + case 471: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 472, 408); + break; + } + break; + case 472: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 473, 408); + break; + } + break; + case 473: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 474, 408); + break; + } + break; + case 474: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 475, 408); + break; + } + break; + case 475: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 476, 408); + break; + } + break; + case 476: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 477, 408); + break; + } + break; + case 477: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 478, 408); + break; + } + break; + case 478: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 479, 408); + break; + } + break; + case 479: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 480, 408); + break; + } + break; + case 480: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 481, 408); + break; + } + break; + case 481: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 482, 408); + break; + } + break; + case 482: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 483, 408); + break; + } + break; + case 483: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 484, 408); + break; + } + break; + case 484: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 485, 408); + break; + } + break; + case 485: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 486, 408); + break; + } + break; + case 486: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 487, 408); + break; + } + break; + case 487: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 488, 408); + break; + } + break; + case 488: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 489, 408); + break; + } + break; + case 489: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 490, 408); + break; + } + break; + case 490: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 491, 408); + break; + } + break; + case 491: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 492, 408); + break; + } + break; + case 492: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 493, 408); + break; + } + break; + case 493: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 494, 408); + break; + } + break; + case 494: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 495, 408); + break; + } + break; + case 495: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 496, 408); + break; + } + break; + case 496: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 497, 408); + break; + } + break; + case 497: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 498, 408); + break; + } + break; + case 498: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 499, 408); + break; + } + break; + case 499: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 500, 408); + break; + } + break; + case 500: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 501, 408); + break; + } + break; + case 501: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 502, 408); + break; + } + break; + case 502: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 503, 408); + break; + } + break; + case 503: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 504, 408); + break; + } + break; + case 504: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 505, 408); + break; + } + break; + case 505: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 506, 408); + break; + } + break; + case 506: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 507, 408); + break; + } + break; + case 507: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 508, 408); + break; + } + break; + case 508: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 509, 408); + break; + } + break; + case 509: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 510, 408); + break; + } + break; + case 510: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 511, 408); + break; + } + break; + case 511: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 512, 408); + break; + } + break; + case 512: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 513, 408); + break; + } + break; + case 513: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 514, 408); + break; + } + break; + case 514: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 515, 408); + break; + } + break; + case 515: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 516, 408); + break; + } + break; + case 516: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 517, 408); + break; + } + break; + case 517: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 518, 408); + break; + } + break; + case 518: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 519, 408); + break; + } + break; + case 519: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 520, 408); + break; + } + break; + case 520: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 521, 408); + break; + } + break; + case 521: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 522, 408); + break; + } + break; + case 522: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 523, 408); + break; + } + break; + case 523: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 524, 408); + break; + } + break; + case 524: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 525, 408); + break; + } + break; + case 525: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 526, 408); + break; + } + break; + case 526: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 527, 408); + break; + } + break; + case 527: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 528, 408); + break; + } + break; + case 528: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 529, 408); + break; + } + break; + case 529: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 530, 408); + break; + } + break; + case 530: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 531, 408); + break; + } + break; + case 531: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 532, 408); + break; + } + break; + case 532: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 533, 408); + break; + } + break; + case 533: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 534, 408); + break; + } + break; + case 534: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 535, 408); + break; + } + break; + case 535: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 536, 408); + break; + } + break; + case 536: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 537, 408); + break; + } + break; + case 537: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 538, 408); + break; + } + break; + case 538: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 539, 408); + break; + } + break; + case 539: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 540, 408); + break; + } + break; + case 540: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 541, 408); + break; + } + break; + case 541: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 542, 408); + break; + } + break; + case 542: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 543, 408); + break; + } + break; + case 543: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 544, 408); + break; + } + break; + case 544: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 545, 408); + break; + } + break; + case 545: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 546, 408); + break; + } + break; + case 546: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 547, 408); + break; + } + break; + case 547: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 548, 408); + break; + } + break; + case 548: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 549, 408); + break; + } + break; + case 549: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 550, 408); + break; + } + break; + case 550: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 551, 408); + break; + } + break; + case 551: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 552, 408); + break; + } + break; + case 552: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 553, 408); + break; + } + break; + case 553: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 554, 408); + break; + } + break; + case 554: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 555, 408); + break; + } + break; + case 555: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 556, 408); + break; + } + break; + case 556: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 557, 408); + break; + } + break; + case 557: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 558, 408); + break; + } + break; + case 558: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 559, 408); + break; + } + break; + case 559: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 560, 408); + break; + } + break; + case 560: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 561, 408); + break; + } + break; + case 561: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 562, 408); + break; + } + break; + case 562: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 563, 408); + break; + } + break; + case 563: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 564, 408); + break; + } + break; + case 564: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 565, 408); + break; + } + break; + case 565: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 566, 408); + break; + } + break; + case 566: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 567, 408); + break; + } + break; + case 567: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 568, 408); + break; + } + break; + case 568: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 569, 408); + break; + } + break; + case 569: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 570, 408); + break; + } + break; + case 570: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 571, 408); + break; + } + break; + case 571: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 572, 408); + break; + } + break; + case 572: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 573, 408); + break; + } + break; + case 573: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 574, 408); + break; + } + break; + case 574: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 575, 408); + break; + } + break; + case 575: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 576, 408); + break; + } + break; + case 576: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 577, 408); + break; + } + break; + case 577: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 578, 408); + break; + } + break; + case 578: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 579, 408); + break; + } + break; + case 579: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 580, 408); + break; + } + break; + case 580: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 581, 408); + break; + } + break; + case 581: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 582, 408); + break; + } + break; + case 582: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 583, 408); + break; + } + break; + case 583: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 584, 408); + break; + } + break; + case 584: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 585, 408); + break; + } + break; + case 585: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 586, 408); + break; + } + break; + case 586: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 587, 408); + break; + } + break; + case 587: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 588, 408); + break; + } + break; + case 588: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 589, 408); + break; + } + break; + case 589: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 590, 408); + break; + } + break; + case 590: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 591, 408); + break; + } + break; + case 591: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 592, 408); + break; + } + break; + case 592: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 593, 408); + break; + } + break; + case 593: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 594, 408); + break; + } + break; + case 594: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 595, 408); + break; + } + break; + case 595: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 596, 408); + break; + } + break; + case 596: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 597, 408); + break; + } + break; + case 597: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 598, 408); + break; + } + break; + case 598: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 599, 408); + break; + } + break; + case 599: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 600, 408); + break; + } + break; + case 600: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 601, 408); + break; + } + break; + case 601: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 602, 408); + break; + } + break; + case 602: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 603, 408); + break; + } + break; + case 603: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 604, 408); + break; + } + break; + case 604: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 605, 408); + break; + } + break; + case 605: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 606, 408); + break; + } + break; + case 606: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 607, 408); + break; + } + break; + case 607: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 608, 408); + break; + } + break; + case 608: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 609, 408); + break; + } + break; + case 609: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 610, 408); + break; + } + break; + case 610: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 611, 408); + break; + } + break; + case 611: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 612, 408); + break; + } + break; + case 612: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 613, 408); + break; + } + break; + case 613: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 614, 408); + break; + } + break; + case 614: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 615, 408); + break; + } + break; + case 615: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 616, 408); + break; + } + break; + case 616: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 617, 408); + break; + } + break; + case 617: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 618, 408); + break; + } + break; + case 618: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 619, 408); + break; + } + break; + case 619: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 620, 408); + break; + } + break; + case 620: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 621, 408); + break; + } + break; + case 621: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 622, 408); + break; + } + break; + case 622: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 623, 408); + break; + } + break; + case 623: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 624, 408); + break; + } + break; + case 624: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 625, 408); + break; + } + break; + case 625: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 626, 408); + break; + } + break; + case 626: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 627, 408); + break; + } + break; + case 627: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 628, 408); + break; + } + break; + case 628: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 629, 408); + break; + } + break; + case 629: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 630, 408); + break; + } + break; + case 630: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 631, 408); + break; + } + break; + case 631: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 632, 408); + break; + } + break; + case 632: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 633, 408); + break; + } + break; + case 633: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 634, 408); + break; + } + break; + case 634: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 635, 408); + break; + } + break; + case 635: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 636, 408); + break; + } + break; + case 636: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 637, 408); + break; + } + break; + case 637: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 638, 408); + break; + } + break; + case 638: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 639, 408); + break; + } + break; + case 639: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 640, 408); + break; + } + break; + case 640: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 641, 408); + break; + } + break; + case 641: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 642, 408); + break; + } + break; + case 642: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 643, 408); + break; + } + break; + case 643: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 644, 408); + break; + } + break; + case 644: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 645, 408); + break; + } + break; + case 645: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 646, 408); + break; + } + break; + case 646: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 647, 408); + break; + } + break; + case 647: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 648, 408); + break; + } + break; + case 648: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 649, 408); + break; + } + break; + case 649: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 650, 408); + break; + } + break; + case 650: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 651, 408); + break; + } + break; + case 651: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 652, 408); + break; + } + break; + case 652: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 653, 408); + break; + } + break; + case 653: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 654, 408); + break; + } + break; + case 654: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 655, 408); + break; + } + break; + case 655: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 656, 408); + break; + } + break; + case 656: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 657, 408); + break; + } + break; + case 657: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 658, 408); + break; + } + break; + case 658: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 659, 408); + break; + } + break; + case 659: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 660, 408); + break; + } + break; + case 660: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 661, 408); + break; + } + break; + case 661: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 662, 408); + break; + } + break; + case 662: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 663, 408); + break; + } + break; + case 663: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 664, 408); + break; + } + break; + case 664: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 665, 408); + break; + } + break; + case 665: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 666, 408); + break; + } + break; + case 666: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 667, 408); + break; + } + break; + case 667: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 668, 408); + break; + } + break; + case 668: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 669, 408); + break; + } + break; + case 669: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 670, 408); + break; + } + break; + case 670: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 671, 408); + break; + } + break; + case 671: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 672, 408); + break; + } + break; + case 672: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 673, 408); + break; + } + break; + case 673: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 674, 408); + break; + } + break; + case 674: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 675, 408); + break; + } + break; + case 675: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 676, 408); + break; + } + break; + case 676: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 677, 408); + break; + } + break; + case 677: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 678, 408); + break; + } + break; + case 678: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 679, 408); + break; + } + break; + case 679: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 680, 408); + break; + } + break; + case 680: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 681, 408); + break; + } + break; + case 681: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 682, 408); + break; + } + break; + case 682: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 683, 408); + break; + } + break; + case 683: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 684, 408); + break; + } + break; + case 684: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 4, 408); + break; + } + break; + case 685: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 354, 431, 408); + break; + } + break; + case 686: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 405, 41); + break; + } + break; + case 687: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 239, 688, 118); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 227, 4, 689); + break; + } + break; + case 688: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 227, 4, 689); + break; + } + break; + case 691: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 239, 688, 118); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 227, 4, 689); + break; + } + break; + case 692: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 693, 41); + break; + } + break; + case 693: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 204, 697, 694); + break; + } + break; + case 694: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 358, 695, 332); + break; + } + break; + case 695: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 358, 4, 332); + break; + } + break; + case 696: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 358, 695, 332); + break; + } + break; + case 697: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 155, 712, 698); + break; + } + break; + case 698: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 386, 699, 161); + break; + } + break; + case 699: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 388, 700, 118); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 385, 701, 689); + break; + } + break; + case 700: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 385, 701, 689); + break; + } + break; + case 701: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 390, 702, 118); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 334, 703, 29); + break; + } + break; + case 702: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 334, 703, 29); + break; + } + break; + case 703: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 395, 4, 704); + break; + } + break; + case 704: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 328, 705, 134); + break; + } + break; + case 705: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 328, 706, 134); + break; + } + break; + case 706: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 328, 707, 134); + break; + } + break; + case 707: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 328, 708, 134); + break; + } + break; + case 708: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 328, 709, 134); + break; + } + break; + case 709: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 328, 4, 134); + break; + } + break; + case 710: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 328, 705, 134); + break; + } + break; + case 711: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 386, 699, 161); + break; + } + break; + case 712: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 237, 4, 713); + break; + } + break; + case 713: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 384, 720, 714); + break; + } + break; + case 714: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 386, 715, 161); + break; + } + break; + case 715: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 388, 716, 118); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 385, 717, 689); + break; + } + break; + case 716: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 385, 717, 689); + break; + } + break; + case 717: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 390, 718, 118); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 334, 4, 29); + break; + } + break; + case 718: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 334, 4, 29); + break; + } + break; + case 719: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 386, 715, 161); + break; + } + break; + case 720: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 384, 721, 714); + break; + } + break; + case 721: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 384, 722, 714); + break; + } + break; + case 722: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 384, 723, 714); + break; + } + break; + case 723: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 384, 724, 714); + break; + } + break; + case 724: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 384, 725, 714); + break; + } + break; + case 725: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 384, 726, 714); + break; + } + break; + case 726: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 384, 4, 714); + break; + } + break; + case 727: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 384, 720, 714); + break; + } + break; + case 728: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 693, 41); + break; + } + break; + case 729: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 172, 4, 313); + break; + } + break; + case 730: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 172, 4, 313); + break; + } + break; + case 731: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 732, 41); + break; + } + break; + case 732: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 177, 733, 118); + break; + } + break; + case 733: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 186, 4, 15); + break; + } + break; + case 734: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 221, 732, 41); + break; + } + break; + case 735: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 158, 4, 332); + break; + } + break; + case 736: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 158, 4, 332); + break; + } + break; + case 737: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + switch(state->eventCode) { + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 111, 746, 739); + break; + } + break; + case 738: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 111, 746, 739); + break; + } + break; + case 739: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + switch(state->eventCode) { + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 59, 741, 66); + break; + } + break; + case 740: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 59, 741, 66); + break; + } + break; + case 741: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 102, 310, 742); + break; + } + break; + case 743: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 70, 68, 219); + break; + } + break; + case 744: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 70, 68, 219); + break; + } + break; + case 745: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 59, 741, 66); + break; + } + break; + case 746: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 109, 748, 747); + break; + } + break; + case 748: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 73, 749, 268); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 82, 749, 321); + break; + } + break; + case 749: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 82, 749, 321); + break; + } + break; + case 750: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 111, 746, 739); + break; + } + break; + case 751: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + switch(state->eventCode) { + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 106, 757, 753); + break; + } + break; + case 752: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 106, 757, 753); + break; + } + break; + case 757: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 106, 757, 753); + break; + } + break; + case 758: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 106, 757, 753); + break; + } + break; + case 759: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 443, 767, 760); + break; + } + break; + case 760: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 447, 761, 313); + break; + } + break; + case 761: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 446, 765, 762); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 101, 4, 737); + break; + } + break; + case 762: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 332, 763, 26); + break; + } + break; + case 763: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 333, 4, 118); + break; + } + break; + case 764: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 332, 763, 26); + break; + } + break; + case 765: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 101, 4, 737); + break; + } + break; + case 766: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 447, 761, 313); + break; + } + break; + case 767: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 442, 4, 768); + break; + } + break; + case 768: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 130, 4, 35); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 132, 4, 40); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 135, 4, 45); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 138, 4, 46); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 140, 4, 56); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 142, 4, 69); + break; + case 6: + errn = _exiDecodeStartElement(state, *qnameID = 144, 4, 99); + break; + case 7: + errn = _exiDecodeStartElement(state, *qnameID = 146, 4, 120); + break; + case 8: + errn = _exiDecodeStartElement(state, *qnameID = 148, 4, 124); + break; + case 9: + errn = _exiDecodeStartElement(state, *qnameID = 150, 4, 132); + break; + case 10: + errn = _exiDecodeStartElement(state, *qnameID = 152, 4, 150); + break; + case 11: + errn = _exiDecodeStartElement(state, *qnameID = 159, 4, 209); + break; + case 12: + errn = _exiDecodeStartElement(state, *qnameID = 161, 4, 210); + break; + case 13: + errn = _exiDecodeStartElement(state, *qnameID = 165, 4, 225); + break; + case 14: + errn = _exiDecodeStartElement(state, *qnameID = 167, 4, 236); + break; + case 15: + errn = _exiDecodeStartElement(state, *qnameID = 195, 4, 311); + break; + case 16: + errn = _exiDecodeStartElement(state, *qnameID = 197, 4, 318); + break; + case 17: + errn = _exiDecodeStartElement(state, *qnameID = 200, 4, 324); + break; + case 18: + errn = _exiDecodeStartElement(state, *qnameID = 202, 4, 327); + break; + case 19: + errn = _exiDecodeStartElement(state, *qnameID = 205, 4, 331); + break; + case 20: + errn = _exiDecodeStartElement(state, *qnameID = 207, 4, 356); + break; + case 21: + errn = _exiDecodeStartElement(state, *qnameID = 209, 4, 358); + break; + case 22: + errn = _exiDecodeStartElement(state, *qnameID = 211, 4, 318); + break; + case 23: + errn = _exiDecodeStartElement(state, *qnameID = 213, 4, 394); + break; + case 24: + errn = _exiDecodeStartElement(state, *qnameID = 215, 4, 398); + break; + case 25: + errn = _exiDecodeStartElement(state, *qnameID = 228, 4, 402); + break; + case 26: + errn = _exiDecodeStartElement(state, *qnameID = 230, 4, 404); + break; + case 27: + errn = _exiDecodeStartElement(state, *qnameID = 232, 4, 687); + break; + case 28: + errn = _exiDecodeStartElement(state, *qnameID = 234, 4, 692); + break; + case 29: + errn = _exiDecodeStartElement(state, *qnameID = 241, 4, 729); + break; + case 30: + errn = _exiDecodeStartElement(state, *qnameID = 243, 4, 731); + break; + case 31: + errn = _exiDecodeStartElement(state, *qnameID = 245, 4, 735); + break; + case 32: + errn = _exiDecodeStartElement(state, *qnameID = 247, 4, 356); + break; + case 33: + errn = _exiDecodeStartElement(state, *qnameID = 249, 4, 46); + break; + case 34: + errn = _exiDecodeStartElement(state, *qnameID = 251, 4, 398); + break; + } + break; + case 769: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 130, 4, 35); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 132, 4, 40); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 135, 4, 45); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 138, 4, 46); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 140, 4, 56); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 142, 4, 69); + break; + case 6: + errn = _exiDecodeStartElement(state, *qnameID = 144, 4, 99); + break; + case 7: + errn = _exiDecodeStartElement(state, *qnameID = 146, 4, 120); + break; + case 8: + errn = _exiDecodeStartElement(state, *qnameID = 148, 4, 124); + break; + case 9: + errn = _exiDecodeStartElement(state, *qnameID = 150, 4, 132); + break; + case 10: + errn = _exiDecodeStartElement(state, *qnameID = 152, 4, 150); + break; + case 11: + errn = _exiDecodeStartElement(state, *qnameID = 159, 4, 209); + break; + case 12: + errn = _exiDecodeStartElement(state, *qnameID = 161, 4, 210); + break; + case 13: + errn = _exiDecodeStartElement(state, *qnameID = 165, 4, 225); + break; + case 14: + errn = _exiDecodeStartElement(state, *qnameID = 167, 4, 236); + break; + case 15: + errn = _exiDecodeStartElement(state, *qnameID = 195, 4, 311); + break; + case 16: + errn = _exiDecodeStartElement(state, *qnameID = 197, 4, 318); + break; + case 17: + errn = _exiDecodeStartElement(state, *qnameID = 200, 4, 324); + break; + case 18: + errn = _exiDecodeStartElement(state, *qnameID = 202, 4, 327); + break; + case 19: + errn = _exiDecodeStartElement(state, *qnameID = 205, 4, 331); + break; + case 20: + errn = _exiDecodeStartElement(state, *qnameID = 207, 4, 356); + break; + case 21: + errn = _exiDecodeStartElement(state, *qnameID = 209, 4, 358); + break; + case 22: + errn = _exiDecodeStartElement(state, *qnameID = 211, 4, 318); + break; + case 23: + errn = _exiDecodeStartElement(state, *qnameID = 213, 4, 394); + break; + case 24: + errn = _exiDecodeStartElement(state, *qnameID = 215, 4, 398); + break; + case 25: + errn = _exiDecodeStartElement(state, *qnameID = 228, 4, 402); + break; + case 26: + errn = _exiDecodeStartElement(state, *qnameID = 230, 4, 404); + break; + case 27: + errn = _exiDecodeStartElement(state, *qnameID = 232, 4, 687); + break; + case 28: + errn = _exiDecodeStartElement(state, *qnameID = 234, 4, 692); + break; + case 29: + errn = _exiDecodeStartElement(state, *qnameID = 241, 4, 729); + break; + case 30: + errn = _exiDecodeStartElement(state, *qnameID = 243, 4, 731); + break; + case 31: + errn = _exiDecodeStartElement(state, *qnameID = 245, 4, 735); + break; + case 32: + errn = _exiDecodeStartElement(state, *qnameID = 247, 4, 356); + break; + case 33: + errn = _exiDecodeStartElement(state, *qnameID = 249, 4, 46); + break; + case 34: + errn = _exiDecodeStartElement(state, *qnameID = 251, 4, 398); + break; + } + break; + case 770: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 443, 767, 760); + break; + } + break; + case 772: + /* FragmentContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_DOCUMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 254, 772, 2); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 256, 772, 23); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 129, 772, 24); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 258, 772, 24); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 130, 772, 35); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 132, 772, 40); + break; + case 6: + errn = _exiDecodeStartElement(state, *qnameID = 442, 772, 768); + break; + case 7: + errn = _exiDecodeStartElement(state, *qnameID = 135, 772, 45); + break; + case 8: + errn = _exiDecodeStartElement(state, *qnameID = 137, 772, 29); + break; + case 9: + errn = _exiDecodeStartElement(state, *qnameID = 260, 772, 29); + break; + case 10: + errn = _exiDecodeStartElement(state, *qnameID = 261, 772, 52); + break; + case 11: + errn = _exiDecodeStartElement(state, *qnameID = 138, 772, 46); + break; + case 12: + errn = _exiDecodeStartElement(state, *qnameID = 140, 772, 56); + break; + case 13: + errn = _exiDecodeStartElement(state, *qnameID = 59, 772, 66); + break; + case 14: + errn = _exiDecodeStartElement(state, *qnameID = 262, 772, 37); + break; + case 15: + errn = _exiDecodeStartElement(state, *qnameID = 142, 772, 69); + break; + case 16: + errn = _exiDecodeStartElement(state, *qnameID = 144, 772, 99); + break; + case 17: + errn = _exiDecodeStartElement(state, *qnameID = 146, 772, 120); + break; + case 18: + errn = _exiDecodeStartElement(state, *qnameID = 148, 772, 124); + break; + case 19: + errn = _exiDecodeStartElement(state, *qnameID = 150, 772, 132); + break; + case 20: + errn = _exiDecodeStartElement(state, *qnameID = 152, 772, 150); + break; + case 21: + errn = _exiDecodeStartElement(state, *qnameID = 154, 772, 26); + break; + case 22: + errn = _exiDecodeStartElement(state, *qnameID = 155, 772, 698); + break; + case 23: + errn = _exiDecodeStartElement(state, *qnameID = 156, 772, 29); + break; + case 24: + errn = _exiDecodeStartElement(state, *qnameID = 265, 772, 29); + break; + case 25: + errn = _exiDecodeStartElement(state, *qnameID = 157, 772, 361); + break; + case 26: + errn = _exiDecodeStartElement(state, *qnameID = 266, 772, 365); + break; + case 27: + errn = _exiDecodeStartElement(state, *qnameID = 267, 772, 8); + break; + case 28: + errn = _exiDecodeStartElement(state, *qnameID = 268, 772, 3); + break; + case 29: + errn = _exiDecodeStartElement(state, *qnameID = 158, 772, 332); + break; + case 30: + errn = _exiDecodeStartElement(state, *qnameID = 159, 772, 209); + break; + case 31: + errn = _exiDecodeStartElement(state, *qnameID = 161, 772, 210); + break; + case 32: + errn = _exiDecodeStartElement(state, *qnameID = 270, 772, 179); + break; + case 33: + errn = _exiDecodeStartElement(state, *qnameID = 163, 772, 101); + break; + case 34: + errn = _exiDecodeStartElement(state, *qnameID = 164, 772, 112); + break; + case 35: + errn = _exiDecodeStartElement(state, *qnameID = 273, 772, 181); + break; + case 36: + errn = _exiDecodeStartElement(state, *qnameID = 165, 772, 225); + break; + case 37: + errn = _exiDecodeStartElement(state, *qnameID = 167, 772, 236); + break; + case 38: + errn = _exiDecodeStartElement(state, *qnameID = 275, 772, 137); + break; + case 39: + errn = _exiDecodeStartElement(state, *qnameID = 278, 772, 251); + break; + case 40: + errn = _exiDecodeStartElement(state, *qnameID = 280, 772, 198); + break; + case 41: + errn = _exiDecodeStartElement(state, *qnameID = 169, 772, 58); + break; + case 42: + errn = _exiDecodeStartElement(state, *qnameID = 282, 772, 58); + break; + case 43: + errn = _exiDecodeStartElement(state, *qnameID = 170, 772, 47); + break; + case 44: + errn = _exiDecodeStartElement(state, *qnameID = 285, 772, 47); + break; + case 45: + errn = _exiDecodeStartElement(state, *qnameID = 171, 772, 112); + break; + case 46: + errn = _exiDecodeStartElement(state, *qnameID = 62, 772, 255); + break; + case 47: + errn = _exiDecodeStartElement(state, *qnameID = 287, 772, 3); + break; + case 48: + errn = _exiDecodeStartElement(state, *qnameID = 64, 772, 66); + break; + case 49: + errn = _exiDecodeStartElement(state, *qnameID = 66, 772, 37); + break; + case 50: + errn = _exiDecodeStartElement(state, *qnameID = 289, 772, 8); + break; + case 51: + errn = _exiDecodeStartElement(state, *qnameID = 291, 772, 173); + break; + case 52: + errn = _exiDecodeStartElement(state, *qnameID = 172, 772, 313); + break; + case 53: + errn = _exiDecodeStartElement(state, *qnameID = 292, 772, 147); + break; + case 54: + errn = _exiDecodeStartElement(state, *qnameID = 294, 772, 8); + break; + case 55: + errn = _exiDecodeStartElement(state, *qnameID = 295, 772, 8); + break; + case 56: + errn = _exiDecodeStartElement(state, *qnameID = 296, 772, 49); + break; + case 57: + errn = _exiDecodeStartElement(state, *qnameID = 297, 772, 8); + break; + case 58: + errn = _exiDecodeStartElement(state, *qnameID = 298, 772, 8); + break; + case 59: + errn = _exiDecodeStartElement(state, *qnameID = 173, 772, 8); + break; + case 60: + errn = _exiDecodeStartElement(state, *qnameID = 299, 772, 8); + break; + case 61: + errn = _exiDecodeStartElement(state, *qnameID = 174, 772, 8); + break; + case 62: + errn = _exiDecodeStartElement(state, *qnameID = 300, 772, 8); + break; + case 63: + errn = _exiDecodeStartElement(state, *qnameID = 175, 772, 8); + break; + case 64: + errn = _exiDecodeStartElement(state, *qnameID = 301, 772, 8); + break; + case 65: + errn = _exiDecodeStartElement(state, *qnameID = 302, 772, 8); + break; + case 66: + errn = _exiDecodeStartElement(state, *qnameID = 303, 772, 45); + break; + case 67: + errn = _exiDecodeStartElement(state, *qnameID = 305, 772, 52); + break; + case 68: + errn = _exiDecodeStartElement(state, *qnameID = 306, 772, 29); + break; + case 69: + errn = _exiDecodeStartElement(state, *qnameID = 307, 772, 45); + break; + case 70: + errn = _exiDecodeStartElement(state, *qnameID = 176, 772, 29); + break; + case 71: + errn = _exiDecodeStartElement(state, *qnameID = 309, 772, 8); + break; + case 72: + errn = _exiDecodeStartElement(state, *qnameID = 310, 772, 8); + break; + case 73: + errn = _exiDecodeStartElement(state, *qnameID = 177, 772, 118); + break; + case 74: + errn = _exiDecodeStartElement(state, *qnameID = 311, 772, 61); + break; + case 75: + errn = _exiDecodeStartElement(state, *qnameID = 178, 772, 8); + break; + case 76: + errn = _exiDecodeStartElement(state, *qnameID = 312, 772, 8); + break; + case 77: + errn = _exiDecodeStartElement(state, *qnameID = 179, 772, 8); + break; + case 78: + errn = _exiDecodeStartElement(state, *qnameID = 313, 772, 8); + break; + case 79: + errn = _exiDecodeStartElement(state, *qnameID = 180, 772, 8); + break; + case 80: + errn = _exiDecodeStartElement(state, *qnameID = 314, 772, 8); + break; + case 81: + errn = _exiDecodeStartElement(state, *qnameID = 181, 772, 8); + break; + case 82: + errn = _exiDecodeStartElement(state, *qnameID = 315, 772, 8); + break; + case 83: + errn = _exiDecodeStartElement(state, *qnameID = 316, 772, 8); + break; + case 84: + errn = _exiDecodeStartElement(state, *qnameID = 317, 772, 8); + break; + case 85: + errn = _exiDecodeStartElement(state, *qnameID = 318, 772, 8); + break; + case 86: + errn = _exiDecodeStartElement(state, *qnameID = 319, 772, 26); + break; + case 87: + errn = _exiDecodeStartElement(state, *qnameID = 321, 772, 8); + break; + case 88: + errn = _exiDecodeStartElement(state, *qnameID = 182, 772, 29); + break; + case 89: + errn = _exiDecodeStartElement(state, *qnameID = 183, 772, 8); + break; + case 90: + errn = _exiDecodeStartElement(state, *qnameID = 184, 772, 8); + break; + case 91: + errn = _exiDecodeStartElement(state, *qnameID = 185, 772, 26); + break; + case 92: + errn = _exiDecodeStartElement(state, *qnameID = 323, 772, 263); + break; + case 93: + errn = _exiDecodeStartElement(state, *qnameID = 324, 772, 49); + break; + case 94: + errn = _exiDecodeStartElement(state, *qnameID = 186, 772, 15); + break; + case 95: + errn = _exiDecodeStartElement(state, *qnameID = 187, 772, 29); + break; + case 96: + errn = _exiDecodeStartElement(state, *qnameID = 326, 772, 45); + break; + case 97: + errn = _exiDecodeStartElement(state, *qnameID = 188, 772, 8); + break; + case 98: + errn = _exiDecodeStartElement(state, *qnameID = 189, 772, 8); + break; + case 99: + errn = _exiDecodeStartElement(state, *qnameID = 328, 772, 134); + break; + case 100: + errn = _exiDecodeStartElement(state, *qnameID = 330, 772, 266); + break; + case 101: + errn = _exiDecodeStartElement(state, *qnameID = 68, 772, 37); + break; + case 102: + errn = _exiDecodeStartElement(state, *qnameID = 332, 772, 26); + break; + case 103: + errn = _exiDecodeStartElement(state, *qnameID = 333, 772, 118); + break; + case 104: + errn = _exiDecodeStartElement(state, *qnameID = 334, 772, 29); + break; + case 105: + errn = _exiDecodeStartElement(state, *qnameID = 335, 772, 52); + break; + case 106: + errn = _exiDecodeStartElement(state, *qnameID = 69, 772, 37); + break; + case 107: + errn = _exiDecodeStartElement(state, *qnameID = 190, 772, 37); + break; + case 108: + errn = _exiDecodeStartElement(state, *qnameID = 70, 772, 219); + break; + case 109: + errn = _exiDecodeStartElement(state, *qnameID = 443, 772, 760); + break; + case 110: + errn = _exiDecodeStartElement(state, *qnameID = 72, 772, 37); + break; + case 111: + errn = _exiDecodeStartElement(state, *qnameID = 73, 772, 268); + break; + case 112: + errn = _exiDecodeStartElement(state, *qnameID = 75, 772, 74); + break; + case 113: + errn = _exiDecodeStartElement(state, *qnameID = 76, 772, 271); + break; + case 114: + errn = _exiDecodeStartElement(state, *qnameID = 192, 772, 72); + break; + case 115: + errn = _exiDecodeStartElement(state, *qnameID = 78, 772, 300); + break; + case 116: + errn = _exiDecodeStartElement(state, *qnameID = 193, 772, 3); + break; + case 117: + errn = _exiDecodeStartElement(state, *qnameID = 339, 772, 118); + break; + case 118: + errn = _exiDecodeStartElement(state, *qnameID = 194, 772, 215); + break; + case 119: + errn = _exiDecodeStartElement(state, *qnameID = 341, 772, 3); + break; + case 120: + errn = _exiDecodeStartElement(state, *qnameID = 342, 772, 219); + break; + case 121: + errn = _exiDecodeStartElement(state, *qnameID = 195, 772, 311); + break; + case 122: + errn = _exiDecodeStartElement(state, *qnameID = 197, 772, 318); + break; + case 123: + errn = _exiDecodeStartElement(state, *qnameID = 80, 772, 74); + break; + case 124: + errn = _exiDecodeStartElement(state, *qnameID = 81, 772, 37); + break; + case 125: + errn = _exiDecodeStartElement(state, *qnameID = 343, 772, 9); + break; + case 126: + errn = _exiDecodeStartElement(state, *qnameID = 446, 772, 762); + break; + case 127: + errn = _exiDecodeStartElement(state, *qnameID = 345, 772, 3); + break; + case 128: + errn = _exiDecodeStartElement(state, *qnameID = 347, 772, 173); + break; + case 129: + errn = _exiDecodeStartElement(state, *qnameID = 199, 772, 37); + break; + case 130: + errn = _exiDecodeStartElement(state, *qnameID = 82, 772, 321); + break; + case 131: + errn = _exiDecodeStartElement(state, *qnameID = 84, 772, 37); + break; + case 132: + errn = _exiDecodeStartElement(state, *qnameID = 85, 772, 291); + break; + case 133: + errn = _exiDecodeStartElement(state, *qnameID = 87, 772, 289); + break; + case 134: + errn = _exiDecodeStartElement(state, *qnameID = 88, 772, 289); + break; + case 135: + errn = _exiDecodeStartElement(state, *qnameID = 348, 772, 8); + break; + case 136: + errn = _exiDecodeStartElement(state, *qnameID = 349, 772, 158); + break; + case 137: + errn = _exiDecodeStartElement(state, *qnameID = 350, 772, 159); + break; + case 138: + errn = _exiDecodeStartElement(state, *qnameID = 353, 772, 410); + break; + case 139: + errn = _exiDecodeStartElement(state, *qnameID = 354, 772, 408); + break; + case 140: + errn = _exiDecodeStartElement(state, *qnameID = 355, 772, 15); + break; + case 141: + errn = _exiDecodeStartElement(state, *qnameID = 200, 772, 324); + break; + case 142: + errn = _exiDecodeStartElement(state, *qnameID = 202, 772, 327); + break; + case 143: + errn = _exiDecodeStartElement(state, *qnameID = 358, 772, 332); + break; + case 144: + errn = _exiDecodeStartElement(state, *qnameID = 204, 772, 694); + break; + case 145: + errn = _exiDecodeStartElement(state, *qnameID = 205, 772, 331); + break; + case 146: + errn = _exiDecodeStartElement(state, *qnameID = 207, 772, 356); + break; + case 147: + errn = _exiDecodeStartElement(state, *qnameID = 89, 772, 37); + break; + case 148: + errn = _exiDecodeStartElement(state, *qnameID = 209, 772, 358); + break; + case 149: + errn = _exiDecodeStartElement(state, *qnameID = 211, 772, 318); + break; + case 150: + errn = _exiDecodeStartElement(state, *qnameID = 213, 772, 394); + break; + case 151: + errn = _exiDecodeStartElement(state, *qnameID = 215, 772, 398); + break; + case 152: + errn = _exiDecodeStartElement(state, *qnameID = 361, 772, 362); + break; + case 153: + errn = _exiDecodeStartElement(state, *qnameID = 90, 772, 37); + break; + case 154: + errn = _exiDecodeStartElement(state, *qnameID = 363, 772, 29); + break; + case 155: + errn = _exiDecodeStartElement(state, *qnameID = 91, 772, 273); + break; + case 156: + errn = _exiDecodeStartElement(state, *qnameID = 217, 772, 29); + break; + case 157: + errn = _exiDecodeStartElement(state, *qnameID = 93, 772, 302); + break; + case 158: + errn = _exiDecodeStartElement(state, *qnameID = 364, 772, 160); + break; + case 159: + errn = _exiDecodeStartElement(state, *qnameID = 218, 772, 8); + break; + case 160: + errn = _exiDecodeStartElement(state, *qnameID = 219, 772, 8); + break; + case 161: + errn = _exiDecodeStartElement(state, *qnameID = 220, 772, 134); + break; + case 162: + errn = _exiDecodeStartElement(state, *qnameID = 221, 772, 41); + break; + case 163: + errn = _exiDecodeStartElement(state, *qnameID = 95, 772, 277); + break; + case 164: + errn = _exiDecodeStartElement(state, *qnameID = 222, 772, 15); + break; + case 165: + errn = _exiDecodeStartElement(state, *qnameID = 366, 772, 73); + break; + case 166: + errn = _exiDecodeStartElement(state, *qnameID = 223, 772, 101); + break; + case 167: + errn = _exiDecodeStartElement(state, *qnameID = 368, 772, 153); + break; + case 168: + errn = _exiDecodeStartElement(state, *qnameID = 370, 772, 154); + break; + case 169: + errn = _exiDecodeStartElement(state, *qnameID = 224, 772, 155); + break; + case 170: + errn = _exiDecodeStartElement(state, *qnameID = 371, 772, 155); + break; + case 171: + errn = _exiDecodeStartElement(state, *qnameID = 373, 772, 45); + break; + case 172: + errn = _exiDecodeStartElement(state, *qnameID = 97, 772, 295); + break; + case 173: + errn = _exiDecodeStartElement(state, *qnameID = 99, 772, 289); + break; + case 174: + errn = _exiDecodeStartElement(state, *qnameID = 375, 772, 169); + break; + case 175: + errn = _exiDecodeStartElement(state, *qnameID = 376, 772, 118); + break; + case 176: + errn = _exiDecodeStartElement(state, *qnameID = 377, 772, 176); + break; + case 177: + errn = _exiDecodeStartElement(state, *qnameID = 379, 772, 155); + break; + case 178: + errn = _exiDecodeStartElement(state, *qnameID = 100, 772, 37); + break; + case 179: + errn = _exiDecodeStartElement(state, *qnameID = 225, 772, 332); + break; + case 180: + errn = _exiDecodeStartElement(state, *qnameID = 381, 772, 336); + break; + case 181: + errn = _exiDecodeStartElement(state, *qnameID = 226, 772, 335); + break; + case 182: + errn = _exiDecodeStartElement(state, *qnameID = 384, 772, 714); + break; + case 183: + errn = _exiDecodeStartElement(state, *qnameID = 227, 772, 689); + break; + case 184: + errn = _exiDecodeStartElement(state, *qnameID = 385, 772, 689); + break; + case 185: + errn = _exiDecodeStartElement(state, *qnameID = 228, 772, 402); + break; + case 186: + errn = _exiDecodeStartElement(state, *qnameID = 230, 772, 404); + break; + case 187: + errn = _exiDecodeStartElement(state, *qnameID = 232, 772, 687); + break; + case 188: + errn = _exiDecodeStartElement(state, *qnameID = 234, 772, 692); + break; + case 189: + errn = _exiDecodeStartElement(state, *qnameID = 236, 772, 161); + break; + case 190: + errn = _exiDecodeStartElement(state, *qnameID = 386, 772, 161); + break; + case 191: + errn = _exiDecodeStartElement(state, *qnameID = 237, 772, 713); + break; + case 192: + errn = _exiDecodeStartElement(state, *qnameID = 388, 772, 118); + break; + case 193: + errn = _exiDecodeStartElement(state, *qnameID = 238, 772, 407); + break; + case 194: + errn = _exiDecodeStartElement(state, *qnameID = 239, 772, 118); + break; + case 195: + errn = _exiDecodeStartElement(state, *qnameID = 390, 772, 118); + break; + case 196: + errn = _exiDecodeStartElement(state, *qnameID = 240, 772, 313); + break; + case 197: + errn = _exiDecodeStartElement(state, *qnameID = 447, 772, 313); + break; + case 198: + errn = _exiDecodeStartElement(state, *qnameID = 241, 772, 729); + break; + case 199: + errn = _exiDecodeStartElement(state, *qnameID = 243, 772, 731); + break; + case 200: + errn = _exiDecodeStartElement(state, *qnameID = 245, 772, 735); + break; + case 201: + errn = _exiDecodeStartElement(state, *qnameID = 247, 772, 356); + break; + case 202: + errn = _exiDecodeStartElement(state, *qnameID = 392, 772, 37); + break; + case 203: + errn = _exiDecodeStartElement(state, *qnameID = 101, 772, 737); + break; + case 204: + errn = _exiDecodeStartElement(state, *qnameID = 102, 772, 742); + break; + case 205: + errn = _exiDecodeStartElement(state, *qnameID = 104, 772, 751); + break; + case 206: + errn = _exiDecodeStartElement(state, *qnameID = 106, 772, 753); + break; + case 207: + errn = _exiDecodeStartElement(state, *qnameID = 109, 772, 747); + break; + case 208: + errn = _exiDecodeStartElement(state, *qnameID = 111, 772, 739); + break; + case 209: + errn = _exiDecodeStartElement(state, *qnameID = 393, 772, 104); + break; + case 210: + errn = _exiDecodeStartElement(state, *qnameID = 395, 772, 704); + break; + case 211: + errn = _exiDecodeStartElement(state, *qnameID = 397, 772, 15); + break; + case 212: + errn = _exiDecodeStartElement(state, *qnameID = 398, 772, 45); + break; + case 213: + errn = _exiDecodeStartElement(state, *qnameID = 113, 772, 281); + break; + case 214: + errn = _exiDecodeStartElement(state, *qnameID = 115, 772, 280); + break; + case 215: + errn = _exiDecodeStartElement(state, *qnameID = 399, 772, 12); + break; + case 216: + errn = _exiDecodeStartElement(state, *qnameID = 444, 772, 759); + break; + case 217: + errn = _exiDecodeStartElement(state, *qnameID = 400, 772, 15); + break; + case 218: + errn = _exiDecodeStartElement(state, *qnameID = 249, 772, 46); + break; + case 219: + errn = _exiDecodeStartElement(state, *qnameID = 251, 772, 398); + break; + case 220: + errn = _exiDecodeStartElement(state, *qnameID = 117, 772, 289); + break; + case 221: + errn = _exiDecodeStartElement(state, *qnameID = 118, 772, 289); + break; + case 222: + errn = _exiDecodeStartElement(state, *qnameID = 119, 772, 287); + break; + case 223: + errn = _exiDecodeStartElement(state, *qnameID = 121, 772, 74); + break; + case 224: + errn = _exiDecodeStartElement(state, *qnameID = 122, 772, 73); + break; + case 225: + errn = _exiDecodeStartElement(state, *qnameID = 124, 772, 289); + break; + case 226: + errn = _exiDecodeStartElement(state, *qnameID = 125, 772, 15); + break; + case 227: + errn = _exiDecodeStartElement(state, *qnameID = 126, 772, 74); + break; + case 228: + errn = _exiDecodeStartElement(state, *qnameID = 127, 772, 74); + break; + case 229: + errn = _exiDecodeStartElement(state, *qnameID = 128, 772, 37); + break; + case 230: + errn = _exiDecodeStartElement(state, *qnameID = 401, 772, 3); + break; + case 231: + errn = _exiDecodeStartElement(state, *qnameID = 402, 772, 9); + break; + case 232: + errn = _exiDecodeStartElement(state, *qnameID = 403, 772, 29); + break; + case 233: + errn = _exiDecodeStartElement(state, *qnameID = 404, 772, 412); + break; + case 234: + errn = _exiDecodeStartElement(state, *qnameID = 408, 772, 26); + break; + case 235: + errn = _exiDecodeStartElement(state, *qnameID = 411, 772, 161); + break; + case 236: + errn = _exiDecodeStartElement(state, *qnameID = 253, 772, 773); + break; + case 237: + errn = _exiDecodeStartElement(state, *qnameID = 418, 772, 15); + break; + case 238: + errn = _exiDecodeStartElement(state, *qnameID = 425, 772, 8); + break; + case 239: + errn = _exiDecodeStartElement(state, *qnameID = 433, 772, 15); + break; + case 240: + errn = _exiDecodeStartElement(state, *qnameID = 435, 772, 161); + break; + case 241: + errn = _exiDecodeStartElement(state, *qnameID = 436, 772, 8); + break; + case 242: + errn = _exiDecodeStartElement(state, *qnameID = 437, 772, 74); + break; + } + break; + case 773: + /* First(xsi:type)(xsi:nil)StartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 11: + errn = _exiDecodeStartElement(state, *qnameID = 254, 774, 2); + break; + case 12: + errn = _exiDecodeStartElement(state, *qnameID = 256, 774, 23); + break; + case 13: + errn = _exiDecodeStartElement(state, *qnameID = 129, 774, 24); + break; + case 14: + errn = _exiDecodeStartElement(state, *qnameID = 258, 774, 24); + break; + case 15: + errn = _exiDecodeStartElement(state, *qnameID = 130, 774, 35); + break; + case 16: + errn = _exiDecodeStartElement(state, *qnameID = 132, 774, 40); + break; + case 17: + errn = _exiDecodeStartElement(state, *qnameID = 442, 774, 768); + break; + case 18: + errn = _exiDecodeStartElement(state, *qnameID = 135, 774, 45); + break; + case 19: + errn = _exiDecodeStartElement(state, *qnameID = 137, 774, 29); + break; + case 20: + errn = _exiDecodeStartElement(state, *qnameID = 260, 774, 29); + break; + case 21: + errn = _exiDecodeStartElement(state, *qnameID = 261, 774, 52); + break; + case 22: + errn = _exiDecodeStartElement(state, *qnameID = 138, 774, 46); + break; + case 23: + errn = _exiDecodeStartElement(state, *qnameID = 140, 774, 56); + break; + case 24: + errn = _exiDecodeStartElement(state, *qnameID = 59, 774, 66); + break; + case 25: + errn = _exiDecodeStartElement(state, *qnameID = 262, 774, 37); + break; + case 26: + errn = _exiDecodeStartElement(state, *qnameID = 142, 774, 69); + break; + case 27: + errn = _exiDecodeStartElement(state, *qnameID = 144, 774, 99); + break; + case 28: + errn = _exiDecodeStartElement(state, *qnameID = 146, 774, 120); + break; + case 29: + errn = _exiDecodeStartElement(state, *qnameID = 148, 774, 124); + break; + case 30: + errn = _exiDecodeStartElement(state, *qnameID = 150, 774, 132); + break; + case 31: + errn = _exiDecodeStartElement(state, *qnameID = 152, 774, 150); + break; + case 32: + errn = _exiDecodeStartElement(state, *qnameID = 154, 774, 26); + break; + case 33: + errn = _exiDecodeStartElement(state, *qnameID = 155, 774, 698); + break; + case 34: + errn = _exiDecodeStartElement(state, *qnameID = 156, 774, 29); + break; + case 35: + errn = _exiDecodeStartElement(state, *qnameID = 265, 774, 29); + break; + case 36: + errn = _exiDecodeStartElement(state, *qnameID = 157, 774, 361); + break; + case 37: + errn = _exiDecodeStartElement(state, *qnameID = 266, 774, 365); + break; + case 38: + errn = _exiDecodeStartElement(state, *qnameID = 267, 774, 8); + break; + case 39: + errn = _exiDecodeStartElement(state, *qnameID = 268, 774, 3); + break; + case 40: + errn = _exiDecodeStartElement(state, *qnameID = 158, 774, 332); + break; + case 41: + errn = _exiDecodeStartElement(state, *qnameID = 159, 774, 209); + break; + case 42: + errn = _exiDecodeStartElement(state, *qnameID = 161, 774, 210); + break; + case 43: + errn = _exiDecodeStartElement(state, *qnameID = 270, 774, 179); + break; + case 44: + errn = _exiDecodeStartElement(state, *qnameID = 163, 774, 101); + break; + case 45: + errn = _exiDecodeStartElement(state, *qnameID = 164, 774, 112); + break; + case 46: + errn = _exiDecodeStartElement(state, *qnameID = 273, 774, 181); + break; + case 47: + errn = _exiDecodeStartElement(state, *qnameID = 165, 774, 225); + break; + case 48: + errn = _exiDecodeStartElement(state, *qnameID = 167, 774, 236); + break; + case 49: + errn = _exiDecodeStartElement(state, *qnameID = 275, 774, 137); + break; + case 50: + errn = _exiDecodeStartElement(state, *qnameID = 278, 774, 251); + break; + case 51: + errn = _exiDecodeStartElement(state, *qnameID = 280, 774, 198); + break; + case 52: + errn = _exiDecodeStartElement(state, *qnameID = 169, 774, 58); + break; + case 53: + errn = _exiDecodeStartElement(state, *qnameID = 282, 774, 58); + break; + case 54: + errn = _exiDecodeStartElement(state, *qnameID = 170, 774, 47); + break; + case 55: + errn = _exiDecodeStartElement(state, *qnameID = 285, 774, 47); + break; + case 56: + errn = _exiDecodeStartElement(state, *qnameID = 171, 774, 112); + break; + case 57: + errn = _exiDecodeStartElement(state, *qnameID = 62, 774, 255); + break; + case 58: + errn = _exiDecodeStartElement(state, *qnameID = 287, 774, 3); + break; + case 59: + errn = _exiDecodeStartElement(state, *qnameID = 64, 774, 66); + break; + case 60: + errn = _exiDecodeStartElement(state, *qnameID = 66, 774, 37); + break; + case 61: + errn = _exiDecodeStartElement(state, *qnameID = 289, 774, 8); + break; + case 62: + errn = _exiDecodeStartElement(state, *qnameID = 291, 774, 173); + break; + case 63: + errn = _exiDecodeStartElement(state, *qnameID = 172, 774, 313); + break; + case 64: + errn = _exiDecodeStartElement(state, *qnameID = 292, 774, 147); + break; + case 65: + errn = _exiDecodeStartElement(state, *qnameID = 294, 774, 8); + break; + case 66: + errn = _exiDecodeStartElement(state, *qnameID = 295, 774, 8); + break; + case 67: + errn = _exiDecodeStartElement(state, *qnameID = 296, 774, 49); + break; + case 68: + errn = _exiDecodeStartElement(state, *qnameID = 297, 774, 8); + break; + case 69: + errn = _exiDecodeStartElement(state, *qnameID = 298, 774, 8); + break; + case 70: + errn = _exiDecodeStartElement(state, *qnameID = 173, 774, 8); + break; + case 71: + errn = _exiDecodeStartElement(state, *qnameID = 299, 774, 8); + break; + case 72: + errn = _exiDecodeStartElement(state, *qnameID = 174, 774, 8); + break; + case 73: + errn = _exiDecodeStartElement(state, *qnameID = 300, 774, 8); + break; + case 74: + errn = _exiDecodeStartElement(state, *qnameID = 175, 774, 8); + break; + case 75: + errn = _exiDecodeStartElement(state, *qnameID = 301, 774, 8); + break; + case 76: + errn = _exiDecodeStartElement(state, *qnameID = 302, 774, 8); + break; + case 77: + errn = _exiDecodeStartElement(state, *qnameID = 303, 774, 45); + break; + case 78: + errn = _exiDecodeStartElement(state, *qnameID = 305, 774, 52); + break; + case 79: + errn = _exiDecodeStartElement(state, *qnameID = 306, 774, 29); + break; + case 80: + errn = _exiDecodeStartElement(state, *qnameID = 307, 774, 45); + break; + case 81: + errn = _exiDecodeStartElement(state, *qnameID = 176, 774, 29); + break; + case 82: + errn = _exiDecodeStartElement(state, *qnameID = 309, 774, 8); + break; + case 83: + errn = _exiDecodeStartElement(state, *qnameID = 310, 774, 8); + break; + case 84: + errn = _exiDecodeStartElement(state, *qnameID = 177, 774, 118); + break; + case 85: + errn = _exiDecodeStartElement(state, *qnameID = 311, 774, 61); + break; + case 86: + errn = _exiDecodeStartElement(state, *qnameID = 178, 774, 8); + break; + case 87: + errn = _exiDecodeStartElement(state, *qnameID = 312, 774, 8); + break; + case 88: + errn = _exiDecodeStartElement(state, *qnameID = 179, 774, 8); + break; + case 89: + errn = _exiDecodeStartElement(state, *qnameID = 313, 774, 8); + break; + case 90: + errn = _exiDecodeStartElement(state, *qnameID = 180, 774, 8); + break; + case 91: + errn = _exiDecodeStartElement(state, *qnameID = 314, 774, 8); + break; + case 92: + errn = _exiDecodeStartElement(state, *qnameID = 181, 774, 8); + break; + case 93: + errn = _exiDecodeStartElement(state, *qnameID = 315, 774, 8); + break; + case 94: + errn = _exiDecodeStartElement(state, *qnameID = 316, 774, 8); + break; + case 95: + errn = _exiDecodeStartElement(state, *qnameID = 317, 774, 8); + break; + case 96: + errn = _exiDecodeStartElement(state, *qnameID = 318, 774, 8); + break; + case 97: + errn = _exiDecodeStartElement(state, *qnameID = 319, 774, 26); + break; + case 98: + errn = _exiDecodeStartElement(state, *qnameID = 321, 774, 8); + break; + case 99: + errn = _exiDecodeStartElement(state, *qnameID = 182, 774, 29); + break; + case 100: + errn = _exiDecodeStartElement(state, *qnameID = 183, 774, 8); + break; + case 101: + errn = _exiDecodeStartElement(state, *qnameID = 184, 774, 8); + break; + case 102: + errn = _exiDecodeStartElement(state, *qnameID = 185, 774, 26); + break; + case 103: + errn = _exiDecodeStartElement(state, *qnameID = 323, 774, 263); + break; + case 104: + errn = _exiDecodeStartElement(state, *qnameID = 324, 774, 49); + break; + case 105: + errn = _exiDecodeStartElement(state, *qnameID = 186, 774, 15); + break; + case 106: + errn = _exiDecodeStartElement(state, *qnameID = 187, 774, 29); + break; + case 107: + errn = _exiDecodeStartElement(state, *qnameID = 326, 774, 45); + break; + case 108: + errn = _exiDecodeStartElement(state, *qnameID = 188, 774, 8); + break; + case 109: + errn = _exiDecodeStartElement(state, *qnameID = 189, 774, 8); + break; + case 110: + errn = _exiDecodeStartElement(state, *qnameID = 328, 774, 134); + break; + case 111: + errn = _exiDecodeStartElement(state, *qnameID = 330, 774, 266); + break; + case 112: + errn = _exiDecodeStartElement(state, *qnameID = 68, 774, 37); + break; + case 113: + errn = _exiDecodeStartElement(state, *qnameID = 332, 774, 26); + break; + case 114: + errn = _exiDecodeStartElement(state, *qnameID = 333, 774, 118); + break; + case 115: + errn = _exiDecodeStartElement(state, *qnameID = 334, 774, 29); + break; + case 116: + errn = _exiDecodeStartElement(state, *qnameID = 335, 774, 52); + break; + case 117: + errn = _exiDecodeStartElement(state, *qnameID = 69, 774, 37); + break; + case 118: + errn = _exiDecodeStartElement(state, *qnameID = 190, 774, 37); + break; + case 119: + errn = _exiDecodeStartElement(state, *qnameID = 70, 774, 219); + break; + case 120: + errn = _exiDecodeStartElement(state, *qnameID = 443, 774, 760); + break; + case 121: + errn = _exiDecodeStartElement(state, *qnameID = 72, 774, 37); + break; + case 122: + errn = _exiDecodeStartElement(state, *qnameID = 73, 774, 268); + break; + case 123: + errn = _exiDecodeStartElement(state, *qnameID = 75, 774, 74); + break; + case 124: + errn = _exiDecodeStartElement(state, *qnameID = 76, 774, 271); + break; + case 125: + errn = _exiDecodeStartElement(state, *qnameID = 192, 774, 72); + break; + case 126: + errn = _exiDecodeStartElement(state, *qnameID = 78, 774, 300); + break; + case 127: + errn = _exiDecodeStartElement(state, *qnameID = 193, 774, 3); + break; + case 128: + errn = _exiDecodeStartElement(state, *qnameID = 339, 774, 118); + break; + case 129: + errn = _exiDecodeStartElement(state, *qnameID = 194, 774, 215); + break; + case 130: + errn = _exiDecodeStartElement(state, *qnameID = 341, 774, 3); + break; + case 131: + errn = _exiDecodeStartElement(state, *qnameID = 342, 774, 219); + break; + case 132: + errn = _exiDecodeStartElement(state, *qnameID = 195, 774, 311); + break; + case 133: + errn = _exiDecodeStartElement(state, *qnameID = 197, 774, 318); + break; + case 134: + errn = _exiDecodeStartElement(state, *qnameID = 80, 774, 74); + break; + case 135: + errn = _exiDecodeStartElement(state, *qnameID = 81, 774, 37); + break; + case 136: + errn = _exiDecodeStartElement(state, *qnameID = 343, 774, 9); + break; + case 137: + errn = _exiDecodeStartElement(state, *qnameID = 446, 774, 762); + break; + case 138: + errn = _exiDecodeStartElement(state, *qnameID = 345, 774, 3); + break; + case 139: + errn = _exiDecodeStartElement(state, *qnameID = 347, 774, 173); + break; + case 140: + errn = _exiDecodeStartElement(state, *qnameID = 199, 774, 37); + break; + case 141: + errn = _exiDecodeStartElement(state, *qnameID = 82, 774, 321); + break; + case 142: + errn = _exiDecodeStartElement(state, *qnameID = 84, 774, 37); + break; + case 143: + errn = _exiDecodeStartElement(state, *qnameID = 85, 774, 291); + break; + case 144: + errn = _exiDecodeStartElement(state, *qnameID = 87, 774, 289); + break; + case 145: + errn = _exiDecodeStartElement(state, *qnameID = 88, 774, 289); + break; + case 146: + errn = _exiDecodeStartElement(state, *qnameID = 348, 774, 8); + break; + case 147: + errn = _exiDecodeStartElement(state, *qnameID = 349, 774, 158); + break; + case 148: + errn = _exiDecodeStartElement(state, *qnameID = 350, 774, 159); + break; + case 149: + errn = _exiDecodeStartElement(state, *qnameID = 353, 774, 410); + break; + case 150: + errn = _exiDecodeStartElement(state, *qnameID = 354, 774, 408); + break; + case 151: + errn = _exiDecodeStartElement(state, *qnameID = 355, 774, 15); + break; + case 152: + errn = _exiDecodeStartElement(state, *qnameID = 200, 774, 324); + break; + case 153: + errn = _exiDecodeStartElement(state, *qnameID = 202, 774, 327); + break; + case 154: + errn = _exiDecodeStartElement(state, *qnameID = 358, 774, 332); + break; + case 155: + errn = _exiDecodeStartElement(state, *qnameID = 204, 774, 694); + break; + case 156: + errn = _exiDecodeStartElement(state, *qnameID = 205, 774, 331); + break; + case 157: + errn = _exiDecodeStartElement(state, *qnameID = 207, 774, 356); + break; + case 158: + errn = _exiDecodeStartElement(state, *qnameID = 89, 774, 37); + break; + case 159: + errn = _exiDecodeStartElement(state, *qnameID = 209, 774, 358); + break; + case 160: + errn = _exiDecodeStartElement(state, *qnameID = 211, 774, 318); + break; + case 161: + errn = _exiDecodeStartElement(state, *qnameID = 213, 774, 394); + break; + case 162: + errn = _exiDecodeStartElement(state, *qnameID = 215, 774, 398); + break; + case 163: + errn = _exiDecodeStartElement(state, *qnameID = 361, 774, 362); + break; + case 164: + errn = _exiDecodeStartElement(state, *qnameID = 90, 774, 37); + break; + case 165: + errn = _exiDecodeStartElement(state, *qnameID = 363, 774, 29); + break; + case 166: + errn = _exiDecodeStartElement(state, *qnameID = 91, 774, 273); + break; + case 167: + errn = _exiDecodeStartElement(state, *qnameID = 217, 774, 29); + break; + case 168: + errn = _exiDecodeStartElement(state, *qnameID = 93, 774, 302); + break; + case 169: + errn = _exiDecodeStartElement(state, *qnameID = 364, 774, 160); + break; + case 170: + errn = _exiDecodeStartElement(state, *qnameID = 218, 774, 8); + break; + case 171: + errn = _exiDecodeStartElement(state, *qnameID = 219, 774, 8); + break; + case 172: + errn = _exiDecodeStartElement(state, *qnameID = 220, 774, 134); + break; + case 173: + errn = _exiDecodeStartElement(state, *qnameID = 221, 774, 41); + break; + case 174: + errn = _exiDecodeStartElement(state, *qnameID = 95, 774, 277); + break; + case 175: + errn = _exiDecodeStartElement(state, *qnameID = 222, 774, 15); + break; + case 176: + errn = _exiDecodeStartElement(state, *qnameID = 366, 774, 73); + break; + case 177: + errn = _exiDecodeStartElement(state, *qnameID = 223, 774, 101); + break; + case 178: + errn = _exiDecodeStartElement(state, *qnameID = 368, 774, 153); + break; + case 179: + errn = _exiDecodeStartElement(state, *qnameID = 370, 774, 154); + break; + case 180: + errn = _exiDecodeStartElement(state, *qnameID = 224, 774, 155); + break; + case 181: + errn = _exiDecodeStartElement(state, *qnameID = 371, 774, 155); + break; + case 182: + errn = _exiDecodeStartElement(state, *qnameID = 373, 774, 45); + break; + case 183: + errn = _exiDecodeStartElement(state, *qnameID = 97, 774, 295); + break; + case 184: + errn = _exiDecodeStartElement(state, *qnameID = 99, 774, 289); + break; + case 185: + errn = _exiDecodeStartElement(state, *qnameID = 375, 774, 169); + break; + case 186: + errn = _exiDecodeStartElement(state, *qnameID = 376, 774, 118); + break; + case 187: + errn = _exiDecodeStartElement(state, *qnameID = 377, 774, 176); + break; + case 188: + errn = _exiDecodeStartElement(state, *qnameID = 379, 774, 155); + break; + case 189: + errn = _exiDecodeStartElement(state, *qnameID = 100, 774, 37); + break; + case 190: + errn = _exiDecodeStartElement(state, *qnameID = 225, 774, 332); + break; + case 191: + errn = _exiDecodeStartElement(state, *qnameID = 381, 774, 336); + break; + case 192: + errn = _exiDecodeStartElement(state, *qnameID = 226, 774, 335); + break; + case 193: + errn = _exiDecodeStartElement(state, *qnameID = 384, 774, 714); + break; + case 194: + errn = _exiDecodeStartElement(state, *qnameID = 227, 774, 689); + break; + case 195: + errn = _exiDecodeStartElement(state, *qnameID = 385, 774, 689); + break; + case 196: + errn = _exiDecodeStartElement(state, *qnameID = 228, 774, 402); + break; + case 197: + errn = _exiDecodeStartElement(state, *qnameID = 230, 774, 404); + break; + case 198: + errn = _exiDecodeStartElement(state, *qnameID = 232, 774, 687); + break; + case 199: + errn = _exiDecodeStartElement(state, *qnameID = 234, 774, 692); + break; + case 200: + errn = _exiDecodeStartElement(state, *qnameID = 236, 774, 161); + break; + case 201: + errn = _exiDecodeStartElement(state, *qnameID = 386, 774, 161); + break; + case 202: + errn = _exiDecodeStartElement(state, *qnameID = 237, 774, 713); + break; + case 203: + errn = _exiDecodeStartElement(state, *qnameID = 388, 774, 118); + break; + case 204: + errn = _exiDecodeStartElement(state, *qnameID = 238, 774, 407); + break; + case 205: + errn = _exiDecodeStartElement(state, *qnameID = 239, 774, 118); + break; + case 206: + errn = _exiDecodeStartElement(state, *qnameID = 390, 774, 118); + break; + case 207: + errn = _exiDecodeStartElement(state, *qnameID = 240, 774, 313); + break; + case 208: + errn = _exiDecodeStartElement(state, *qnameID = 447, 774, 313); + break; + case 209: + errn = _exiDecodeStartElement(state, *qnameID = 241, 774, 729); + break; + case 210: + errn = _exiDecodeStartElement(state, *qnameID = 243, 774, 731); + break; + case 211: + errn = _exiDecodeStartElement(state, *qnameID = 245, 774, 735); + break; + case 212: + errn = _exiDecodeStartElement(state, *qnameID = 247, 774, 356); + break; + case 213: + errn = _exiDecodeStartElement(state, *qnameID = 392, 774, 37); + break; + case 214: + errn = _exiDecodeStartElement(state, *qnameID = 101, 774, 737); + break; + case 215: + errn = _exiDecodeStartElement(state, *qnameID = 102, 774, 742); + break; + case 216: + errn = _exiDecodeStartElement(state, *qnameID = 104, 774, 751); + break; + case 217: + errn = _exiDecodeStartElement(state, *qnameID = 106, 774, 753); + break; + case 218: + errn = _exiDecodeStartElement(state, *qnameID = 109, 774, 747); + break; + case 219: + errn = _exiDecodeStartElement(state, *qnameID = 111, 774, 739); + break; + case 220: + errn = _exiDecodeStartElement(state, *qnameID = 393, 774, 104); + break; + case 221: + errn = _exiDecodeStartElement(state, *qnameID = 395, 774, 704); + break; + case 222: + errn = _exiDecodeStartElement(state, *qnameID = 397, 774, 15); + break; + case 223: + errn = _exiDecodeStartElement(state, *qnameID = 398, 774, 45); + break; + case 224: + errn = _exiDecodeStartElement(state, *qnameID = 113, 774, 281); + break; + case 225: + errn = _exiDecodeStartElement(state, *qnameID = 115, 774, 280); + break; + case 226: + errn = _exiDecodeStartElement(state, *qnameID = 399, 774, 12); + break; + case 227: + errn = _exiDecodeStartElement(state, *qnameID = 444, 774, 759); + break; + case 228: + errn = _exiDecodeStartElement(state, *qnameID = 400, 774, 15); + break; + case 229: + errn = _exiDecodeStartElement(state, *qnameID = 249, 774, 46); + break; + case 230: + errn = _exiDecodeStartElement(state, *qnameID = 251, 774, 398); + break; + case 231: + errn = _exiDecodeStartElement(state, *qnameID = 117, 774, 289); + break; + case 232: + errn = _exiDecodeStartElement(state, *qnameID = 118, 774, 289); + break; + case 233: + errn = _exiDecodeStartElement(state, *qnameID = 119, 774, 287); + break; + case 234: + errn = _exiDecodeStartElement(state, *qnameID = 121, 774, 74); + break; + case 235: + errn = _exiDecodeStartElement(state, *qnameID = 122, 774, 73); + break; + case 236: + errn = _exiDecodeStartElement(state, *qnameID = 124, 774, 289); + break; + case 237: + errn = _exiDecodeStartElement(state, *qnameID = 125, 774, 15); + break; + case 238: + errn = _exiDecodeStartElement(state, *qnameID = 126, 774, 74); + break; + case 239: + errn = _exiDecodeStartElement(state, *qnameID = 127, 774, 74); + break; + case 240: + errn = _exiDecodeStartElement(state, *qnameID = 128, 774, 37); + break; + case 241: + errn = _exiDecodeStartElement(state, *qnameID = 401, 774, 3); + break; + case 242: + errn = _exiDecodeStartElement(state, *qnameID = 402, 774, 9); + break; + case 243: + errn = _exiDecodeStartElement(state, *qnameID = 403, 774, 29); + break; + case 244: + errn = _exiDecodeStartElement(state, *qnameID = 404, 774, 412); + break; + case 245: + errn = _exiDecodeStartElement(state, *qnameID = 408, 774, 26); + break; + case 246: + errn = _exiDecodeStartElement(state, *qnameID = 411, 774, 161); + break; + case 247: + errn = _exiDecodeStartElement(state, *qnameID = 253, 774, 773); + break; + case 248: + errn = _exiDecodeStartElement(state, *qnameID = 418, 774, 15); + break; + case 249: + errn = _exiDecodeStartElement(state, *qnameID = 425, 774, 8); + break; + case 250: + errn = _exiDecodeStartElement(state, *qnameID = 433, 774, 15); + break; + case 251: + errn = _exiDecodeStartElement(state, *qnameID = 435, 774, 161); + break; + case 252: + errn = _exiDecodeStartElement(state, *qnameID = 436, 774, 8); + break; + case 253: + errn = _exiDecodeStartElement(state, *qnameID = 437, 774, 74); + break; + } + break; + case 774: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 254, 774, 2); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 256, 774, 23); + break; + case 2: + errn = _exiDecodeStartElement(state, *qnameID = 129, 774, 24); + break; + case 3: + errn = _exiDecodeStartElement(state, *qnameID = 258, 774, 24); + break; + case 4: + errn = _exiDecodeStartElement(state, *qnameID = 130, 774, 35); + break; + case 5: + errn = _exiDecodeStartElement(state, *qnameID = 132, 774, 40); + break; + case 6: + errn = _exiDecodeStartElement(state, *qnameID = 442, 774, 768); + break; + case 7: + errn = _exiDecodeStartElement(state, *qnameID = 135, 774, 45); + break; + case 8: + errn = _exiDecodeStartElement(state, *qnameID = 137, 774, 29); + break; + case 9: + errn = _exiDecodeStartElement(state, *qnameID = 260, 774, 29); + break; + case 10: + errn = _exiDecodeStartElement(state, *qnameID = 261, 774, 52); + break; + case 11: + errn = _exiDecodeStartElement(state, *qnameID = 138, 774, 46); + break; + case 12: + errn = _exiDecodeStartElement(state, *qnameID = 140, 774, 56); + break; + case 13: + errn = _exiDecodeStartElement(state, *qnameID = 59, 774, 66); + break; + case 14: + errn = _exiDecodeStartElement(state, *qnameID = 262, 774, 37); + break; + case 15: + errn = _exiDecodeStartElement(state, *qnameID = 142, 774, 69); + break; + case 16: + errn = _exiDecodeStartElement(state, *qnameID = 144, 774, 99); + break; + case 17: + errn = _exiDecodeStartElement(state, *qnameID = 146, 774, 120); + break; + case 18: + errn = _exiDecodeStartElement(state, *qnameID = 148, 774, 124); + break; + case 19: + errn = _exiDecodeStartElement(state, *qnameID = 150, 774, 132); + break; + case 20: + errn = _exiDecodeStartElement(state, *qnameID = 152, 774, 150); + break; + case 21: + errn = _exiDecodeStartElement(state, *qnameID = 154, 774, 26); + break; + case 22: + errn = _exiDecodeStartElement(state, *qnameID = 155, 774, 698); + break; + case 23: + errn = _exiDecodeStartElement(state, *qnameID = 156, 774, 29); + break; + case 24: + errn = _exiDecodeStartElement(state, *qnameID = 265, 774, 29); + break; + case 25: + errn = _exiDecodeStartElement(state, *qnameID = 157, 774, 361); + break; + case 26: + errn = _exiDecodeStartElement(state, *qnameID = 266, 774, 365); + break; + case 27: + errn = _exiDecodeStartElement(state, *qnameID = 267, 774, 8); + break; + case 28: + errn = _exiDecodeStartElement(state, *qnameID = 268, 774, 3); + break; + case 29: + errn = _exiDecodeStartElement(state, *qnameID = 158, 774, 332); + break; + case 30: + errn = _exiDecodeStartElement(state, *qnameID = 159, 774, 209); + break; + case 31: + errn = _exiDecodeStartElement(state, *qnameID = 161, 774, 210); + break; + case 32: + errn = _exiDecodeStartElement(state, *qnameID = 270, 774, 179); + break; + case 33: + errn = _exiDecodeStartElement(state, *qnameID = 163, 774, 101); + break; + case 34: + errn = _exiDecodeStartElement(state, *qnameID = 164, 774, 112); + break; + case 35: + errn = _exiDecodeStartElement(state, *qnameID = 273, 774, 181); + break; + case 36: + errn = _exiDecodeStartElement(state, *qnameID = 165, 774, 225); + break; + case 37: + errn = _exiDecodeStartElement(state, *qnameID = 167, 774, 236); + break; + case 38: + errn = _exiDecodeStartElement(state, *qnameID = 275, 774, 137); + break; + case 39: + errn = _exiDecodeStartElement(state, *qnameID = 278, 774, 251); + break; + case 40: + errn = _exiDecodeStartElement(state, *qnameID = 280, 774, 198); + break; + case 41: + errn = _exiDecodeStartElement(state, *qnameID = 169, 774, 58); + break; + case 42: + errn = _exiDecodeStartElement(state, *qnameID = 282, 774, 58); + break; + case 43: + errn = _exiDecodeStartElement(state, *qnameID = 170, 774, 47); + break; + case 44: + errn = _exiDecodeStartElement(state, *qnameID = 285, 774, 47); + break; + case 45: + errn = _exiDecodeStartElement(state, *qnameID = 171, 774, 112); + break; + case 46: + errn = _exiDecodeStartElement(state, *qnameID = 62, 774, 255); + break; + case 47: + errn = _exiDecodeStartElement(state, *qnameID = 287, 774, 3); + break; + case 48: + errn = _exiDecodeStartElement(state, *qnameID = 64, 774, 66); + break; + case 49: + errn = _exiDecodeStartElement(state, *qnameID = 66, 774, 37); + break; + case 50: + errn = _exiDecodeStartElement(state, *qnameID = 289, 774, 8); + break; + case 51: + errn = _exiDecodeStartElement(state, *qnameID = 291, 774, 173); + break; + case 52: + errn = _exiDecodeStartElement(state, *qnameID = 172, 774, 313); + break; + case 53: + errn = _exiDecodeStartElement(state, *qnameID = 292, 774, 147); + break; + case 54: + errn = _exiDecodeStartElement(state, *qnameID = 294, 774, 8); + break; + case 55: + errn = _exiDecodeStartElement(state, *qnameID = 295, 774, 8); + break; + case 56: + errn = _exiDecodeStartElement(state, *qnameID = 296, 774, 49); + break; + case 57: + errn = _exiDecodeStartElement(state, *qnameID = 297, 774, 8); + break; + case 58: + errn = _exiDecodeStartElement(state, *qnameID = 298, 774, 8); + break; + case 59: + errn = _exiDecodeStartElement(state, *qnameID = 173, 774, 8); + break; + case 60: + errn = _exiDecodeStartElement(state, *qnameID = 299, 774, 8); + break; + case 61: + errn = _exiDecodeStartElement(state, *qnameID = 174, 774, 8); + break; + case 62: + errn = _exiDecodeStartElement(state, *qnameID = 300, 774, 8); + break; + case 63: + errn = _exiDecodeStartElement(state, *qnameID = 175, 774, 8); + break; + case 64: + errn = _exiDecodeStartElement(state, *qnameID = 301, 774, 8); + break; + case 65: + errn = _exiDecodeStartElement(state, *qnameID = 302, 774, 8); + break; + case 66: + errn = _exiDecodeStartElement(state, *qnameID = 303, 774, 45); + break; + case 67: + errn = _exiDecodeStartElement(state, *qnameID = 305, 774, 52); + break; + case 68: + errn = _exiDecodeStartElement(state, *qnameID = 306, 774, 29); + break; + case 69: + errn = _exiDecodeStartElement(state, *qnameID = 307, 774, 45); + break; + case 70: + errn = _exiDecodeStartElement(state, *qnameID = 176, 774, 29); + break; + case 71: + errn = _exiDecodeStartElement(state, *qnameID = 309, 774, 8); + break; + case 72: + errn = _exiDecodeStartElement(state, *qnameID = 310, 774, 8); + break; + case 73: + errn = _exiDecodeStartElement(state, *qnameID = 177, 774, 118); + break; + case 74: + errn = _exiDecodeStartElement(state, *qnameID = 311, 774, 61); + break; + case 75: + errn = _exiDecodeStartElement(state, *qnameID = 178, 774, 8); + break; + case 76: + errn = _exiDecodeStartElement(state, *qnameID = 312, 774, 8); + break; + case 77: + errn = _exiDecodeStartElement(state, *qnameID = 179, 774, 8); + break; + case 78: + errn = _exiDecodeStartElement(state, *qnameID = 313, 774, 8); + break; + case 79: + errn = _exiDecodeStartElement(state, *qnameID = 180, 774, 8); + break; + case 80: + errn = _exiDecodeStartElement(state, *qnameID = 314, 774, 8); + break; + case 81: + errn = _exiDecodeStartElement(state, *qnameID = 181, 774, 8); + break; + case 82: + errn = _exiDecodeStartElement(state, *qnameID = 315, 774, 8); + break; + case 83: + errn = _exiDecodeStartElement(state, *qnameID = 316, 774, 8); + break; + case 84: + errn = _exiDecodeStartElement(state, *qnameID = 317, 774, 8); + break; + case 85: + errn = _exiDecodeStartElement(state, *qnameID = 318, 774, 8); + break; + case 86: + errn = _exiDecodeStartElement(state, *qnameID = 319, 774, 26); + break; + case 87: + errn = _exiDecodeStartElement(state, *qnameID = 321, 774, 8); + break; + case 88: + errn = _exiDecodeStartElement(state, *qnameID = 182, 774, 29); + break; + case 89: + errn = _exiDecodeStartElement(state, *qnameID = 183, 774, 8); + break; + case 90: + errn = _exiDecodeStartElement(state, *qnameID = 184, 774, 8); + break; + case 91: + errn = _exiDecodeStartElement(state, *qnameID = 185, 774, 26); + break; + case 92: + errn = _exiDecodeStartElement(state, *qnameID = 323, 774, 263); + break; + case 93: + errn = _exiDecodeStartElement(state, *qnameID = 324, 774, 49); + break; + case 94: + errn = _exiDecodeStartElement(state, *qnameID = 186, 774, 15); + break; + case 95: + errn = _exiDecodeStartElement(state, *qnameID = 187, 774, 29); + break; + case 96: + errn = _exiDecodeStartElement(state, *qnameID = 326, 774, 45); + break; + case 97: + errn = _exiDecodeStartElement(state, *qnameID = 188, 774, 8); + break; + case 98: + errn = _exiDecodeStartElement(state, *qnameID = 189, 774, 8); + break; + case 99: + errn = _exiDecodeStartElement(state, *qnameID = 328, 774, 134); + break; + case 100: + errn = _exiDecodeStartElement(state, *qnameID = 330, 774, 266); + break; + case 101: + errn = _exiDecodeStartElement(state, *qnameID = 68, 774, 37); + break; + case 102: + errn = _exiDecodeStartElement(state, *qnameID = 332, 774, 26); + break; + case 103: + errn = _exiDecodeStartElement(state, *qnameID = 333, 774, 118); + break; + case 104: + errn = _exiDecodeStartElement(state, *qnameID = 334, 774, 29); + break; + case 105: + errn = _exiDecodeStartElement(state, *qnameID = 335, 774, 52); + break; + case 106: + errn = _exiDecodeStartElement(state, *qnameID = 69, 774, 37); + break; + case 107: + errn = _exiDecodeStartElement(state, *qnameID = 190, 774, 37); + break; + case 108: + errn = _exiDecodeStartElement(state, *qnameID = 70, 774, 219); + break; + case 109: + errn = _exiDecodeStartElement(state, *qnameID = 443, 774, 760); + break; + case 110: + errn = _exiDecodeStartElement(state, *qnameID = 72, 774, 37); + break; + case 111: + errn = _exiDecodeStartElement(state, *qnameID = 73, 774, 268); + break; + case 112: + errn = _exiDecodeStartElement(state, *qnameID = 75, 774, 74); + break; + case 113: + errn = _exiDecodeStartElement(state, *qnameID = 76, 774, 271); + break; + case 114: + errn = _exiDecodeStartElement(state, *qnameID = 192, 774, 72); + break; + case 115: + errn = _exiDecodeStartElement(state, *qnameID = 78, 774, 300); + break; + case 116: + errn = _exiDecodeStartElement(state, *qnameID = 193, 774, 3); + break; + case 117: + errn = _exiDecodeStartElement(state, *qnameID = 339, 774, 118); + break; + case 118: + errn = _exiDecodeStartElement(state, *qnameID = 194, 774, 215); + break; + case 119: + errn = _exiDecodeStartElement(state, *qnameID = 341, 774, 3); + break; + case 120: + errn = _exiDecodeStartElement(state, *qnameID = 342, 774, 219); + break; + case 121: + errn = _exiDecodeStartElement(state, *qnameID = 195, 774, 311); + break; + case 122: + errn = _exiDecodeStartElement(state, *qnameID = 197, 774, 318); + break; + case 123: + errn = _exiDecodeStartElement(state, *qnameID = 80, 774, 74); + break; + case 124: + errn = _exiDecodeStartElement(state, *qnameID = 81, 774, 37); + break; + case 125: + errn = _exiDecodeStartElement(state, *qnameID = 343, 774, 9); + break; + case 126: + errn = _exiDecodeStartElement(state, *qnameID = 446, 774, 762); + break; + case 127: + errn = _exiDecodeStartElement(state, *qnameID = 345, 774, 3); + break; + case 128: + errn = _exiDecodeStartElement(state, *qnameID = 347, 774, 173); + break; + case 129: + errn = _exiDecodeStartElement(state, *qnameID = 199, 774, 37); + break; + case 130: + errn = _exiDecodeStartElement(state, *qnameID = 82, 774, 321); + break; + case 131: + errn = _exiDecodeStartElement(state, *qnameID = 84, 774, 37); + break; + case 132: + errn = _exiDecodeStartElement(state, *qnameID = 85, 774, 291); + break; + case 133: + errn = _exiDecodeStartElement(state, *qnameID = 87, 774, 289); + break; + case 134: + errn = _exiDecodeStartElement(state, *qnameID = 88, 774, 289); + break; + case 135: + errn = _exiDecodeStartElement(state, *qnameID = 348, 774, 8); + break; + case 136: + errn = _exiDecodeStartElement(state, *qnameID = 349, 774, 158); + break; + case 137: + errn = _exiDecodeStartElement(state, *qnameID = 350, 774, 159); + break; + case 138: + errn = _exiDecodeStartElement(state, *qnameID = 353, 774, 410); + break; + case 139: + errn = _exiDecodeStartElement(state, *qnameID = 354, 774, 408); + break; + case 140: + errn = _exiDecodeStartElement(state, *qnameID = 355, 774, 15); + break; + case 141: + errn = _exiDecodeStartElement(state, *qnameID = 200, 774, 324); + break; + case 142: + errn = _exiDecodeStartElement(state, *qnameID = 202, 774, 327); + break; + case 143: + errn = _exiDecodeStartElement(state, *qnameID = 358, 774, 332); + break; + case 144: + errn = _exiDecodeStartElement(state, *qnameID = 204, 774, 694); + break; + case 145: + errn = _exiDecodeStartElement(state, *qnameID = 205, 774, 331); + break; + case 146: + errn = _exiDecodeStartElement(state, *qnameID = 207, 774, 356); + break; + case 147: + errn = _exiDecodeStartElement(state, *qnameID = 89, 774, 37); + break; + case 148: + errn = _exiDecodeStartElement(state, *qnameID = 209, 774, 358); + break; + case 149: + errn = _exiDecodeStartElement(state, *qnameID = 211, 774, 318); + break; + case 150: + errn = _exiDecodeStartElement(state, *qnameID = 213, 774, 394); + break; + case 151: + errn = _exiDecodeStartElement(state, *qnameID = 215, 774, 398); + break; + case 152: + errn = _exiDecodeStartElement(state, *qnameID = 361, 774, 362); + break; + case 153: + errn = _exiDecodeStartElement(state, *qnameID = 90, 774, 37); + break; + case 154: + errn = _exiDecodeStartElement(state, *qnameID = 363, 774, 29); + break; + case 155: + errn = _exiDecodeStartElement(state, *qnameID = 91, 774, 273); + break; + case 156: + errn = _exiDecodeStartElement(state, *qnameID = 217, 774, 29); + break; + case 157: + errn = _exiDecodeStartElement(state, *qnameID = 93, 774, 302); + break; + case 158: + errn = _exiDecodeStartElement(state, *qnameID = 364, 774, 160); + break; + case 159: + errn = _exiDecodeStartElement(state, *qnameID = 218, 774, 8); + break; + case 160: + errn = _exiDecodeStartElement(state, *qnameID = 219, 774, 8); + break; + case 161: + errn = _exiDecodeStartElement(state, *qnameID = 220, 774, 134); + break; + case 162: + errn = _exiDecodeStartElement(state, *qnameID = 221, 774, 41); + break; + case 163: + errn = _exiDecodeStartElement(state, *qnameID = 95, 774, 277); + break; + case 164: + errn = _exiDecodeStartElement(state, *qnameID = 222, 774, 15); + break; + case 165: + errn = _exiDecodeStartElement(state, *qnameID = 366, 774, 73); + break; + case 166: + errn = _exiDecodeStartElement(state, *qnameID = 223, 774, 101); + break; + case 167: + errn = _exiDecodeStartElement(state, *qnameID = 368, 774, 153); + break; + case 168: + errn = _exiDecodeStartElement(state, *qnameID = 370, 774, 154); + break; + case 169: + errn = _exiDecodeStartElement(state, *qnameID = 224, 774, 155); + break; + case 170: + errn = _exiDecodeStartElement(state, *qnameID = 371, 774, 155); + break; + case 171: + errn = _exiDecodeStartElement(state, *qnameID = 373, 774, 45); + break; + case 172: + errn = _exiDecodeStartElement(state, *qnameID = 97, 774, 295); + break; + case 173: + errn = _exiDecodeStartElement(state, *qnameID = 99, 774, 289); + break; + case 174: + errn = _exiDecodeStartElement(state, *qnameID = 375, 774, 169); + break; + case 175: + errn = _exiDecodeStartElement(state, *qnameID = 376, 774, 118); + break; + case 176: + errn = _exiDecodeStartElement(state, *qnameID = 377, 774, 176); + break; + case 177: + errn = _exiDecodeStartElement(state, *qnameID = 379, 774, 155); + break; + case 178: + errn = _exiDecodeStartElement(state, *qnameID = 100, 774, 37); + break; + case 179: + errn = _exiDecodeStartElement(state, *qnameID = 225, 774, 332); + break; + case 180: + errn = _exiDecodeStartElement(state, *qnameID = 381, 774, 336); + break; + case 181: + errn = _exiDecodeStartElement(state, *qnameID = 226, 774, 335); + break; + case 182: + errn = _exiDecodeStartElement(state, *qnameID = 384, 774, 714); + break; + case 183: + errn = _exiDecodeStartElement(state, *qnameID = 227, 774, 689); + break; + case 184: + errn = _exiDecodeStartElement(state, *qnameID = 385, 774, 689); + break; + case 185: + errn = _exiDecodeStartElement(state, *qnameID = 228, 774, 402); + break; + case 186: + errn = _exiDecodeStartElement(state, *qnameID = 230, 774, 404); + break; + case 187: + errn = _exiDecodeStartElement(state, *qnameID = 232, 774, 687); + break; + case 188: + errn = _exiDecodeStartElement(state, *qnameID = 234, 774, 692); + break; + case 189: + errn = _exiDecodeStartElement(state, *qnameID = 236, 774, 161); + break; + case 190: + errn = _exiDecodeStartElement(state, *qnameID = 386, 774, 161); + break; + case 191: + errn = _exiDecodeStartElement(state, *qnameID = 237, 774, 713); + break; + case 192: + errn = _exiDecodeStartElement(state, *qnameID = 388, 774, 118); + break; + case 193: + errn = _exiDecodeStartElement(state, *qnameID = 238, 774, 407); + break; + case 194: + errn = _exiDecodeStartElement(state, *qnameID = 239, 774, 118); + break; + case 195: + errn = _exiDecodeStartElement(state, *qnameID = 390, 774, 118); + break; + case 196: + errn = _exiDecodeStartElement(state, *qnameID = 240, 774, 313); + break; + case 197: + errn = _exiDecodeStartElement(state, *qnameID = 447, 774, 313); + break; + case 198: + errn = _exiDecodeStartElement(state, *qnameID = 241, 774, 729); + break; + case 199: + errn = _exiDecodeStartElement(state, *qnameID = 243, 774, 731); + break; + case 200: + errn = _exiDecodeStartElement(state, *qnameID = 245, 774, 735); + break; + case 201: + errn = _exiDecodeStartElement(state, *qnameID = 247, 774, 356); + break; + case 202: + errn = _exiDecodeStartElement(state, *qnameID = 392, 774, 37); + break; + case 203: + errn = _exiDecodeStartElement(state, *qnameID = 101, 774, 737); + break; + case 204: + errn = _exiDecodeStartElement(state, *qnameID = 102, 774, 742); + break; + case 205: + errn = _exiDecodeStartElement(state, *qnameID = 104, 774, 751); + break; + case 206: + errn = _exiDecodeStartElement(state, *qnameID = 106, 774, 753); + break; + case 207: + errn = _exiDecodeStartElement(state, *qnameID = 109, 774, 747); + break; + case 208: + errn = _exiDecodeStartElement(state, *qnameID = 111, 774, 739); + break; + case 209: + errn = _exiDecodeStartElement(state, *qnameID = 393, 774, 104); + break; + case 210: + errn = _exiDecodeStartElement(state, *qnameID = 395, 774, 704); + break; + case 211: + errn = _exiDecodeStartElement(state, *qnameID = 397, 774, 15); + break; + case 212: + errn = _exiDecodeStartElement(state, *qnameID = 398, 774, 45); + break; + case 213: + errn = _exiDecodeStartElement(state, *qnameID = 113, 774, 281); + break; + case 214: + errn = _exiDecodeStartElement(state, *qnameID = 115, 774, 280); + break; + case 215: + errn = _exiDecodeStartElement(state, *qnameID = 399, 774, 12); + break; + case 216: + errn = _exiDecodeStartElement(state, *qnameID = 444, 774, 759); + break; + case 217: + errn = _exiDecodeStartElement(state, *qnameID = 400, 774, 15); + break; + case 218: + errn = _exiDecodeStartElement(state, *qnameID = 249, 774, 46); + break; + case 219: + errn = _exiDecodeStartElement(state, *qnameID = 251, 774, 398); + break; + case 220: + errn = _exiDecodeStartElement(state, *qnameID = 117, 774, 289); + break; + case 221: + errn = _exiDecodeStartElement(state, *qnameID = 118, 774, 289); + break; + case 222: + errn = _exiDecodeStartElement(state, *qnameID = 119, 774, 287); + break; + case 223: + errn = _exiDecodeStartElement(state, *qnameID = 121, 774, 74); + break; + case 224: + errn = _exiDecodeStartElement(state, *qnameID = 122, 774, 73); + break; + case 225: + errn = _exiDecodeStartElement(state, *qnameID = 124, 774, 289); + break; + case 226: + errn = _exiDecodeStartElement(state, *qnameID = 125, 774, 15); + break; + case 227: + errn = _exiDecodeStartElement(state, *qnameID = 126, 774, 74); + break; + case 228: + errn = _exiDecodeStartElement(state, *qnameID = 127, 774, 74); + break; + case 229: + errn = _exiDecodeStartElement(state, *qnameID = 128, 774, 37); + break; + case 230: + errn = _exiDecodeStartElement(state, *qnameID = 401, 774, 3); + break; + case 231: + errn = _exiDecodeStartElement(state, *qnameID = 402, 774, 9); + break; + case 232: + errn = _exiDecodeStartElement(state, *qnameID = 403, 774, 29); + break; + case 233: + errn = _exiDecodeStartElement(state, *qnameID = 404, 774, 412); + break; + case 234: + errn = _exiDecodeStartElement(state, *qnameID = 408, 774, 26); + break; + case 235: + errn = _exiDecodeStartElement(state, *qnameID = 411, 774, 161); + break; + case 236: + errn = _exiDecodeStartElement(state, *qnameID = 253, 774, 773); + break; + case 237: + errn = _exiDecodeStartElement(state, *qnameID = 418, 774, 15); + break; + case 238: + errn = _exiDecodeStartElement(state, *qnameID = 425, 774, 8); + break; + case 239: + errn = _exiDecodeStartElement(state, *qnameID = 433, 774, 15); + break; + case 240: + errn = _exiDecodeStartElement(state, *qnameID = 435, 774, 161); + break; + case 241: + errn = _exiDecodeStartElement(state, *qnameID = 436, 774, 8); + break; + case 242: + errn = _exiDecodeStartElement(state, *qnameID = 437, 774, 74); + break; + } + break; + case 801: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 287, 4, 3); + break; + } + break; + case 802: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 345, 264, 3); + break; + } + break; + case 803: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 364, 4, 160); + break; + case 1: + errn = _exiDecodeStartElement(state, *qnameID = 398, 4, 45); + break; + } + break; + case 804: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(state->eventCode) { + case 0: + errn = _exiDecodeStartElement(state, *qnameID = 386, 715, 161); + break; + } + break; + + } + break; + case EXI_EVENT_START_ELEMENT_NS: + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT; + break; + case EXI_EVENT_START_ELEMENT_GENERIC: + errn = _exiDecodeQName(stream, state, qnameID, + &_qname); + if (errn == 0) { + /* update current rule, according next SE(*) grammar */ + switch (state->grammarStack[state->stackIndex]) { + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT_GENERIC] --> DocEnd[END_DOCUMENT] */ + state->grammarStack[state->stackIndex] = 22; + break; + case 67: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 68; + break; + case 68: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 68; + break; + case 268: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 270; + break; + case 269: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 270; + break; + case 270: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 270; + break; + case 271: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 272; + break; + case 276: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 272; + break; + case 282: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 283; + break; + case 283: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 283; + break; + case 287: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 288; + break; + case 288: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 288; + break; + case 290: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 288; + break; + case 292: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] --> Element[START_ELEMENT_GENERIC, END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 293; + break; + case 293: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT] --> Element[START_ELEMENT_GENERIC, END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 293; + break; + case 296: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */ + state->grammarStack[state->stackIndex] = 297; + break; + case 299: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 270; + break; + case 321: + /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 68; + break; + case 322: + /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 68; + break; + case 323: + /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 68; + break; + case 743: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 68; + break; + case 744: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 68; + break; + case 755: + /* StartTag[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 68; + break; + case 756: + /* Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 68; + break; + case 772: + /* FragmentContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_DOCUMENT] --> FragmentContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_DOCUMENT] */ + state->grammarStack[state->stackIndex] = 772; + break; + case 773: + /* First(xsi:type)(xsi:nil)StartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 774; + break; + case 774: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 774; + break; + case 778: + /* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + state->grammarStack[state->stackIndex] = 68; + break; + + default: + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT; + break; + } + if (errn == 0) { + /* retrieve global grammar(existing OR runtime) and push it stack */ + errn = exi_v2g_RetrieveAndPushGlobalGrammar(state, *qnameID); + } + } + break; + case EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED: + errn = _exiDecodeQName(stream, state, qnameID, + &_qname); + if (errn == 0) { + /* update current rule --> element content rule (if not already) */ + errn = exi_v2g_MoveToElementContentRule(state); + if (errn == 0) { + /* retrieve global grammar(existing OR runtime) and push it stack */ + errn = exi_v2g_RetrieveAndPushGlobalGrammar(state, *qnameID); + } + } + break; + default: + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT; + break; + } + + return (errn); +} + + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ +int exiv2gDecodeEndElement(bitstream_t* stream, exi_state_t* state, uint16_t* qnameID) { + int16_t currentID; + errn = 0; + switch(currEvent) { + case EXI_EVENT_END_ELEMENT_UNDECLARED: + currentID = state->grammarStack[state->stackIndex]; + if (currentID < 0) { + + /* runtime grammars do have IDs smaller than 0 */ + /* learn EE event */ + errn = exi_v2g_LearnEndElement(state); + + } + if(errn == 0) { + /* copy IDs */ + *qnameID = state->elementStack[state->stackIndex]; + errn = (exi_v2g_PopStack(state)); + } + break; + default: + /* copy IDs */ + *qnameID = state->elementStack[state->stackIndex]; + errn = (exi_v2g_PopStack(state)); + break; + } + + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ + + +int exiv2gDecodeCharacters(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + int16_t moveOnID = 0; + errn = EXI_ERROR_UNEXPECTED_CHARACTERS; + + switch(currEvent) { + case EXI_EVENT_CHARACTERS: + case EXI_EVENT_CHARACTERS_GENERIC: + switch (state->grammarStack[state->stackIndex]) { + case 67: + /* STRING */ + case 68: + /* STRING */ + case 321: + /* STRING */ + case 322: + /* STRING */ + case 323: + /* STRING */ + case 778: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 68; /* move on ID */ + break; + case 776: + /* LIST */ + case 777: + /* LIST */ + val->type = EXI_DATATYPE_LIST; + val->list.type = EXI_DATATYPE_STRING; + errn = decodeUnsignedInteger16(stream, &val->list.len); + moveOnID = 4; /* move on ID */ + break; + case 41: + /* ENUMERATION */ + case 42: + /* ENUMERATION */ + val->type = EXI_DATATYPE_ENUMERATION; + errn = decodeNBitUnsignedInteger(stream, 5, &val->enumeration); + moveOnID = 4; /* move on ID */ + break; + case 268: + /* STRING */ + case 269: + /* STRING */ + case 299: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 299; /* move on ID */ + break; + case 270: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 270; /* move on ID */ + break; + case 786: + /* FLOAT */ + case 787: + /* FLOAT */ + val->type = EXI_DATATYPE_FLOAT; + errn = decodeFloat(stream, &val->float_me); + moveOnID = 4; /* move on ID */ + break; + case 365: + /* NBIT_UNSIGNED_INTEGER */ + case 366: + /* NBIT_UNSIGNED_INTEGER */ + val->type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + errn = _decodeNBitIntegerValue(stream, &val->integer, 2, 1); + moveOnID = 4; /* move on ID */ + break; + case 15: + /* INTEGER */ + case 16: + /* INTEGER */ + case 219: + /* INTEGER */ + val->type = EXI_DATATYPE_INTEGER; + errn = decodeInteger(stream, &val->integer); + moveOnID = 4; /* move on ID */ + break; + case 784: + /* DECIMAL */ + case 785: + /* DECIMAL */ + val->type = EXI_DATATYPE_DECIMAL; + errn = decodeDecimal(stream, &val->decimal); + moveOnID = 4; /* move on ID */ + break; + case 796: + /* DATETIME */ + case 797: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_GYEARMONTH, &val->datetime); + moveOnID = 4; /* move on ID */ + break; + case 271: + /* STRING */ + case 276: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 276; /* move on ID */ + break; + case 3: + /* UNSIGNED_INTEGER */ + case 6: + /* UNSIGNED_INTEGER */ + case 161: + /* UNSIGNED_INTEGER */ + val->type = EXI_DATATYPE_UNSIGNED_INTEGER; + errn = decodeUnsignedInteger(stream, &val->integer); + moveOnID = 4; /* move on ID */ + break; + case 29: + /* BOOLEAN */ + case 30: + /* BOOLEAN */ + val->type = EXI_DATATYPE_BOOLEAN; + errn = decodeBoolean(stream, &val->boolean); + moveOnID = 4; /* move on ID */ + break; + case 52: + /* NBIT_UNSIGNED_INTEGER */ + case 53: + /* NBIT_UNSIGNED_INTEGER */ + val->type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + errn = _decodeNBitIntegerValue(stream, &val->integer, 7, 0); + moveOnID = 4; /* move on ID */ + break; + case 788: + /* DATETIME */ + case 789: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_GDAY, &val->datetime); + moveOnID = 4; /* move on ID */ + break; + case 49: + /* ENUMERATION */ + case 50: + /* ENUMERATION */ + val->type = EXI_DATATYPE_ENUMERATION; + errn = decodeNBitUnsignedInteger(stream, 4, &val->enumeration); + moveOnID = 4; /* move on ID */ + break; + case 794: + /* DATETIME */ + case 795: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_GYEAR, &val->datetime); + moveOnID = 4; /* move on ID */ + break; + case 782: + /* DATETIME */ + case 783: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_DATETIME, &val->datetime); + moveOnID = 4; /* move on ID */ + break; + case 12: + /* ENUMERATION */ + case 13: + /* ENUMERATION */ + case 61: + /* ENUMERATION */ + case 62: + /* ENUMERATION */ + case 134: + /* ENUMERATION */ + case 135: + /* ENUMERATION */ + val->type = EXI_DATATYPE_ENUMERATION; + errn = decodeNBitUnsignedInteger(stream, 3, &val->enumeration); + moveOnID = 4; /* move on ID */ + break; + case 74: + /* STRING */ + case 75: + /* STRING */ + case 117: + /* STRING */ + case 118: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 4; /* move on ID */ + break; + case 332: + /* ENUMERATION */ + case 333: + /* ENUMERATION */ + val->type = EXI_DATATYPE_ENUMERATION; + errn = decodeNBitUnsignedInteger(stream, 1, &val->enumeration); + moveOnID = 4; /* move on ID */ + break; + case 155: + /* NBIT_UNSIGNED_INTEGER */ + case 156: + /* NBIT_UNSIGNED_INTEGER */ + val->type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + errn = _decodeNBitIntegerValue(stream, &val->integer, 8, 1); + moveOnID = 4; /* move on ID */ + break; + case 773: + /* STRING */ + case 774: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 774; /* move on ID */ + break; + case 272: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 272; /* move on ID */ + break; + case 282: + /* STRING */ + case 283: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 283; /* move on ID */ + break; + case 37: + /* BINARY_BASE64 */ + case 38: + /* BINARY_BASE64 */ + case 113: + /* BINARY_BASE64 */ + case 289: + /* BINARY_BASE64 */ + case 747: + /* BINARY_BASE64 */ + val->type = EXI_DATATYPE_BINARY_BASE64; + errn = decodeBinary(stream, &val->binary); + moveOnID = 4; /* move on ID */ + break; + case 790: + /* DATETIME */ + case 791: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_GMONTH, &val->datetime); + moveOnID = 4; /* move on ID */ + break; + case 412: + /* NBIT_UNSIGNED_INTEGER */ + case 413: + /* NBIT_UNSIGNED_INTEGER */ + case 779: + /* NBIT_UNSIGNED_INTEGER */ + val->type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + errn = _decodeNBitIntegerValue(stream, &val->integer, 8, -128); + moveOnID = 4; /* move on ID */ + break; + case 173: + /* NBIT_UNSIGNED_INTEGER */ + case 174: + /* NBIT_UNSIGNED_INTEGER */ + case 800: + /* NBIT_UNSIGNED_INTEGER */ + val->type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + errn = _decodeNBitIntegerValue(stream, &val->integer, 8, 0); + moveOnID = 4; /* move on ID */ + break; + case 798: + /* DATETIME */ + case 799: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_TIME, &val->datetime); + moveOnID = 4; /* move on ID */ + break; + case 26: + /* ENUMERATION */ + case 27: + /* ENUMERATION */ + case 689: + /* ENUMERATION */ + case 690: + /* ENUMERATION */ + val->type = EXI_DATATYPE_ENUMERATION; + errn = decodeNBitUnsignedInteger(stream, 2, &val->enumeration); + moveOnID = 4; /* move on ID */ + break; + case 9: + /* NBIT_UNSIGNED_INTEGER */ + case 10: + /* NBIT_UNSIGNED_INTEGER */ + val->type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + errn = _decodeNBitIntegerValue(stream, &val->integer, 3, -3); + moveOnID = 4; /* move on ID */ + break; + case 743: + /* STRING */ + case 744: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 744; /* move on ID */ + break; + case 792: + /* DATETIME */ + case 793: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_GMONTHDAY, &val->datetime); + moveOnID = 4; /* move on ID */ + break; + case 313: + /* BINARY_HEX */ + case 314: + /* BINARY_HEX */ + val->type = EXI_DATATYPE_BINARY_HEX; + errn = decodeBinary(stream, &val->binary); + moveOnID = 4; /* move on ID */ + break; + case 780: + /* DATETIME */ + case 781: + /* DATETIME */ + val->type = EXI_DATATYPE_DATETIME; + errn = decodeDateTime(stream, EXI_DATETIME_DATE, &val->datetime); + moveOnID = 4; /* move on ID */ + break; + case 755: + /* STRING */ + case 756: + /* STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + moveOnID = 756; /* move on ID */ + break; + + } + if (errn == 0) { + /* move on */ + state->grammarStack[state->stackIndex] = moveOnID; + } + break; + case EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED: + if (state->grammarStack[state->stackIndex] < 0) { + /* runtime grammars do have IDs smaller than 0 */ + errn = (EXI_UNSUPPORTED_GRAMMAR_LEARNING_CH); + } else { + /* update current rule --> element content rule (if not already) */ + errn = exi_v2g_MoveToElementContentRule(state); + if (errn == 0) { + /* read content value as STRING */ + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + } + break; + default: + errn = EXI_ERROR_UNEXPECTED_CHARACTERS; + break; + } + + return (errn); +} + + +int exiv2gDecodeAttributeGenericValue(bitstream_t* stream, exi_state_t* state, uint16_t* qnameID, exi_value_t* val) { + int16_t currentID; + + if (_qname.uri.id == 2 && _qname.localName.id == 1 ) { + /* xsi:type --> QName type */ + errn = exiv2gDecodeAttributeXsiType(stream, state, val); + } else { + currentID = state->grammarStack[state->stackIndex]; + if (currentID >= 0) { + /* if schema-informed value type according global attribute */ + switch(*qnameID) { + + default: + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + break; + } + + } else { + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + } + } + + return (errn); +} + +int exiv2gDecodeAttribute(bitstream_t* stream, exi_state_t* state, + uint16_t* qnameID, exi_value_t* val) { + int16_t moveOnID = 0; + int16_t currentID = state->grammarStack[state->stackIndex]; + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE; + + switch(currEvent) { + case EXI_EVENT_ATTRIBUTE: + case EXI_EVENT_ATTRIBUTE_INVALID_VALUE: + switch (currentID) { + case 35: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + *qnameID = 191; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 36; /* move on ID */ + break; + } + break; + case 66: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + switch(state->eventCode) { + case 0: + *qnameID = 0; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 67; /* move on ID */ + break; + } + break; + case 69: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + switch(state->eventCode) { + case 0: + *qnameID = 191; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 70; /* move on ID */ + break; + } + break; + case 101: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(state->eventCode) { + case 0: + *qnameID = 336; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 102; /* move on ID */ + break; + } + break; + case 112: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + switch(state->eventCode) { + case 0: + *qnameID = 336; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 113; /* move on ID */ + break; + } + break; + case 116: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + switch(state->eventCode) { + case 0: + *qnameID = 336; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 117; /* move on ID */ + break; + } + break; + case 120: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + switch(state->eventCode) { + case 0: + *qnameID = 191; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 121; /* move on ID */ + break; + } + break; + case 169: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + switch(state->eventCode) { + case 0: + *qnameID = 336; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 170; /* move on ID */ + break; + } + break; + case 268: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 269; /* move on ID */ + break; + } + break; + case 277: + /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + *qnameID = 5; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 278; /* move on ID */ + break; + case 1: + *qnameID = 6; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 279; /* move on ID */ + break; + } + break; + case 278: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(state->eventCode) { + case 0: + *qnameID = 6; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 279; /* move on ID */ + break; + } + break; + case 281: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + switch(state->eventCode) { + case 0: + *qnameID = 0; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 282; /* move on ID */ + break; + } + break; + case 300: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + switch(state->eventCode) { + case 0: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 301; /* move on ID */ + break; + } + break; + case 302: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(state->eventCode) { + case 0: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 303; /* move on ID */ + break; + case 1: + *qnameID = 5; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 304; /* move on ID */ + break; + case 2: + *qnameID = 6; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 305; /* move on ID */ + break; + } + break; + case 303: + /* StartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(state->eventCode) { + case 0: + *qnameID = 5; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 304; /* move on ID */ + break; + case 1: + *qnameID = 6; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 305; /* move on ID */ + break; + } + break; + case 304: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(state->eventCode) { + case 0: + *qnameID = 6; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 305; /* move on ID */ + break; + } + break; + case 311: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + switch(state->eventCode) { + case 0: + *qnameID = 191; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 312; /* move on ID */ + break; + } + break; + case 321: + /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + *qnameID = 1; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 322; /* move on ID */ + break; + case 1: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 323; /* move on ID */ + break; + case 2: + *qnameID = 3; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 67; /* move on ID */ + break; + } + break; + case 322: + /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 323; /* move on ID */ + break; + case 1: + *qnameID = 3; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 67; /* move on ID */ + break; + } + break; + case 323: + /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + *qnameID = 3; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 67; /* move on ID */ + break; + } + break; + case 410: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name)] */ + switch(state->eventCode) { + case 0: + *qnameID = 344; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 411; /* move on ID */ + break; + } + break; + case 737: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + switch(state->eventCode) { + case 0: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 738; /* move on ID */ + break; + } + break; + case 739: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + switch(state->eventCode) { + case 0: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 740; /* move on ID */ + break; + } + break; + case 742: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + switch(state->eventCode) { + case 0: + *qnameID = 0; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 743; /* move on ID */ + break; + } + break; + case 747: + /* FirstStartTag[ATTRIBUTE[STRING](Id), CHARACTERS[BINARY_BASE64]] */ + switch(state->eventCode) { + case 0: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 113; /* move on ID */ + break; + } + break; + case 751: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + switch(state->eventCode) { + case 0: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 752; /* move on ID */ + break; + } + break; + case 753: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Target)] */ + switch(state->eventCode) { + case 0: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 754; /* move on ID */ + break; + case 1: + *qnameID = 4; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 755; /* move on ID */ + break; + } + break; + case 754: + /* StartTag[ATTRIBUTE[STRING](Target)] */ + switch(state->eventCode) { + case 0: + *qnameID = 4; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 755; /* move on ID */ + break; + } + break; + case 773: + /* First(xsi:type)(xsi:nil)StartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(state->eventCode) { + case 0: + *qnameID = 0; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 773; /* move on ID */ + break; + case 1: + *qnameID = 1; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 773; /* move on ID */ + break; + case 2: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 773; /* move on ID */ + break; + case 3: + *qnameID = 191; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 773; /* move on ID */ + break; + case 4: + *qnameID = 336; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 773; /* move on ID */ + break; + case 5: + *qnameID = 3; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 773; /* move on ID */ + break; + case 6: + *qnameID = 344; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 773; /* move on ID */ + break; + case 7: + *qnameID = 4; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 773; /* move on ID */ + break; + case 8: + *qnameID = 5; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 773; /* move on ID */ + break; + case 9: + *qnameID = 6; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 773; /* move on ID */ + break; + } + break; + case 775: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, END_ELEMENT] */ + switch(state->eventCode) { + case 0: + *qnameID = 0; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 775; /* move on ID */ + break; + case 1: + *qnameID = 1; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 775; /* move on ID */ + break; + case 2: + *qnameID = 2; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 775; /* move on ID */ + break; + case 3: + *qnameID = 191; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 775; /* move on ID */ + break; + case 4: + *qnameID = 336; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 775; /* move on ID */ + break; + case 5: + *qnameID = 3; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 775; /* move on ID */ + break; + case 6: + *qnameID = 344; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 775; /* move on ID */ + break; + case 7: + *qnameID = 4; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 775; /* move on ID */ + break; + case 8: + *qnameID = 5; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 775; /* move on ID */ + break; + case 9: + *qnameID = 6; + val->type = EXI_DATATYPE_STRING; + errn = decodeStringValue(stream, state, *qnameID, &val->str); + moveOnID = 775; /* move on ID */ + break; + } + break; + + } + + if (errn == 0) { + /* move on */ + state->grammarStack[state->stackIndex] = moveOnID; + } + break; + case EXI_EVENT_ATTRIBUTE_GENERIC: + case EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED: + errn = _exiDecodeQName(stream, state, qnameID, &_qname); + if (errn == 0) { + /* learn attribute ? */ + errn = exi_v2g_LearnAttribute(state, _qname.uri.id, _qname.localName.id); + if (errn == 0) { + /* decode attribute value */ + errn = exiv2gDecodeAttributeGenericValue(stream, state, qnameID, val); + } + } + break; + default: + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE; + break; + } + + return (errn); +} + + + +int exiv2gDecodeAttributeXsiNil(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + errn = decodeBoolean(stream, &val->boolean); + if (errn == 0 && val->boolean) { + /* handle xsi:nil == true */ + errn = exi_v2g_HandleXsiNilTrue(state); + } + return (errn); +} + + +int exiv2gDecodeAttributeXsiType(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + + /* uri */ + errn =_exiDecodeNamespaceUri(stream, state, &_qname.uri); + if (errn == 0) { + /* localName */ + errn = _exiDecodeLocalName(stream, state, _qname.uri.id, &_qname.localName); + if (errn == 0) { + val->type = EXI_DATATYPE_QNAME; + val->eqname.namespaceURI = _qname.uri.id; + val->eqname.localPart = _qname.localName.id; + + /* handle xsi type cast */ + errn = exi_v2g_HandleXsiType(state, &val->eqname); + } + } + + return (errn); +} + + + +#endif + diff --git a/src/codec/v2gEXIDecoder.h b/src/codec/v2gEXIDecoder.h new file mode 100644 index 0000000..36c3de6 --- /dev/null +++ b/src/codec/v2gEXIDecoder.h @@ -0,0 +1,225 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_v2g_DECODER_H +#define EXI_v2g_DECODER_H + +/** +* \file EXIDecoder.h +* \brief EXI Decoder +* +*/ + +#include "EXITypes.h" + +/** + * \brief Initialize EXI decoder + * + * Resets & initializes the EXI decoder. + * + * \param stream Input Stream + * \param state Codec state + * \param runtimeTable Runtime name-tables + * \param stringTable String table + * \return Error-Code <> 0 + * + */ +int exiv2gInitDecoder(bitstream_t* stream, exi_state_t* state, + exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable); + + +/** + * \brief Reports last decoded qualified name + * + * Note: Qualified name only available for previously unknown qname. Otherwise make use of name table entries. + * + * \param qname Qualified name + * \return Error-Code <> 0 + * + */ +int exiv2gGetLastQName(exi_qname_t** qname); + + +/** + * \brief Decodes next event + * + * Inspects EXI stream and decodes next EXI event. + * + * \param stream Input Stream + * \param state Codec state + * \param nextEvent Next event + * \return Error-Code <> 0 + * + */ +int exiv2gDecodeNextEvent(bitstream_t* stream, + exi_state_t* state, exi_event_t* nextEvent); + + +/** + * \brief Decodes StartDocument (SD) event + * + * \param stream Input Stream + * \param state Codec state + * \return Error-Code <> 0 + * + */ +int exiv2gDecodeStartDocument(bitstream_t* stream, + exi_state_t* state); + +/** + * \brief Decodes EndDocument (ED) event + * + * \param stream Input Stream + * \param state Codec state + * \return Error-Code <> 0 + * + */ +int exiv2gDecodeEndDocument(bitstream_t* stream, + exi_state_t* state); + +/** + * \brief Decodes StartElement (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. + * + * \param stream Input Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \return Error-Code <> 0 + * + */ +int +exiv2gDecodeStartElement(bitstream_t* stream, + exi_state_t* state, uint16_t* qnameID); + + +/** + * \brief Decodes EndElement (EE) event + * + * \param stream Input Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \return Error-Code <> 0 + * + */ +int exiv2gDecodeEndElement(bitstream_t* stream, + exi_state_t* state, uint16_t* qnameID); + + +/** + * \brief Decodes Characters (CH) event. + * + * Reports characters value. + * + * \param stream Input Stream + * \param state Codec state + * \param val Characters value + * \return Error-Code <> 0 + * + */ +int exiv2gDecodeCharacters(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + + +/** + * \brief Decodes Attribute (AT) event. + * + * Reports attribute qname and value. + * + * \param stream Input Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \param val Characters value + * \return Error-Code <> 0 + * + */ +int exiv2gDecodeAttribute(bitstream_t* stream, + exi_state_t* state, uint16_t* qnameID, exi_value_t* val); + + +/** + * \brief Decodes attribute xsi:nil + * + * Reports value. + * + * \param stream Input Stream + * \param state Codec state + * \param val Characters value + * \return Error-Code <> 0 + * + */ +int exiv2gDecodeAttributeXsiNil(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + + +/** + * \brief Decodes attribute xsi:type + * + * Reports value. + * + * \param stream Input Stream + * \param state Codec state + * \param val Characters value + * \return Error-Code <> 0 + * + */ +int exiv2gDecodeAttributeXsiType(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + + +/** + * \brief Decodes attribute/characters list value + * + * List values are special and are processed one by one. + * + * \param stream Input Stream + * \param state Codec state + * \param qnameID Qualified Name ID + * \param val List value + * \param lt List type + * \return Error-Code <> 0 + * + */ +int exiv2gDecodeListValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, + exi_value_t* val, exi_list_t lt); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/v2gEXIEncoder.c b/src/codec/v2gEXIEncoder.c new file mode 100644 index 0000000..b542df0 --- /dev/null +++ b/src/codec/v2gEXIEncoder.c @@ -0,0 +1,13891 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_v2g_ENCODER_C +#define EXI_v2g_ENCODER_C + +#include "EXITypes.h" +#include "EXIOptions.h" +#include "BitOutputStream.h" +#include "EncoderChannel.h" + +#include "StringNameTable.h" +#include "v2gNameTableEntries.h" +#include "MethodsBag.h" + +#include "EXIOptions.h" + +#include "v2gEXICoder.h" +#include "EXIHeaderEncoder.h" +#include "ErrorCodes.h" +#include "v2gQNames.h" +#include "v2gQNameDefines.h" + + + + +/* local variables */ +static uint32_t bits; +static int errn; + +/* ==================================== */ + +static int _encodeNBitIntegerValue(bitstream_t* stream, exi_integer_t* iv, uint16_t nbits, int32_t lowerBound) { + uint32_t val; + errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + val = (uint32_t)(iv->val.int8 - lowerBound); + break; + case EXI_UNSIGNED_INTEGER_16: + val = (uint32_t)(iv->val.int16 - lowerBound); + break; + case EXI_UNSIGNED_INTEGER_32: + val = (uint32_t)(iv->val.int32 - lowerBound); + break; + case EXI_UNSIGNED_INTEGER_64: + val = (uint32_t)(iv->val.int64 - lowerBound); + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + val = (uint32_t)(iv->val.uint8 - lowerBound); + break; + case EXI_INTEGER_16: + val = (uint32_t)(iv->val.uint16 - lowerBound); + break; + case EXI_INTEGER_32: + val = (uint32_t)(iv->val.uint32 - (int64_t)lowerBound); + break; + case EXI_INTEGER_64: + val = (uint32_t)((int64_t)iv->val.uint64 - (int64_t)lowerBound); + break; + default: + errn = (EXI_UNSUPPORTED_INTEGER_VALUE_TYPE); + break; + } + + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, nbits, val); + } + + return (errn); +} + + + +static int _exiEncodeNamespaceUriHit(bitstream_t* stream, exi_state_t* state, uint16_t uriID) { + uint16_t uriCodingLength; + uint16_t uriSize; + + errn = exiGetUriSize(&state->nameTablePrepopulated, &state->nameTableRuntime, &uriSize); + if (errn == 0) { + /* URI Entries + 1 */ + errn = exiGetCodingLength( (uint16_t)(uriSize + 1), &uriCodingLength); + if (errn == 0) { + /* uri string value found */ + /* ==> value(i+1) is encoded as n-bit unsigned integer */ + errn = encodeNBitUnsignedInteger(stream, uriCodingLength, (uint32_t)(uriID+1)); + } + } + + return errn; +} + + + + +static int _exiEncodeLocalNameHit(bitstream_t* stream, exi_state_t* state, + uint16_t uriID, uint16_t localNameID) { + uint16_t localNameSize; + uint16_t localNameCodingLength; + + /* string value found in local partition */ + /* ==> string value is represented as zero (0) encoded as an */ + errn = encodeUnsignedInteger32(stream, 0 ); + if (errn == 0) { + /* Unsigned Integer followed by an the compact identifier of the */ + /* string value as an n-bit unsigned integer n is log2 m and m is */ + /* the number of entries in the string table partition */ + errn = exiGetLocalNameSize(&state->nameTablePrepopulated, &state->nameTableRuntime, uriID, &localNameSize); + if (errn == 0) { + errn = exiGetCodingLength(localNameSize, &localNameCodingLength); + if (errn == 0) { + errn = encodeNBitUnsignedInteger(stream, localNameCodingLength, localNameID); + } + } + } + + return (errn); +} + + + +static int _encodeAttributeXsiTypeContent(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + + /* encode qname */ + errn = _exiEncodeNamespaceUriHit(stream, state, val->eqname.namespaceURI); + if (errn == 0) { + errn = _exiEncodeLocalNameHit(stream, state, val->eqname.namespaceURI, val->eqname.localPart); + if (errn == 0) { + /* handle xsi type cast */ + errn = exi_v2g_HandleXsiType(state, &val->eqname); + } + } + + return (errn); +} + + +static int _exiEncodeStartElement(bitstream_t* stream, uint16_t nbits, + uint32_t val, exi_state_t* state, uint16_t qnameID, int16_t stackId, + int16_t newState) { + /* event-code */ + errn = encodeNBitUnsignedInteger(stream, nbits, val); + if (errn == 0) { + /* move on */ + state->grammarStack[state->stackIndex] = stackId; + /* push element on stack */ + errn = (exi_v2g_PushStack(state, newState, qnameID)); + } + + return (errn); +} + + +static int _encode2ndLevelAttribute(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, + exi_value_t* val) { + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; +} + + +int exiv2gEncodeListValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, exi_value_t* val, exi_list_t lt) { + + switch(lt.type) { + case EXI_DATATYPE_BINARY_BASE64: + case EXI_DATATYPE_BINARY_HEX: + errn = encodeBinary(stream, &val->binary); + break; + case EXI_DATATYPE_BOOLEAN: + errn = encodeBoolean(stream, val->boolean); + break; + case EXI_DATATYPE_BOOLEAN_FACET: + errn = encodeNBitUnsignedInteger(stream, 2, val->boolean ? 2 : 0); + break; + case EXI_DATATYPE_DECIMAL: + errn = encodeDecimal(stream, &val->decimal); + break; + case EXI_DATATYPE_FLOAT: + errn = encodeFloat(stream, &val->float_me); + break; + case EXI_DATATYPE_NBIT_UNSIGNED_INTEGER: + errn = EXI_UNSUPPORTED_LIST_VALUE_TYPE; + break; + case EXI_DATATYPE_UNSIGNED_INTEGER: + errn = encodeUnsignedInteger(stream, &val->integer); + break; + case EXI_DATATYPE_INTEGER: + errn = encodeInteger(stream, &val->integer); + break; + case EXI_DATATYPE_DATETIME: + errn = encodeDateTime(stream, &val->datetime); + break; + case EXI_DATATYPE_STRING: + errn = encodeStringValue(stream, state, qnameID, &val->str); + break; + default: + errn = EXI_UNSUPPORTED_LIST_VALUE_TYPE; + break; + } + + return (errn); +} + + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ +int exiv2gEncodeStartDocument(bitstream_t* stream, exi_state_t* state) { + errn = 0; + switch(state->grammarStack[state->stackIndex]) { + case 0: + /* move on */ + state->grammarStack[state->stackIndex] = 1; + break; + case 771: + /* move on */ + state->grammarStack[state->stackIndex] = 772; + break; + + default: + errn =(EXI_ERROR_UNEXPECTED_START_DOCUMENT); + break; + } + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ + + +#ifndef __GNUC__ +#pragma warning( disable : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ +int exiv2gEncodeEndDocument(bitstream_t* stream, exi_state_t* state) { + switch(state->grammarStack[state->stackIndex]) { + case 22: + errn = encodeFinish(stream); + break; + case 772: + errn = encodeFinish(stream); + break; + + default: + errn =(EXI_ERROR_UNEXPECTED_END_DOCUMENT); + break; + } + return errn; +} +#ifndef __GNUC__ +#pragma warning( default : 4100 ) /* warning unreferenced parameter 'stream' */ +#endif /* __GNUC__ */ + + +int exiv2gInitEncoder(bitstream_t* stream, exi_state_t* state, + exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable) { +#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 +#if EXI_OPTION_VALUE_MAX_LENGTH != 0 + int i; +#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */ +#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */ + /* init grammar state */ + state->stackIndex = 0; + state->grammarStack[0] = DOCUMENT; + /* name tables */ + state->nameTablePrepopulated = exiv2gNameTablePrepopulated; + state->nameTableRuntime = runtimeTable; + /* next qname ID */ + state->nextQNameID = EXI_v2gNUMBER_OF_PREPOPULATED_QNAMES; + /* string tables */ + state->stringTable = stringTable; + state->stringTable.numberOfGlobalStrings = 0; +#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 +#if EXI_OPTION_VALUE_MAX_LENGTH != 0 + for(i=0; i<(state->stringTable.sizeLocalStrings); i++) { + state->stringTable.numberOfLocalStrings[i] = 0; + } +#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */ +#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */ + + /* runtime grammars */ + state->numberOfRuntimeGrammars = 0; + + /* Avoid warning: Unused declaration of variable 'name' */ + bits = 0; + + /* encode header */ + return (writeEXIHeader(stream)); +} + + + + + + +int exiv2gEncodeStartElement(bitstream_t* stream, exi_state_t* state, uint16_t qnameID) { + int16_t currentID = state->grammarStack[state->stackIndex]; + + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT; + + switch (currentID) { + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT_GENERIC] */ + switch(qnameID) { + case 254: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 7, 0, state, qnameID, 22, 2); + break; + case 256: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 7, 1, state, qnameID, 22, 23); + break; + case 258: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 7, 2, state, qnameID, 22, 24); + break; + case 130: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationReq ) */ + errn = _exiEncodeStartElement(stream, 7, 3, state, qnameID, 22, 35); + break; + case 132: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationRes ) */ + errn = _exiEncodeStartElement(stream, 7, 4, state, qnameID, 22, 40); + break; + case 135: + /* SE( {urn:iso:15118:2:2013:MsgBody}BodyElement ) */ + errn = _exiEncodeStartElement(stream, 7, 5, state, qnameID, 22, 45); + break; + case 138: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckReq ) */ + errn = _exiEncodeStartElement(stream, 7, 6, state, qnameID, 22, 46); + break; + case 140: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckRes ) */ + errn = _exiEncodeStartElement(stream, 7, 7, state, qnameID, 22, 56); + break; + case 59: + /* SE( {http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod ) */ + errn = _exiEncodeStartElement(stream, 7, 8, state, qnameID, 22, 66); + break; + case 142: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq ) */ + errn = _exiEncodeStartElement(stream, 7, 9, state, qnameID, 22, 69); + break; + case 144: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes ) */ + errn = _exiEncodeStartElement(stream, 7, 10, state, qnameID, 22, 99); + break; + case 146: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq ) */ + errn = _exiEncodeStartElement(stream, 7, 11, state, qnameID, 22, 120); + break; + case 148: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes ) */ + errn = _exiEncodeStartElement(stream, 7, 12, state, qnameID, 22, 124); + break; + case 150: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 7, 13, state, qnameID, 22, 132); + break; + case 152: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 7, 14, state, qnameID, 22, 150); + break; + case 159: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusReq ) */ + errn = _exiEncodeStartElement(stream, 7, 15, state, qnameID, 22, 209); + break; + case 161: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusRes ) */ + errn = _exiEncodeStartElement(stream, 7, 16, state, qnameID, 22, 210); + break; + case 165: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandReq ) */ + errn = _exiEncodeStartElement(stream, 7, 17, state, qnameID, 22, 225); + break; + case 167: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandRes ) */ + errn = _exiEncodeStartElement(stream, 7, 18, state, qnameID, 22, 236); + break; + case 275: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 7, 19, state, qnameID, 22, 137); + break; + case 278: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 7, 20, state, qnameID, 22, 251); + break; + case 280: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 7, 21, state, qnameID, 22, 198); + break; + case 282: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 7, 22, state, qnameID, 22, 58); + break; + case 285: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 7, 23, state, qnameID, 22, 47); + break; + case 62: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 7, 24, state, qnameID, 22, 255); + break; + case 64: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestMethod ) */ + errn = _exiEncodeStartElement(stream, 7, 25, state, qnameID, 22, 66); + break; + case 66: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestValue ) */ + errn = _exiEncodeStartElement(stream, 7, 26, state, qnameID, 22, 37); + break; + case 292: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 7, 27, state, qnameID, 22, 147); + break; + case 303: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 7, 28, state, qnameID, 22, 45); + break; + case 307: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 7, 29, state, qnameID, 22, 45); + break; + case 323: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 7, 30, state, qnameID, 22, 263); + break; + case 326: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVStatus ) */ + errn = _exiEncodeStartElement(stream, 7, 31, state, qnameID, 22, 45); + break; + case 330: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Entry ) */ + errn = _exiEncodeStartElement(stream, 7, 32, state, qnameID, 22, 266); + break; + case 73: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyInfo ) */ + errn = _exiEncodeStartElement(stream, 7, 33, state, qnameID, 22, 268); + break; + case 75: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyName ) */ + errn = _exiEncodeStartElement(stream, 7, 34, state, qnameID, 22, 74); + break; + case 76: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyValue ) */ + errn = _exiEncodeStartElement(stream, 7, 35, state, qnameID, 22, 271); + break; + case 78: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Manifest ) */ + errn = _exiEncodeStartElement(stream, 7, 36, state, qnameID, 22, 300); + break; + case 195: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq ) */ + errn = _exiEncodeStartElement(stream, 7, 37, state, qnameID, 22, 311); + break; + case 197: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes ) */ + errn = _exiEncodeStartElement(stream, 7, 38, state, qnameID, 22, 318); + break; + case 80: + /* SE( {http://www.w3.org/2000/09/xmldsig#}MgmtData ) */ + errn = _exiEncodeStartElement(stream, 7, 39, state, qnameID, 22, 74); + break; + case 82: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Object ) */ + errn = _exiEncodeStartElement(stream, 7, 40, state, qnameID, 22, 321); + break; + case 85: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPData ) */ + errn = _exiEncodeStartElement(stream, 7, 41, state, qnameID, 22, 291); + break; + case 350: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry ) */ + errn = _exiEncodeStartElement(stream, 7, 42, state, qnameID, 22, 159); + break; + case 200: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq ) */ + errn = _exiEncodeStartElement(stream, 7, 43, state, qnameID, 22, 324); + break; + case 202: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes ) */ + errn = _exiEncodeStartElement(stream, 7, 44, state, qnameID, 22, 327); + break; + case 205: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq ) */ + errn = _exiEncodeStartElement(stream, 7, 45, state, qnameID, 22, 331); + break; + case 207: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes ) */ + errn = _exiEncodeStartElement(stream, 7, 46, state, qnameID, 22, 356); + break; + case 209: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq ) */ + errn = _exiEncodeStartElement(stream, 7, 47, state, qnameID, 22, 358); + break; + case 211: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes ) */ + errn = _exiEncodeStartElement(stream, 7, 48, state, qnameID, 22, 318); + break; + case 213: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeReq ) */ + errn = _exiEncodeStartElement(stream, 7, 49, state, qnameID, 22, 394); + break; + case 215: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeRes ) */ + errn = _exiEncodeStartElement(stream, 7, 50, state, qnameID, 22, 398); + break; + case 91: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 7, 51, state, qnameID, 22, 273); + break; + case 93: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Reference ) */ + errn = _exiEncodeStartElement(stream, 7, 52, state, qnameID, 22, 302); + break; + case 364: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval ) */ + errn = _exiEncodeStartElement(stream, 7, 53, state, qnameID, 22, 160); + break; + case 95: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RetrievalMethod ) */ + errn = _exiEncodeStartElement(stream, 7, 54, state, qnameID, 22, 277); + break; + case 368: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList ) */ + errn = _exiEncodeStartElement(stream, 7, 55, state, qnameID, 22, 153); + break; + case 373: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SASchedules ) */ + errn = _exiEncodeStartElement(stream, 7, 56, state, qnameID, 22, 45); + break; + case 97: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKIData ) */ + errn = _exiEncodeStartElement(stream, 7, 57, state, qnameID, 22, 295); + break; + case 377: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry ) */ + errn = _exiEncodeStartElement(stream, 7, 58, state, qnameID, 22, 176); + break; + case 228: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailReq ) */ + errn = _exiEncodeStartElement(stream, 7, 59, state, qnameID, 22, 402); + break; + case 230: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailRes ) */ + errn = _exiEncodeStartElement(stream, 7, 60, state, qnameID, 22, 404); + break; + case 232: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 7, 61, state, qnameID, 22, 687); + break; + case 234: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 7, 62, state, qnameID, 22, 692); + break; + case 241: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupReq ) */ + errn = _exiEncodeStartElement(stream, 7, 63, state, qnameID, 22, 729); + break; + case 243: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupRes ) */ + errn = _exiEncodeStartElement(stream, 7, 64, state, qnameID, 22, 731); + break; + case 245: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopReq ) */ + errn = _exiEncodeStartElement(stream, 7, 65, state, qnameID, 22, 735); + break; + case 247: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopRes ) */ + errn = _exiEncodeStartElement(stream, 7, 66, state, qnameID, 22, 356); + break; + case 101: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Signature ) */ + errn = _exiEncodeStartElement(stream, 7, 67, state, qnameID, 22, 737); + break; + case 102: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureMethod ) */ + errn = _exiEncodeStartElement(stream, 7, 68, state, qnameID, 22, 742); + break; + case 104: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperties ) */ + errn = _exiEncodeStartElement(stream, 7, 69, state, qnameID, 22, 751); + break; + case 106: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperty ) */ + errn = _exiEncodeStartElement(stream, 7, 70, state, qnameID, 22, 753); + break; + case 109: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureValue ) */ + errn = _exiEncodeStartElement(stream, 7, 71, state, qnameID, 22, 747); + break; + case 111: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignedInfo ) */ + errn = _exiEncodeStartElement(stream, 7, 72, state, qnameID, 22, 739); + break; + case 398: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval ) */ + errn = _exiEncodeStartElement(stream, 7, 73, state, qnameID, 22, 45); + break; + case 113: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transform ) */ + errn = _exiEncodeStartElement(stream, 7, 74, state, qnameID, 22, 281); + break; + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 7, 75, state, qnameID, 22, 280); + break; + case 444: + /* SE( {urn:iso:15118:2:2013:MsgDef}V2G_Message ) */ + errn = _exiEncodeStartElement(stream, 7, 76, state, qnameID, 22, 759); + break; + case 249: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq ) */ + errn = _exiEncodeStartElement(stream, 7, 77, state, qnameID, 22, 46); + break; + case 251: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes ) */ + errn = _exiEncodeStartElement(stream, 7, 78, state, qnameID, 22, 398); + break; + case 119: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Data ) */ + errn = _exiEncodeStartElement(stream, 7, 79, state, qnameID, 22, 287); + break; + } + break; + case 2: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + switch(qnameID) { + case 287: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DepartureTime ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 7, 3); + break; + case 289: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EAmount ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 18, 8); + break; + } + break; + case 7: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + switch(qnameID) { + case 289: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EAmount ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 18, 8); + break; + } + break; + case 8: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + switch(qnameID) { + case 343: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Multiplier ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 11, 9); + break; + } + break; + case 11: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit)] */ + switch(qnameID) { + case 399: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Unit ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 14, 12); + break; + } + break; + case 14: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value)] */ + switch(qnameID) { + case 400: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Value ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 15); + break; + } + break; + case 17: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + switch(qnameID) { + case 343: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Multiplier ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 11, 9); + break; + } + break; + case 18: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage)] */ + switch(qnameID) { + case 298: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 19, 8); + break; + } + break; + case 19: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent)] */ + switch(qnameID) { + case 297: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 20, 8); + break; + } + break; + case 20: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent)] */ + switch(qnameID) { + case 302: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 8); + break; + } + break; + case 21: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + switch(qnameID) { + case 287: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DepartureTime ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 7, 3); + break; + case 289: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EAmount ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 18, 8); + break; + } + break; + case 23: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + switch(qnameID) { + case 258: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 32, 24); + break; + } + break; + case 24: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(qnameID) { + case 345: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 25, 3); + break; + } + break; + case 25: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + switch(qnameID) { + case 319: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSENotification ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 28, 26); + break; + } + break; + case 28: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD)] */ + switch(qnameID) { + case 363: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RCD ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 29); + break; + } + break; + case 31: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(qnameID) { + case 345: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 25, 3); + break; + } + break; + case 32: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage)] */ + switch(qnameID) { + case 318: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 33, 8); + break; + } + break; + case 33: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent)] */ + switch(qnameID) { + case 312: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 8); + break; + } + break; + case 34: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + switch(qnameID) { + case 258: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 32, 24); + break; + } + break; + case 35: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + switch(qnameID) { + case 190: + /* SE( {urn:iso:15118:2:2013:MsgBody}GenChallenge ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 37); + break; + } + break; + case 36: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + switch(qnameID) { + case 190: + /* SE( {urn:iso:15118:2:2013:MsgBody}GenChallenge ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 37); + break; + } + break; + case 39: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + switch(qnameID) { + case 190: + /* SE( {urn:iso:15118:2:2013:MsgBody}GenChallenge ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 37); + break; + } + break; + case 40: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 43, 41); + break; + } + break; + case 43: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + switch(qnameID) { + case 185: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEProcessing ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 26); + break; + } + break; + case 44: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 43, 41); + break; + } + break; + case 46: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(qnameID) { + case 170: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 47); + break; + } + break; + case 47: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + switch(qnameID) { + case 306: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVReady ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 48, 29); + break; + } + break; + case 48: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode)] */ + switch(qnameID) { + case 296: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 51, 49); + break; + } + break; + case 51: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC)] */ + switch(qnameID) { + case 305: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 52); + break; + } + break; + case 54: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + switch(qnameID) { + case 306: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVReady ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 48, 29); + break; + } + break; + case 55: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(qnameID) { + case 170: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 47); + break; + } + break; + case 56: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 57, 41); + break; + } + break; + case 57: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + switch(qnameID) { + case 169: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 43, 58); + break; + } + break; + case 58: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(qnameID) { + case 345: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 59, 3); + break; + } + break; + case 59: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + switch(qnameID) { + case 319: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSENotification ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 60, 26); + break; + } + break; + case 60: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + switch(qnameID) { + case 311: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 63, 61); + break; + case 324: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 49); + break; + } + break; + case 63: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + switch(qnameID) { + case 324: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 49); + break; + } + break; + case 64: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(qnameID) { + case 345: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 59, 3); + break; + } + break; + case 65: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 57, 41); + break; + } + break; + case 70: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + switch(qnameID) { + case 199: + /* SE( {urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 71, 37); + break; + } + break; + case 71: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */ + switch(qnameID) { + case 192: + /* SE( {urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 72); + break; + } + break; + case 72: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 78, 73); + break; + } + break; + case 73: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + switch(qnameID) { + case 121: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509IssuerName ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 76, 74); + break; + } + break; + case 76: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber)] */ + switch(qnameID) { + case 125: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SerialNumber ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 15); + break; + } + break; + case 77: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + switch(qnameID) { + case 121: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509IssuerName ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 76, 74); + break; + } + break; + case 78: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 79, 73); + break; + } + break; + case 79: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 80, 73); + break; + } + break; + case 80: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 81, 73); + break; + } + break; + case 81: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 82, 73); + break; + } + break; + case 82: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 83, 73); + break; + } + break; + case 83: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 84, 73); + break; + } + break; + case 84: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 85, 73); + break; + } + break; + case 85: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 86, 73); + break; + } + break; + case 86: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 87, 73); + break; + } + break; + case 87: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 88, 73); + break; + } + break; + case 88: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 89, 73); + break; + } + break; + case 89: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 90, 73); + break; + } + break; + case 90: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 91, 73); + break; + } + break; + case 91: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 92, 73); + break; + } + break; + case 92: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 93, 73); + break; + } + break; + case 93: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 94, 73); + break; + } + break; + case 94: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 95, 73); + break; + } + break; + case 95: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 96, 73); + break; + } + break; + case 96: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 73); + break; + } + break; + case 97: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + switch(qnameID) { + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 78, 73); + break; + } + break; + case 98: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + switch(qnameID) { + case 199: + /* SE( {urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 71, 37); + break; + } + break; + case 99: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 100, 41); + break; + } + break; + case 100: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + switch(qnameID) { + case 223: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 110, 101); + break; + } + break; + case 101: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(qnameID) { + case 262: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Certificate ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 103, 37); + break; + } + break; + case 102: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(qnameID) { + case 262: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Certificate ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 103, 37); + break; + } + break; + case 103: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), END_ELEMENT] */ + switch(qnameID) { + case 393: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SubCertificates ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 104); + break; + } + break; + case 104: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(qnameID) { + case 262: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Certificate ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 105, 37); + break; + } + break; + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + switch(qnameID) { + case 262: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Certificate ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 106, 37); + break; + } + break; + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + switch(qnameID) { + case 262: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Certificate ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 107, 37); + break; + } + break; + case 107: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + switch(qnameID) { + case 262: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Certificate ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 37); + break; + } + break; + case 108: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(qnameID) { + case 262: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Certificate ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 105, 37); + break; + } + break; + case 109: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(qnameID) { + case 262: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Certificate ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 103, 37); + break; + } + break; + case 110: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + switch(qnameID) { + case 163: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 111, 101); + break; + } + break; + case 111: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + switch(qnameID) { + case 164: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 114, 112); + break; + } + break; + case 114: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + switch(qnameID) { + case 171: + /* SE( {urn:iso:15118:2:2013:MsgBody}DHpublickey ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 115, 112); + break; + } + break; + case 115: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + switch(qnameID) { + case 253: + /* SE( {urn:iso:15118:2:2013:MsgBody}eMAID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 116); + break; + } + break; + case 119: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 100, 41); + break; + } + break; + case 121: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + switch(qnameID) { + case 163: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 122, 101); + break; + } + break; + case 122: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + switch(qnameID) { + case 253: + /* SE( {urn:iso:15118:2:2013:MsgBody}eMAID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 71, 74); + break; + } + break; + case 123: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + switch(qnameID) { + case 163: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 122, 101); + break; + } + break; + case 124: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 125, 41); + break; + } + break; + case 125: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + switch(qnameID) { + case 223: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 126, 101); + break; + } + break; + case 126: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + switch(qnameID) { + case 163: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 127, 101); + break; + } + break; + case 127: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + switch(qnameID) { + case 164: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 128, 112); + break; + } + break; + case 128: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + switch(qnameID) { + case 171: + /* SE( {urn:iso:15118:2:2013:MsgBody}DHpublickey ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 129, 112); + break; + } + break; + case 129: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + switch(qnameID) { + case 253: + /* SE( {urn:iso:15118:2:2013:MsgBody}eMAID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 130, 116); + break; + } + break; + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), END_ELEMENT] */ + switch(qnameID) { + case 222: + /* SE( {urn:iso:15118:2:2013:MsgBody}RetryCounter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 15); + break; + } + break; + case 131: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 125, 41); + break; + } + break; + case 132: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + switch(qnameID) { + case 193: + /* SE( {urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 133, 3); + break; + case 220: + /* SE( {urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 136, 134); + break; + } + break; + case 133: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + switch(qnameID) { + case 220: + /* SE( {urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 136, 134); + break; + } + break; + case 136: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter)] */ + switch(qnameID) { + case 254: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 2); + break; + case 275: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 137); + break; + case 292: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 2, 2, state, qnameID, 4, 147); + break; + } + break; + case 137: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + switch(qnameID) { + case 287: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DepartureTime ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 138, 3); + break; + case 285: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 139, 47); + break; + } + break; + case 138: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + switch(qnameID) { + case 285: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 139, 47); + break; + } + break; + case 139: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit)] */ + switch(qnameID) { + case 299: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 140, 8); + break; + } + break; + case 140: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + switch(qnameID) { + case 300: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 141, 8); + break; + case 301: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 142, 8); + break; + } + break; + case 141: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + switch(qnameID) { + case 301: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 142, 8); + break; + } + break; + case 142: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + switch(qnameID) { + case 294: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 143, 8); + break; + case 295: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 144, 8); + break; + case 335: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FullSOC ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 145, 52); + break; + case 261: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}BulkSOC ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 4, 52); + break; + } + break; + case 143: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + switch(qnameID) { + case 295: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 144, 8); + break; + case 335: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FullSOC ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 145, 52); + break; + case 261: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}BulkSOC ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 4, 52); + break; + } + break; + case 144: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + switch(qnameID) { + case 335: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FullSOC ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 145, 52); + break; + case 261: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}BulkSOC ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 52); + break; + } + break; + case 145: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + switch(qnameID) { + case 261: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}BulkSOC ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 52); + break; + } + break; + case 146: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + switch(qnameID) { + case 287: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DepartureTime ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 138, 3); + break; + case 285: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 139, 47); + break; + } + break; + case 147: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + switch(qnameID) { + case 287: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DepartureTime ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 3); + break; + } + break; + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + switch(qnameID) { + case 287: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DepartureTime ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 3); + break; + } + break; + case 149: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + switch(qnameID) { + case 193: + /* SE( {urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 133, 3); + break; + case 220: + /* SE( {urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 136, 134); + break; + } + break; + case 150: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 151, 41); + break; + } + break; + case 151: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + switch(qnameID) { + case 185: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEProcessing ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 152, 26); + break; + } + break; + case 152: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */ + switch(qnameID) { + case 368: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 197, 153); + break; + case 373: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SASchedules ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 197, 45); + break; + case 256: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 4, 23); + break; + case 280: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 4, 198); + break; + case 307: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 3, 4, state, qnameID, 4, 45); + break; + } + break; + case 153: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + switch(qnameID) { + case 370: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 194, 154); + break; + } + break; + case 154: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + switch(qnameID) { + case 371: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 157, 155); + break; + } + break; + case 157: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule)] */ + switch(qnameID) { + case 349: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 168, 158); + break; + } + break; + case 158: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + switch(qnameID) { + case 350: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 166, 159); + break; + } + break; + case 159: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(qnameID) { + case 364: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 164, 160); + break; + case 398: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 164, 45); + break; + } + break; + case 160: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + switch(qnameID) { + case 435: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}start ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 162, 161); + break; + } + break; + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), END_ELEMENT] */ + switch(qnameID) { + case 411: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}duration ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 161); + break; + } + break; + case 163: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + switch(qnameID) { + case 435: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}start ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 162, 161); + break; + } + break; + case 164: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax)] */ + switch(qnameID) { + case 348: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMax ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 8); + break; + } + break; + case 165: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(qnameID) { + case 364: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 164, 160); + break; + case 398: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 164, 45); + break; + } + break; + case 166: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] */ + switch(qnameID) { + case 350: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 166, 159); + break; + } + break; + case 167: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + switch(qnameID) { + case 350: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 166, 159); + break; + } + break; + case 168: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), END_ELEMENT] */ + switch(qnameID) { + case 375: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariff ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 169); + break; + } + break; + case 169: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + switch(qnameID) { + case 379: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 171, 155); + break; + } + break; + case 170: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + switch(qnameID) { + case 379: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 171, 155); + break; + } + break; + case 171: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + switch(qnameID) { + case 376: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 172, 118); + break; + case 347: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 175, 173); + break; + case 377: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 2, state, qnameID, 191, 176); + break; + } + break; + case 172: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + switch(qnameID) { + case 347: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 175, 173); + break; + case 377: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 191, 176); + break; + } + break; + case 175: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + switch(qnameID) { + case 377: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 191, 176); + break; + } + break; + case 176: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(qnameID) { + case 364: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 177, 160); + break; + case 398: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 177, 45); + break; + } + break; + case 177: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + switch(qnameID) { + case 291: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 178, 173); + break; + case 270: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 188, 179); + break; + } + break; + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + switch(qnameID) { + case 270: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 188, 179); + break; + } + break; + case 179: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + switch(qnameID) { + case 436: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}startValue ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 180, 8); + break; + } + break; + case 180: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost)] */ + switch(qnameID) { + case 273: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Cost ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 185, 181); + break; + } + break; + case 181: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + switch(qnameID) { + case 408: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}costKind ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 182, 26); + break; + } + break; + case 182: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount)] */ + switch(qnameID) { + case 401: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}amount ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 183, 3); + break; + } + break; + case 183: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), END_ELEMENT] */ + switch(qnameID) { + case 402: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 9); + break; + } + break; + case 184: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + switch(qnameID) { + case 408: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}costKind ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 182, 26); + break; + } + break; + case 185: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + switch(qnameID) { + case 273: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Cost ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 186, 181); + break; + } + break; + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + switch(qnameID) { + case 273: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Cost ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 181); + break; + } + break; + case 187: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + switch(qnameID) { + case 436: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}startValue ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 180, 8); + break; + } + break; + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + switch(qnameID) { + case 270: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 189, 179); + break; + } + break; + case 189: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + switch(qnameID) { + case 270: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 179); + break; + } + break; + case 190: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(qnameID) { + case 364: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 177, 160); + break; + case 398: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 177, 45); + break; + } + break; + case 191: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), END_ELEMENT] */ + switch(qnameID) { + case 377: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 191, 176); + break; + } + break; + case 192: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + switch(qnameID) { + case 379: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 171, 155); + break; + } + break; + case 193: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + switch(qnameID) { + case 371: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 157, 155); + break; + } + break; + case 194: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + switch(qnameID) { + case 370: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 195, 154); + break; + } + break; + case 195: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + switch(qnameID) { + case 370: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 154); + break; + } + break; + case 196: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + switch(qnameID) { + case 370: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 194, 154); + break; + } + break; + case 197: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter)] */ + switch(qnameID) { + case 256: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 23); + break; + case 280: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 198); + break; + case 307: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 2, 2, state, qnameID, 4, 45); + break; + } + break; + case 198: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + switch(qnameID) { + case 282: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 199, 58); + break; + } + break; + case 199: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit)] */ + switch(qnameID) { + case 313: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 200, 8); + break; + } + break; + case 200: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit)] */ + switch(qnameID) { + case 314: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 201, 8); + break; + } + break; + case 201: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit)] */ + switch(qnameID) { + case 315: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 202, 8); + break; + } + break; + case 202: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit)] */ + switch(qnameID) { + case 316: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 203, 8); + break; + } + break; + case 203: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit)] */ + switch(qnameID) { + case 317: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 204, 8); + break; + } + break; + case 204: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + switch(qnameID) { + case 309: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 205, 8); + break; + case 321: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 206, 8); + break; + } + break; + case 205: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + switch(qnameID) { + case 321: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 206, 8); + break; + } + break; + case 206: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] */ + switch(qnameID) { + case 310: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 8); + break; + } + break; + case 207: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + switch(qnameID) { + case 282: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 199, 58); + break; + } + break; + case 208: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 151, 41); + break; + } + break; + case 210: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 211, 41); + break; + } + break; + case 211: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(qnameID) { + case 177: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 212, 118); + break; + } + break; + case 212: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + switch(qnameID) { + case 224: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 213, 155); + break; + } + break; + case 213: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + switch(qnameID) { + case 178: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 214, 8); + break; + case 194: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeterInfo ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 222, 215); + break; + case 217: + /* SE( {urn:iso:15118:2:2013:MsgBody}ReceiptRequired ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 223, 29); + break; + case 129: + /* SE( {urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 4, 24); + break; + } + break; + case 214: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + switch(qnameID) { + case 194: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeterInfo ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 222, 215); + break; + case 217: + /* SE( {urn:iso:15118:2:2013:MsgBody}ReceiptRequired ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 223, 29); + break; + case 129: + /* SE( {urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 2, 2, state, qnameID, 4, 24); + break; + } + break; + case 215: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + switch(qnameID) { + case 339: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 216, 118); + break; + } + break; + case 216: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + switch(qnameID) { + case 341: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterReading ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 217, 3); + break; + case 392: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 218, 37); + break; + case 342: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterStatus ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 220, 219); + break; + case 397: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TMeter ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 4, 15); + break; + } + break; + case 217: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + switch(qnameID) { + case 392: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 218, 37); + break; + case 342: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterStatus ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 220, 219); + break; + case 397: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TMeter ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 4, 15); + break; + } + break; + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + switch(qnameID) { + case 342: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterStatus ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 220, 219); + break; + case 397: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TMeter ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 15); + break; + } + break; + case 220: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + switch(qnameID) { + case 397: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TMeter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 15); + break; + } + break; + case 221: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + switch(qnameID) { + case 339: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 216, 118); + break; + } + break; + case 222: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + switch(qnameID) { + case 217: + /* SE( {urn:iso:15118:2:2013:MsgBody}ReceiptRequired ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 223, 29); + break; + case 129: + /* SE( {urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 24); + break; + } + break; + case 223: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + switch(qnameID) { + case 129: + /* SE( {urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 24); + break; + } + break; + case 224: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 211, 41); + break; + } + break; + case 225: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(qnameID) { + case 170: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 226, 47); + break; + } + break; + case 226: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + switch(qnameID) { + case 188: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetCurrent ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 227, 8); + break; + } + break; + case 227: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + switch(qnameID) { + case 175: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 228, 8); + break; + case 173: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 229, 8); + break; + case 174: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 230, 8); + break; + case 137: + /* SE( {urn:iso:15118:2:2013:MsgBody}BulkChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 231, 29); + break; + case 156: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 3, 4, state, qnameID, 232, 29); + break; + } + break; + case 228: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + switch(qnameID) { + case 173: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 229, 8); + break; + case 174: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 230, 8); + break; + case 137: + /* SE( {urn:iso:15118:2:2013:MsgBody}BulkChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 231, 29); + break; + case 156: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 232, 29); + break; + } + break; + case 229: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + switch(qnameID) { + case 174: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 230, 8); + break; + case 137: + /* SE( {urn:iso:15118:2:2013:MsgBody}BulkChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 231, 29); + break; + case 156: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 2, 2, state, qnameID, 232, 29); + break; + } + break; + case 230: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + switch(qnameID) { + case 137: + /* SE( {urn:iso:15118:2:2013:MsgBody}BulkChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 231, 29); + break; + case 156: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 232, 29); + break; + } + break; + case 231: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + switch(qnameID) { + case 156: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 232, 29); + break; + } + break; + case 232: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + switch(qnameID) { + case 219: + /* SE( {urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 233, 8); + break; + case 218: + /* SE( {urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 234, 8); + break; + case 189: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetVoltage ) */ + errn = _exiEncodeStartElement(stream, 2, 2, state, qnameID, 4, 8); + break; + } + break; + case 233: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + switch(qnameID) { + case 218: + /* SE( {urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 234, 8); + break; + case 189: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetVoltage ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 8); + break; + } + break; + case 234: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + switch(qnameID) { + case 189: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetVoltage ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 8); + break; + } + break; + case 235: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(qnameID) { + case 170: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 226, 47); + break; + } + break; + case 236: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 237, 41); + break; + } + break; + case 237: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + switch(qnameID) { + case 169: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 238, 58); + break; + } + break; + case 238: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + switch(qnameID) { + case 184: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 239, 8); + break; + } + break; + case 239: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent)] */ + switch(qnameID) { + case 183: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 240, 8); + break; + } + break; + case 240: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved)] */ + switch(qnameID) { + case 176: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 241, 29); + break; + } + break; + case 241: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved)] */ + switch(qnameID) { + case 187: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 242, 29); + break; + } + break; + case 242: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved)] */ + switch(qnameID) { + case 182: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 243, 29); + break; + } + break; + case 243: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(qnameID) { + case 181: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 244, 8); + break; + case 179: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 245, 8); + break; + case 180: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 246, 8); + break; + case 177: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEID ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 247, 118); + break; + } + break; + case 244: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(qnameID) { + case 179: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 245, 8); + break; + case 180: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 246, 8); + break; + case 177: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEID ) */ + errn = _exiEncodeStartElement(stream, 2, 2, state, qnameID, 247, 118); + break; + } + break; + case 245: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(qnameID) { + case 180: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 246, 8); + break; + case 177: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEID ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 247, 118); + break; + } + break; + case 246: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(qnameID) { + case 177: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 247, 118); + break; + } + break; + case 247: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + switch(qnameID) { + case 224: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 248, 155); + break; + } + break; + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + switch(qnameID) { + case 194: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeterInfo ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 249, 215); + break; + case 217: + /* SE( {urn:iso:15118:2:2013:MsgBody}ReceiptRequired ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 29); + break; + } + break; + case 249: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + switch(qnameID) { + case 217: + /* SE( {urn:iso:15118:2:2013:MsgBody}ReceiptRequired ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 29); + break; + } + break; + case 250: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 237, 41); + break; + } + break; + case 251: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + switch(qnameID) { + case 285: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 252, 47); + break; + } + break; + case 252: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + switch(qnameID) { + case 260: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 253, 29); + break; + case 265: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 29); + break; + } + break; + case 253: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + switch(qnameID) { + case 265: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 29); + break; + } + break; + case 254: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + switch(qnameID) { + case 285: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 252, 47); + break; + } + break; + case 255: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + switch(qnameID) { + case 84: + /* SE( {http://www.w3.org/2000/09/xmldsig#}P ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 256, 37); + break; + case 69: + /* SE( {http://www.w3.org/2000/09/xmldsig#}G ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 258, 37); + break; + case 128: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Y ) */ + errn = _exiEncodeStartElement(stream, 2, 2, state, qnameID, 259, 37); + break; + } + break; + case 256: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q)] */ + switch(qnameID) { + case 90: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Q ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 257, 37); + break; + } + break; + case 257: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + switch(qnameID) { + case 69: + /* SE( {http://www.w3.org/2000/09/xmldsig#}G ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 258, 37); + break; + case 128: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Y ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 259, 37); + break; + } + break; + case 258: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + switch(qnameID) { + case 128: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Y ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 259, 37); + break; + } + break; + case 259: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + switch(qnameID) { + case 72: + /* SE( {http://www.w3.org/2000/09/xmldsig#}J ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 260, 37); + break; + case 100: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Seed ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 261, 37); + break; + } + break; + case 260: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + switch(qnameID) { + case 100: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Seed ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 261, 37); + break; + } + break; + case 261: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter)] */ + switch(qnameID) { + case 89: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PgenCounter ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 37); + break; + } + break; + case 262: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + switch(qnameID) { + case 84: + /* SE( {http://www.w3.org/2000/09/xmldsig#}P ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 256, 37); + break; + case 69: + /* SE( {http://www.w3.org/2000/09/xmldsig#}G ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 258, 37); + break; + case 128: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Y ) */ + errn = _exiEncodeStartElement(stream, 2, 2, state, qnameID, 259, 37); + break; + } + break; + case 263: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(qnameID) { + case 345: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 264, 3); + break; + } + break; + case 264: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + switch(qnameID) { + case 319: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSENotification ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 26); + break; + } + break; + case 265: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(qnameID) { + case 345: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 264, 3); + break; + } + break; + case 266: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(qnameID) { + case 364: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 160); + break; + case 398: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 45); + break; + } + break; + case 267: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(qnameID) { + case 364: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 160); + break; + case 398: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 45); + break; + } + break; + case 268: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 75: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyName ) */ + errn = _exiEncodeStartElement(stream, 4, 1, state, qnameID, 270, 74); + break; + case 76: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyValue ) */ + errn = _exiEncodeStartElement(stream, 4, 2, state, qnameID, 270, 271); + break; + case 95: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RetrievalMethod ) */ + errn = _exiEncodeStartElement(stream, 4, 3, state, qnameID, 270, 277); + break; + case 119: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Data ) */ + errn = _exiEncodeStartElement(stream, 4, 4, state, qnameID, 270, 287); + break; + case 85: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPData ) */ + errn = _exiEncodeStartElement(stream, 4, 5, state, qnameID, 270, 291); + break; + case 97: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKIData ) */ + errn = _exiEncodeStartElement(stream, 4, 6, state, qnameID, 270, 295); + break; + case 80: + /* SE( {http://www.w3.org/2000/09/xmldsig#}MgmtData ) */ + errn = _exiEncodeStartElement(stream, 4, 7, state, qnameID, 270, 74); + break; + } + break; + case 269: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 75: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyName ) */ + errn = _exiEncodeStartElement(stream, 4, 0, state, qnameID, 270, 74); + break; + case 76: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyValue ) */ + errn = _exiEncodeStartElement(stream, 4, 1, state, qnameID, 270, 271); + break; + case 95: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RetrievalMethod ) */ + errn = _exiEncodeStartElement(stream, 4, 2, state, qnameID, 270, 277); + break; + case 119: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Data ) */ + errn = _exiEncodeStartElement(stream, 4, 3, state, qnameID, 270, 287); + break; + case 85: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPData ) */ + errn = _exiEncodeStartElement(stream, 4, 4, state, qnameID, 270, 291); + break; + case 97: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKIData ) */ + errn = _exiEncodeStartElement(stream, 4, 5, state, qnameID, 270, 295); + break; + case 80: + /* SE( {http://www.w3.org/2000/09/xmldsig#}MgmtData ) */ + errn = _exiEncodeStartElement(stream, 4, 6, state, qnameID, 270, 74); + break; + } + break; + case 270: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 75: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyName ) */ + errn = _exiEncodeStartElement(stream, 4, 0, state, qnameID, 270, 74); + break; + case 76: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyValue ) */ + errn = _exiEncodeStartElement(stream, 4, 1, state, qnameID, 270, 271); + break; + case 95: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RetrievalMethod ) */ + errn = _exiEncodeStartElement(stream, 4, 2, state, qnameID, 270, 277); + break; + case 119: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Data ) */ + errn = _exiEncodeStartElement(stream, 4, 3, state, qnameID, 270, 287); + break; + case 85: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPData ) */ + errn = _exiEncodeStartElement(stream, 4, 4, state, qnameID, 270, 291); + break; + case 97: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKIData ) */ + errn = _exiEncodeStartElement(stream, 4, 5, state, qnameID, 270, 295); + break; + case 80: + /* SE( {http://www.w3.org/2000/09/xmldsig#}MgmtData ) */ + errn = _exiEncodeStartElement(stream, 4, 6, state, qnameID, 270, 74); + break; + } + break; + case 271: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 62: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 272, 255); + break; + case 91: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 272, 273); + break; + } + break; + case 273: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + switch(qnameID) { + case 81: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Modulus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 274, 37); + break; + } + break; + case 274: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent)] */ + switch(qnameID) { + case 68: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Exponent ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 37); + break; + } + break; + case 275: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + switch(qnameID) { + case 81: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Modulus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 274, 37); + break; + } + break; + case 276: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 62: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 272, 255); + break; + case 91: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 272, 273); + break; + } + break; + case 277: + /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(qnameID) { + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 4, 280); + break; + } + break; + case 278: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(qnameID) { + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 280); + break; + } + break; + case 279: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(qnameID) { + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 280); + break; + } + break; + case 280: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + switch(qnameID) { + case 113: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transform ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 284, 281); + break; + } + break; + case 282: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 127: + /* SE( {http://www.w3.org/2000/09/xmldsig#}XPath ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 283, 74); + break; + } + break; + case 283: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 127: + /* SE( {http://www.w3.org/2000/09/xmldsig#}XPath ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 283, 74); + break; + } + break; + case 284: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] */ + switch(qnameID) { + case 113: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transform ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 284, 281); + break; + } + break; + case 285: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + switch(qnameID) { + case 113: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transform ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 284, 281); + break; + } + break; + case 286: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(qnameID) { + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 280); + break; + } + break; + case 287: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */ + switch(qnameID) { + case 122: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 288, 73); + break; + case 124: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SKI ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 288, 289); + break; + case 126: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SubjectName ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 288, 74); + break; + case 118: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Certificate ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 288, 289); + break; + case 117: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509CRL ) */ + errn = _exiEncodeStartElement(stream, 3, 4, state, qnameID, 288, 289); + break; + } + break; + case 288: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] */ + switch(qnameID) { + case 122: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 288, 73); + break; + case 124: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SKI ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 288, 289); + break; + case 126: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SubjectName ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 288, 74); + break; + case 118: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Certificate ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 288, 289); + break; + case 117: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509CRL ) */ + errn = _exiEncodeStartElement(stream, 3, 4, state, qnameID, 288, 289); + break; + } + break; + case 290: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */ + switch(qnameID) { + case 122: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 288, 73); + break; + case 124: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SKI ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 288, 289); + break; + case 126: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SubjectName ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 288, 74); + break; + case 118: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Certificate ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 288, 289); + break; + case 117: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509CRL ) */ + errn = _exiEncodeStartElement(stream, 3, 4, state, qnameID, 288, 289); + break; + } + break; + case 291: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + switch(qnameID) { + case 87: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPKeyID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 292, 289); + break; + case 88: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 293, 289); + break; + } + break; + case 292: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] */ + switch(qnameID) { + case 88: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 293, 289); + break; + } + break; + case 294: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + switch(qnameID) { + case 87: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPKeyID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 292, 289); + break; + case 88: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 293, 289); + break; + } + break; + case 295: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + switch(qnameID) { + case 99: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKISexp ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 296, 289); + break; + } + break; + case 296: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] */ + switch(qnameID) { + case 99: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKISexp ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 296, 289); + break; + } + break; + case 297: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */ + switch(qnameID) { + case 99: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKISexp ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 296, 289); + break; + } + break; + case 298: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + switch(qnameID) { + case 99: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKISexp ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 296, 289); + break; + } + break; + case 299: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 75: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyName ) */ + errn = _exiEncodeStartElement(stream, 4, 0, state, qnameID, 270, 74); + break; + case 76: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyValue ) */ + errn = _exiEncodeStartElement(stream, 4, 1, state, qnameID, 270, 271); + break; + case 95: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RetrievalMethod ) */ + errn = _exiEncodeStartElement(stream, 4, 2, state, qnameID, 270, 277); + break; + case 119: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Data ) */ + errn = _exiEncodeStartElement(stream, 4, 3, state, qnameID, 270, 287); + break; + case 85: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPData ) */ + errn = _exiEncodeStartElement(stream, 4, 4, state, qnameID, 270, 291); + break; + case 97: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKIData ) */ + errn = _exiEncodeStartElement(stream, 4, 5, state, qnameID, 270, 295); + break; + case 80: + /* SE( {http://www.w3.org/2000/09/xmldsig#}MgmtData ) */ + errn = _exiEncodeStartElement(stream, 4, 6, state, qnameID, 270, 74); + break; + } + break; + case 300: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + switch(qnameID) { + case 93: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Reference ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 309, 302); + break; + } + break; + case 301: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + switch(qnameID) { + case 93: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Reference ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 309, 302); + break; + } + break; + case 302: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(qnameID) { + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 306, 280); + break; + case 64: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestMethod ) */ + errn = _exiEncodeStartElement(stream, 3, 4, state, qnameID, 307, 66); + break; + } + break; + case 303: + /* StartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(qnameID) { + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 306, 280); + break; + case 64: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestMethod ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 307, 66); + break; + } + break; + case 304: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(qnameID) { + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 306, 280); + break; + case 64: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestMethod ) */ + errn = _exiEncodeStartElement(stream, 2, 2, state, qnameID, 307, 66); + break; + } + break; + case 305: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(qnameID) { + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 306, 280); + break; + case 64: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestMethod ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 307, 66); + break; + } + break; + case 306: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(qnameID) { + case 64: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestMethod ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 307, 66); + break; + } + break; + case 307: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue)] */ + switch(qnameID) { + case 66: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestValue ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 37); + break; + } + break; + case 308: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(qnameID) { + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 306, 280); + break; + case 64: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestMethod ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 307, 66); + break; + } + break; + case 309: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */ + switch(qnameID) { + case 93: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Reference ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 309, 302); + break; + } + break; + case 310: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + switch(qnameID) { + case 93: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Reference ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 309, 302); + break; + } + break; + case 311: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + switch(qnameID) { + case 240: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionID ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 315, 313); + break; + } + break; + case 312: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + switch(qnameID) { + case 240: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 315, 313); + break; + } + break; + case 315: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + switch(qnameID) { + case 224: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 316, 155); + break; + case 194: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeterInfo ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 215); + break; + } + break; + case 316: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + switch(qnameID) { + case 194: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeterInfo ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 215); + break; + } + break; + case 317: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + switch(qnameID) { + case 240: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 315, 313); + break; + } + break; + case 318: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 319, 41); + break; + } + break; + case 319: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus)] */ + switch(qnameID) { + case 258: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 24); + break; + case 282: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 58); + break; + case 323: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 2, 2, state, qnameID, 4, 263); + break; + } + break; + case 320: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 319, 41); + break; + } + break; + case 324: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + switch(qnameID) { + case 253: + /* SE( {urn:iso:15118:2:2013:MsgBody}eMAID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 325, 74); + break; + } + break; + case 325: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + switch(qnameID) { + case 163: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 101); + break; + } + break; + case 326: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + switch(qnameID) { + case 253: + /* SE( {urn:iso:15118:2:2013:MsgBody}eMAID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 325, 74); + break; + } + break; + case 327: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 328, 41); + break; + } + break; + case 328: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge)] */ + switch(qnameID) { + case 190: + /* SE( {urn:iso:15118:2:2013:MsgBody}GenChallenge ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 329, 37); + break; + } + break; + case 329: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp)] */ + switch(qnameID) { + case 186: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSETimeStamp ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 15); + break; + } + break; + case 330: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 328, 41); + break; + } + break; + case 331: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + switch(qnameID) { + case 225: + /* SE( {urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 334, 332); + break; + } + break; + case 334: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList)] */ + switch(qnameID) { + case 226: + /* SE( {urn:iso:15118:2:2013:MsgBody}SelectedServiceList ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 335); + break; + } + break; + case 335: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 339, 336); + break; + } + break; + case 336: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(qnameID) { + case 386: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 337, 161); + break; + } + break; + case 337: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), END_ELEMENT] */ + switch(qnameID) { + case 355: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 15); + break; + } + break; + case 338: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(qnameID) { + case 386: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 337, 161); + break; + } + break; + case 339: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 340, 336); + break; + } + break; + case 340: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 341, 336); + break; + } + break; + case 341: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 342, 336); + break; + } + break; + case 342: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 343, 336); + break; + } + break; + case 343: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 344, 336); + break; + } + break; + case 344: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 345, 336); + break; + } + break; + case 345: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 346, 336); + break; + } + break; + case 346: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 347, 336); + break; + } + break; + case 347: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 348, 336); + break; + } + break; + case 348: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 349, 336); + break; + } + break; + case 349: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 350, 336); + break; + } + break; + case 350: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 351, 336); + break; + } + break; + case 351: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 352, 336); + break; + } + break; + case 352: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 353, 336); + break; + } + break; + case 353: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 336); + break; + } + break; + case 354: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + switch(qnameID) { + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 339, 336); + break; + } + break; + case 355: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + switch(qnameID) { + case 225: + /* SE( {urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 334, 332); + break; + } + break; + case 356: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 41); + break; + } + break; + case 357: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 41); + break; + } + break; + case 358: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + switch(qnameID) { + case 154: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeProgress ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 359, 26); + break; + } + break; + case 359: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + switch(qnameID) { + case 224: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 360, 155); + break; + } + break; + case 360: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + switch(qnameID) { + case 157: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingProfile ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 392, 361); + break; + case 278: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 4, 251); + break; + case 303: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 4, 45); + break; + } + break; + case 361: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 368, 362); + break; + } + break; + case 362: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + switch(qnameID) { + case 268: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 363, 3); + break; + } + break; + case 363: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + switch(qnameID) { + case 267: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 364, 8); + break; + } + break; + case 364: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), END_ELEMENT] */ + switch(qnameID) { + case 266: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 365); + break; + } + break; + case 367: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + switch(qnameID) { + case 268: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 363, 3); + break; + } + break; + case 368: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 369, 362); + break; + } + break; + case 369: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 370, 362); + break; + } + break; + case 370: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 371, 362); + break; + } + break; + case 371: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 372, 362); + break; + } + break; + case 372: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 373, 362); + break; + } + break; + case 373: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 374, 362); + break; + } + break; + case 374: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 375, 362); + break; + } + break; + case 375: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 376, 362); + break; + } + break; + case 376: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 377, 362); + break; + } + break; + case 377: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 378, 362); + break; + } + break; + case 378: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 379, 362); + break; + } + break; + case 379: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 380, 362); + break; + } + break; + case 380: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 381, 362); + break; + } + break; + case 381: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 382, 362); + break; + } + break; + case 382: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 383, 362); + break; + } + break; + case 383: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 384, 362); + break; + } + break; + case 384: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 385, 362); + break; + } + break; + case 385: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 386, 362); + break; + } + break; + case 386: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 387, 362); + break; + } + break; + case 387: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 388, 362); + break; + } + break; + case 388: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 389, 362); + break; + } + break; + case 389: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 390, 362); + break; + } + break; + case 390: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 362); + break; + } + break; + case 391: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + switch(qnameID) { + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 368, 362); + break; + } + break; + case 392: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + switch(qnameID) { + case 278: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 251); + break; + case 303: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 45); + break; + } + break; + case 393: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + switch(qnameID) { + case 154: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeProgress ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 359, 26); + break; + } + break; + case 394: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(qnameID) { + case 170: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 395, 47); + break; + } + break; + case 395: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + switch(qnameID) { + case 189: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetVoltage ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 396, 8); + break; + } + break; + case 396: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + switch(qnameID) { + case 188: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetCurrent ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 8); + break; + } + break; + case 397: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + switch(qnameID) { + case 170: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 395, 47); + break; + } + break; + case 398: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 399, 41); + break; + } + break; + case 399: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + switch(qnameID) { + case 169: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 400, 58); + break; + } + break; + case 400: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + switch(qnameID) { + case 184: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 8); + break; + } + break; + case 401: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 399, 41); + break; + } + break; + case 402: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + switch(qnameID) { + case 236: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 161); + break; + } + break; + case 403: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + switch(qnameID) { + case 236: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 161); + break; + } + break; + case 404: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 405, 41); + break; + } + break; + case 405: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + switch(qnameID) { + case 236: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 406, 161); + break; + } + break; + case 406: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), END_ELEMENT] */ + switch(qnameID) { + case 238: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceParameterList ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 407); + break; + } + break; + case 407: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 431, 408); + break; + } + break; + case 408: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + switch(qnameID) { + case 355: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 409, 15); + break; + } + break; + case 409: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter)] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 415, 410); + break; + } + break; + case 411: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */ + switch(qnameID) { + case 403: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}boolValue ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 4, 29); + break; + case 404: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}byteValue ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 4, 412); + break; + case 433: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}shortValue ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 4, 15); + break; + case 418: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}intValue ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 4, 15); + break; + case 425: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}physicalValue ) */ + errn = _exiEncodeStartElement(stream, 3, 4, state, qnameID, 4, 8); + break; + case 437: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}stringValue ) */ + errn = _exiEncodeStartElement(stream, 3, 5, state, qnameID, 4, 74); + break; + } + break; + case 414: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue)] */ + switch(qnameID) { + case 403: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}boolValue ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 4, 29); + break; + case 404: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}byteValue ) */ + errn = _exiEncodeStartElement(stream, 3, 1, state, qnameID, 4, 412); + break; + case 433: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}shortValue ) */ + errn = _exiEncodeStartElement(stream, 3, 2, state, qnameID, 4, 15); + break; + case 418: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}intValue ) */ + errn = _exiEncodeStartElement(stream, 3, 3, state, qnameID, 4, 15); + break; + case 425: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}physicalValue ) */ + errn = _exiEncodeStartElement(stream, 3, 4, state, qnameID, 4, 8); + break; + case 437: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}stringValue ) */ + errn = _exiEncodeStartElement(stream, 3, 5, state, qnameID, 4, 74); + break; + } + break; + case 415: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 416, 410); + break; + } + break; + case 416: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 417, 410); + break; + } + break; + case 417: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 418, 410); + break; + } + break; + case 418: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 419, 410); + break; + } + break; + case 419: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 420, 410); + break; + } + break; + case 420: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 421, 410); + break; + } + break; + case 421: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 422, 410); + break; + } + break; + case 422: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 423, 410); + break; + } + break; + case 423: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 424, 410); + break; + } + break; + case 424: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 425, 410); + break; + } + break; + case 425: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 426, 410); + break; + } + break; + case 426: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 427, 410); + break; + } + break; + case 427: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 428, 410); + break; + } + break; + case 428: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 429, 410); + break; + } + break; + case 429: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + switch(qnameID) { + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 410); + break; + } + break; + case 430: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + switch(qnameID) { + case 355: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 409, 15); + break; + } + break; + case 431: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 432, 408); + break; + } + break; + case 432: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 433, 408); + break; + } + break; + case 433: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 434, 408); + break; + } + break; + case 434: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 435, 408); + break; + } + break; + case 435: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 436, 408); + break; + } + break; + case 436: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 437, 408); + break; + } + break; + case 437: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 438, 408); + break; + } + break; + case 438: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 439, 408); + break; + } + break; + case 439: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 440, 408); + break; + } + break; + case 440: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 441, 408); + break; + } + break; + case 441: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 442, 408); + break; + } + break; + case 442: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 443, 408); + break; + } + break; + case 443: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 444, 408); + break; + } + break; + case 444: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 445, 408); + break; + } + break; + case 445: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 446, 408); + break; + } + break; + case 446: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 447, 408); + break; + } + break; + case 447: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 448, 408); + break; + } + break; + case 448: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 449, 408); + break; + } + break; + case 449: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 450, 408); + break; + } + break; + case 450: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 451, 408); + break; + } + break; + case 451: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 452, 408); + break; + } + break; + case 452: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 453, 408); + break; + } + break; + case 453: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 454, 408); + break; + } + break; + case 454: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 455, 408); + break; + } + break; + case 455: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 456, 408); + break; + } + break; + case 456: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 457, 408); + break; + } + break; + case 457: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 458, 408); + break; + } + break; + case 458: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 459, 408); + break; + } + break; + case 459: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 460, 408); + break; + } + break; + case 460: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 461, 408); + break; + } + break; + case 461: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 462, 408); + break; + } + break; + case 462: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 463, 408); + break; + } + break; + case 463: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 464, 408); + break; + } + break; + case 464: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 465, 408); + break; + } + break; + case 465: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 466, 408); + break; + } + break; + case 466: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 467, 408); + break; + } + break; + case 467: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 468, 408); + break; + } + break; + case 468: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 469, 408); + break; + } + break; + case 469: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 470, 408); + break; + } + break; + case 470: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 471, 408); + break; + } + break; + case 471: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 472, 408); + break; + } + break; + case 472: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 473, 408); + break; + } + break; + case 473: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 474, 408); + break; + } + break; + case 474: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 475, 408); + break; + } + break; + case 475: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 476, 408); + break; + } + break; + case 476: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 477, 408); + break; + } + break; + case 477: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 478, 408); + break; + } + break; + case 478: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 479, 408); + break; + } + break; + case 479: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 480, 408); + break; + } + break; + case 480: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 481, 408); + break; + } + break; + case 481: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 482, 408); + break; + } + break; + case 482: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 483, 408); + break; + } + break; + case 483: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 484, 408); + break; + } + break; + case 484: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 485, 408); + break; + } + break; + case 485: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 486, 408); + break; + } + break; + case 486: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 487, 408); + break; + } + break; + case 487: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 488, 408); + break; + } + break; + case 488: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 489, 408); + break; + } + break; + case 489: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 490, 408); + break; + } + break; + case 490: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 491, 408); + break; + } + break; + case 491: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 492, 408); + break; + } + break; + case 492: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 493, 408); + break; + } + break; + case 493: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 494, 408); + break; + } + break; + case 494: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 495, 408); + break; + } + break; + case 495: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 496, 408); + break; + } + break; + case 496: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 497, 408); + break; + } + break; + case 497: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 498, 408); + break; + } + break; + case 498: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 499, 408); + break; + } + break; + case 499: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 500, 408); + break; + } + break; + case 500: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 501, 408); + break; + } + break; + case 501: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 502, 408); + break; + } + break; + case 502: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 503, 408); + break; + } + break; + case 503: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 504, 408); + break; + } + break; + case 504: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 505, 408); + break; + } + break; + case 505: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 506, 408); + break; + } + break; + case 506: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 507, 408); + break; + } + break; + case 507: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 508, 408); + break; + } + break; + case 508: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 509, 408); + break; + } + break; + case 509: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 510, 408); + break; + } + break; + case 510: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 511, 408); + break; + } + break; + case 511: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 512, 408); + break; + } + break; + case 512: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 513, 408); + break; + } + break; + case 513: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 514, 408); + break; + } + break; + case 514: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 515, 408); + break; + } + break; + case 515: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 516, 408); + break; + } + break; + case 516: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 517, 408); + break; + } + break; + case 517: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 518, 408); + break; + } + break; + case 518: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 519, 408); + break; + } + break; + case 519: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 520, 408); + break; + } + break; + case 520: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 521, 408); + break; + } + break; + case 521: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 522, 408); + break; + } + break; + case 522: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 523, 408); + break; + } + break; + case 523: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 524, 408); + break; + } + break; + case 524: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 525, 408); + break; + } + break; + case 525: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 526, 408); + break; + } + break; + case 526: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 527, 408); + break; + } + break; + case 527: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 528, 408); + break; + } + break; + case 528: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 529, 408); + break; + } + break; + case 529: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 530, 408); + break; + } + break; + case 530: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 531, 408); + break; + } + break; + case 531: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 532, 408); + break; + } + break; + case 532: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 533, 408); + break; + } + break; + case 533: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 534, 408); + break; + } + break; + case 534: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 535, 408); + break; + } + break; + case 535: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 536, 408); + break; + } + break; + case 536: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 537, 408); + break; + } + break; + case 537: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 538, 408); + break; + } + break; + case 538: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 539, 408); + break; + } + break; + case 539: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 540, 408); + break; + } + break; + case 540: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 541, 408); + break; + } + break; + case 541: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 542, 408); + break; + } + break; + case 542: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 543, 408); + break; + } + break; + case 543: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 544, 408); + break; + } + break; + case 544: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 545, 408); + break; + } + break; + case 545: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 546, 408); + break; + } + break; + case 546: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 547, 408); + break; + } + break; + case 547: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 548, 408); + break; + } + break; + case 548: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 549, 408); + break; + } + break; + case 549: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 550, 408); + break; + } + break; + case 550: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 551, 408); + break; + } + break; + case 551: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 552, 408); + break; + } + break; + case 552: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 553, 408); + break; + } + break; + case 553: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 554, 408); + break; + } + break; + case 554: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 555, 408); + break; + } + break; + case 555: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 556, 408); + break; + } + break; + case 556: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 557, 408); + break; + } + break; + case 557: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 558, 408); + break; + } + break; + case 558: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 559, 408); + break; + } + break; + case 559: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 560, 408); + break; + } + break; + case 560: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 561, 408); + break; + } + break; + case 561: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 562, 408); + break; + } + break; + case 562: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 563, 408); + break; + } + break; + case 563: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 564, 408); + break; + } + break; + case 564: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 565, 408); + break; + } + break; + case 565: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 566, 408); + break; + } + break; + case 566: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 567, 408); + break; + } + break; + case 567: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 568, 408); + break; + } + break; + case 568: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 569, 408); + break; + } + break; + case 569: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 570, 408); + break; + } + break; + case 570: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 571, 408); + break; + } + break; + case 571: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 572, 408); + break; + } + break; + case 572: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 573, 408); + break; + } + break; + case 573: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 574, 408); + break; + } + break; + case 574: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 575, 408); + break; + } + break; + case 575: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 576, 408); + break; + } + break; + case 576: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 577, 408); + break; + } + break; + case 577: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 578, 408); + break; + } + break; + case 578: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 579, 408); + break; + } + break; + case 579: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 580, 408); + break; + } + break; + case 580: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 581, 408); + break; + } + break; + case 581: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 582, 408); + break; + } + break; + case 582: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 583, 408); + break; + } + break; + case 583: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 584, 408); + break; + } + break; + case 584: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 585, 408); + break; + } + break; + case 585: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 586, 408); + break; + } + break; + case 586: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 587, 408); + break; + } + break; + case 587: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 588, 408); + break; + } + break; + case 588: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 589, 408); + break; + } + break; + case 589: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 590, 408); + break; + } + break; + case 590: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 591, 408); + break; + } + break; + case 591: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 592, 408); + break; + } + break; + case 592: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 593, 408); + break; + } + break; + case 593: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 594, 408); + break; + } + break; + case 594: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 595, 408); + break; + } + break; + case 595: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 596, 408); + break; + } + break; + case 596: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 597, 408); + break; + } + break; + case 597: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 598, 408); + break; + } + break; + case 598: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 599, 408); + break; + } + break; + case 599: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 600, 408); + break; + } + break; + case 600: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 601, 408); + break; + } + break; + case 601: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 602, 408); + break; + } + break; + case 602: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 603, 408); + break; + } + break; + case 603: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 604, 408); + break; + } + break; + case 604: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 605, 408); + break; + } + break; + case 605: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 606, 408); + break; + } + break; + case 606: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 607, 408); + break; + } + break; + case 607: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 608, 408); + break; + } + break; + case 608: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 609, 408); + break; + } + break; + case 609: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 610, 408); + break; + } + break; + case 610: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 611, 408); + break; + } + break; + case 611: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 612, 408); + break; + } + break; + case 612: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 613, 408); + break; + } + break; + case 613: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 614, 408); + break; + } + break; + case 614: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 615, 408); + break; + } + break; + case 615: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 616, 408); + break; + } + break; + case 616: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 617, 408); + break; + } + break; + case 617: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 618, 408); + break; + } + break; + case 618: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 619, 408); + break; + } + break; + case 619: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 620, 408); + break; + } + break; + case 620: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 621, 408); + break; + } + break; + case 621: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 622, 408); + break; + } + break; + case 622: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 623, 408); + break; + } + break; + case 623: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 624, 408); + break; + } + break; + case 624: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 625, 408); + break; + } + break; + case 625: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 626, 408); + break; + } + break; + case 626: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 627, 408); + break; + } + break; + case 627: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 628, 408); + break; + } + break; + case 628: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 629, 408); + break; + } + break; + case 629: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 630, 408); + break; + } + break; + case 630: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 631, 408); + break; + } + break; + case 631: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 632, 408); + break; + } + break; + case 632: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 633, 408); + break; + } + break; + case 633: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 634, 408); + break; + } + break; + case 634: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 635, 408); + break; + } + break; + case 635: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 636, 408); + break; + } + break; + case 636: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 637, 408); + break; + } + break; + case 637: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 638, 408); + break; + } + break; + case 638: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 639, 408); + break; + } + break; + case 639: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 640, 408); + break; + } + break; + case 640: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 641, 408); + break; + } + break; + case 641: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 642, 408); + break; + } + break; + case 642: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 643, 408); + break; + } + break; + case 643: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 644, 408); + break; + } + break; + case 644: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 645, 408); + break; + } + break; + case 645: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 646, 408); + break; + } + break; + case 646: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 647, 408); + break; + } + break; + case 647: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 648, 408); + break; + } + break; + case 648: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 649, 408); + break; + } + break; + case 649: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 650, 408); + break; + } + break; + case 650: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 651, 408); + break; + } + break; + case 651: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 652, 408); + break; + } + break; + case 652: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 653, 408); + break; + } + break; + case 653: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 654, 408); + break; + } + break; + case 654: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 655, 408); + break; + } + break; + case 655: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 656, 408); + break; + } + break; + case 656: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 657, 408); + break; + } + break; + case 657: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 658, 408); + break; + } + break; + case 658: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 659, 408); + break; + } + break; + case 659: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 660, 408); + break; + } + break; + case 660: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 661, 408); + break; + } + break; + case 661: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 662, 408); + break; + } + break; + case 662: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 663, 408); + break; + } + break; + case 663: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 664, 408); + break; + } + break; + case 664: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 665, 408); + break; + } + break; + case 665: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 666, 408); + break; + } + break; + case 666: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 667, 408); + break; + } + break; + case 667: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 668, 408); + break; + } + break; + case 668: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 669, 408); + break; + } + break; + case 669: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 670, 408); + break; + } + break; + case 670: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 671, 408); + break; + } + break; + case 671: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 672, 408); + break; + } + break; + case 672: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 673, 408); + break; + } + break; + case 673: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 674, 408); + break; + } + break; + case 674: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 675, 408); + break; + } + break; + case 675: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 676, 408); + break; + } + break; + case 676: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 677, 408); + break; + } + break; + case 677: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 678, 408); + break; + } + break; + case 678: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 679, 408); + break; + } + break; + case 679: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 680, 408); + break; + } + break; + case 680: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 681, 408); + break; + } + break; + case 681: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 682, 408); + break; + } + break; + case 682: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 683, 408); + break; + } + break; + case 683: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 684, 408); + break; + } + break; + case 684: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 408); + break; + } + break; + case 685: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + switch(qnameID) { + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 431, 408); + break; + } + break; + case 686: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 405, 41); + break; + } + break; + case 687: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + switch(qnameID) { + case 239: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceScope ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 688, 118); + break; + case 227: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 689); + break; + } + break; + case 688: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + switch(qnameID) { + case 227: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 689); + break; + } + break; + case 691: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + switch(qnameID) { + case 239: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceScope ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 688, 118); + break; + case 227: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 689); + break; + } + break; + case 692: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 693, 41); + break; + } + break; + case 693: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList)] */ + switch(qnameID) { + case 204: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentOptionList ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 697, 694); + break; + } + break; + case 694: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + switch(qnameID) { + case 358: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PaymentOption ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 695, 332); + break; + } + break; + case 695: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), END_ELEMENT] */ + switch(qnameID) { + case 358: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PaymentOption ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 332); + break; + } + break; + case 696: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + switch(qnameID) { + case 358: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PaymentOption ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 695, 332); + break; + } + break; + case 697: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService)] */ + switch(qnameID) { + case 155: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeService ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 712, 698); + break; + } + break; + case 698: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(qnameID) { + case 386: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 699, 161); + break; + } + break; + case 699: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + switch(qnameID) { + case 388: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceName ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 700, 118); + break; + case 385: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 701, 689); + break; + } + break; + case 700: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + switch(qnameID) { + case 385: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 701, 689); + break; + } + break; + case 701: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + switch(qnameID) { + case 390: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceScope ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 702, 118); + break; + case 334: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FreeService ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 703, 29); + break; + } + break; + case 702: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + switch(qnameID) { + case 334: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FreeService ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 703, 29); + break; + } + break; + case 703: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode)] */ + switch(qnameID) { + case 395: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 704); + break; + } + break; + case 704: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + switch(qnameID) { + case 328: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 705, 134); + break; + } + break; + case 705: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + switch(qnameID) { + case 328: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 706, 134); + break; + } + break; + case 706: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + switch(qnameID) { + case 328: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 707, 134); + break; + } + break; + case 707: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + switch(qnameID) { + case 328: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 708, 134); + break; + } + break; + case 708: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + switch(qnameID) { + case 328: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 709, 134); + break; + } + break; + case 709: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + switch(qnameID) { + case 328: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 134); + break; + } + break; + case 710: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + switch(qnameID) { + case 328: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 705, 134); + break; + } + break; + case 711: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(qnameID) { + case 386: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 699, 161); + break; + } + break; + case 712: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), END_ELEMENT] */ + switch(qnameID) { + case 237: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceList ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 713); + break; + } + break; + case 713: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + switch(qnameID) { + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 720, 714); + break; + } + break; + case 714: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(qnameID) { + case 386: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 715, 161); + break; + } + break; + case 715: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + switch(qnameID) { + case 388: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceName ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 716, 118); + break; + case 385: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 717, 689); + break; + } + break; + case 716: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + switch(qnameID) { + case 385: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 717, 689); + break; + } + break; + case 717: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + switch(qnameID) { + case 390: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceScope ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 718, 118); + break; + case 334: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FreeService ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 29); + break; + } + break; + case 718: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + switch(qnameID) { + case 334: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FreeService ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 29); + break; + } + break; + case 719: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(qnameID) { + case 386: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 715, 161); + break; + } + break; + case 720: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(qnameID) { + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 721, 714); + break; + } + break; + case 721: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(qnameID) { + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 722, 714); + break; + } + break; + case 722: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(qnameID) { + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 723, 714); + break; + } + break; + case 723: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(qnameID) { + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 724, 714); + break; + } + break; + case 724: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(qnameID) { + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 725, 714); + break; + } + break; + case 725: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(qnameID) { + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 726, 714); + break; + } + break; + case 726: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + switch(qnameID) { + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 714); + break; + } + break; + case 727: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + switch(qnameID) { + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 720, 714); + break; + } + break; + case 728: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 693, 41); + break; + } + break; + case 729: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + switch(qnameID) { + case 172: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVCCID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 313); + break; + } + break; + case 730: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + switch(qnameID) { + case 172: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVCCID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 313); + break; + } + break; + case 731: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 732, 41); + break; + } + break; + case 732: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + switch(qnameID) { + case 177: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 733, 118); + break; + } + break; + case 733: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), END_ELEMENT] */ + switch(qnameID) { + case 186: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSETimeStamp ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 15); + break; + } + break; + case 734: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + switch(qnameID) { + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 732, 41); + break; + } + break; + case 735: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + switch(qnameID) { + case 158: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingSession ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 332); + break; + } + break; + case 736: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + switch(qnameID) { + case 158: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingSession ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 332); + break; + } + break; + case 737: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + switch(qnameID) { + case 111: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignedInfo ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 746, 739); + break; + } + break; + case 738: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + switch(qnameID) { + case 111: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignedInfo ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 746, 739); + break; + } + break; + case 739: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + switch(qnameID) { + case 59: + /* SE( {http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 741, 66); + break; + } + break; + case 740: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + switch(qnameID) { + case 59: + /* SE( {http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 741, 66); + break; + } + break; + case 741: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod)] */ + switch(qnameID) { + case 102: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureMethod ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 310, 742); + break; + } + break; + case 743: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 70: + /* SE( {http://www.w3.org/2000/09/xmldsig#}HMACOutputLength ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 68, 219); + break; + } + break; + case 744: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 70: + /* SE( {http://www.w3.org/2000/09/xmldsig#}HMACOutputLength ) */ + errn = _exiEncodeStartElement(stream, 3, 0, state, qnameID, 68, 219); + break; + } + break; + case 745: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + switch(qnameID) { + case 59: + /* SE( {http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 741, 66); + break; + } + break; + case 746: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue)] */ + switch(qnameID) { + case 109: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureValue ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 748, 747); + break; + } + break; + case 748: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + switch(qnameID) { + case 73: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyInfo ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 749, 268); + break; + case 82: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Object ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 749, 321); + break; + } + break; + case 749: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + switch(qnameID) { + case 82: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Object ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 749, 321); + break; + } + break; + case 750: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + switch(qnameID) { + case 111: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignedInfo ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 746, 739); + break; + } + break; + case 751: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + switch(qnameID) { + case 106: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperty ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 757, 753); + break; + } + break; + case 752: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + switch(qnameID) { + case 106: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperty ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 757, 753); + break; + } + break; + case 757: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] */ + switch(qnameID) { + case 106: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperty ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 757, 753); + break; + } + break; + case 758: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + switch(qnameID) { + case 106: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperty ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 757, 753); + break; + } + break; + case 759: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + switch(qnameID) { + case 443: + /* SE( {urn:iso:15118:2:2013:MsgDef}Header ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 767, 760); + break; + } + break; + case 760: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + switch(qnameID) { + case 447: + /* SE( {urn:iso:15118:2:2013:MsgHeader}SessionID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 761, 313); + break; + } + break; + case 761: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + switch(qnameID) { + case 446: + /* SE( {urn:iso:15118:2:2013:MsgHeader}Notification ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 765, 762); + break; + case 101: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Signature ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 737); + break; + } + break; + case 762: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + switch(qnameID) { + case 332: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FaultCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 763, 26); + break; + } + break; + case 763: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), END_ELEMENT] */ + switch(qnameID) { + case 333: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FaultMsg ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 118); + break; + } + break; + case 764: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + switch(qnameID) { + case 332: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FaultCode ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 763, 26); + break; + } + break; + case 765: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + switch(qnameID) { + case 101: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Signature ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 737); + break; + } + break; + case 766: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + switch(qnameID) { + case 447: + /* SE( {urn:iso:15118:2:2013:MsgHeader}SessionID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 761, 313); + break; + } + break; + case 767: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body)] */ + switch(qnameID) { + case 442: + /* SE( {urn:iso:15118:2:2013:MsgDef}Body ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 4, 768); + break; + } + break; + case 768: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + switch(qnameID) { + case 130: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationReq ) */ + errn = _exiEncodeStartElement(stream, 6, 0, state, qnameID, 4, 35); + break; + case 132: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationRes ) */ + errn = _exiEncodeStartElement(stream, 6, 1, state, qnameID, 4, 40); + break; + case 135: + /* SE( {urn:iso:15118:2:2013:MsgBody}BodyElement ) */ + errn = _exiEncodeStartElement(stream, 6, 2, state, qnameID, 4, 45); + break; + case 138: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckReq ) */ + errn = _exiEncodeStartElement(stream, 6, 3, state, qnameID, 4, 46); + break; + case 140: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckRes ) */ + errn = _exiEncodeStartElement(stream, 6, 4, state, qnameID, 4, 56); + break; + case 142: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq ) */ + errn = _exiEncodeStartElement(stream, 6, 5, state, qnameID, 4, 69); + break; + case 144: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes ) */ + errn = _exiEncodeStartElement(stream, 6, 6, state, qnameID, 4, 99); + break; + case 146: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq ) */ + errn = _exiEncodeStartElement(stream, 6, 7, state, qnameID, 4, 120); + break; + case 148: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes ) */ + errn = _exiEncodeStartElement(stream, 6, 8, state, qnameID, 4, 124); + break; + case 150: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 6, 9, state, qnameID, 4, 132); + break; + case 152: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 6, 10, state, qnameID, 4, 150); + break; + case 159: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusReq ) */ + errn = _exiEncodeStartElement(stream, 6, 11, state, qnameID, 4, 209); + break; + case 161: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusRes ) */ + errn = _exiEncodeStartElement(stream, 6, 12, state, qnameID, 4, 210); + break; + case 165: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandReq ) */ + errn = _exiEncodeStartElement(stream, 6, 13, state, qnameID, 4, 225); + break; + case 167: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandRes ) */ + errn = _exiEncodeStartElement(stream, 6, 14, state, qnameID, 4, 236); + break; + case 195: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq ) */ + errn = _exiEncodeStartElement(stream, 6, 15, state, qnameID, 4, 311); + break; + case 197: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes ) */ + errn = _exiEncodeStartElement(stream, 6, 16, state, qnameID, 4, 318); + break; + case 200: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq ) */ + errn = _exiEncodeStartElement(stream, 6, 17, state, qnameID, 4, 324); + break; + case 202: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes ) */ + errn = _exiEncodeStartElement(stream, 6, 18, state, qnameID, 4, 327); + break; + case 205: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq ) */ + errn = _exiEncodeStartElement(stream, 6, 19, state, qnameID, 4, 331); + break; + case 207: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes ) */ + errn = _exiEncodeStartElement(stream, 6, 20, state, qnameID, 4, 356); + break; + case 209: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq ) */ + errn = _exiEncodeStartElement(stream, 6, 21, state, qnameID, 4, 358); + break; + case 211: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes ) */ + errn = _exiEncodeStartElement(stream, 6, 22, state, qnameID, 4, 318); + break; + case 213: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeReq ) */ + errn = _exiEncodeStartElement(stream, 6, 23, state, qnameID, 4, 394); + break; + case 215: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeRes ) */ + errn = _exiEncodeStartElement(stream, 6, 24, state, qnameID, 4, 398); + break; + case 228: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailReq ) */ + errn = _exiEncodeStartElement(stream, 6, 25, state, qnameID, 4, 402); + break; + case 230: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailRes ) */ + errn = _exiEncodeStartElement(stream, 6, 26, state, qnameID, 4, 404); + break; + case 232: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 6, 27, state, qnameID, 4, 687); + break; + case 234: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 6, 28, state, qnameID, 4, 692); + break; + case 241: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupReq ) */ + errn = _exiEncodeStartElement(stream, 6, 29, state, qnameID, 4, 729); + break; + case 243: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupRes ) */ + errn = _exiEncodeStartElement(stream, 6, 30, state, qnameID, 4, 731); + break; + case 245: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopReq ) */ + errn = _exiEncodeStartElement(stream, 6, 31, state, qnameID, 4, 735); + break; + case 247: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopRes ) */ + errn = _exiEncodeStartElement(stream, 6, 32, state, qnameID, 4, 356); + break; + case 249: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq ) */ + errn = _exiEncodeStartElement(stream, 6, 33, state, qnameID, 4, 46); + break; + case 251: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes ) */ + errn = _exiEncodeStartElement(stream, 6, 34, state, qnameID, 4, 398); + break; + } + break; + case 769: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + switch(qnameID) { + case 130: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationReq ) */ + errn = _exiEncodeStartElement(stream, 6, 0, state, qnameID, 4, 35); + break; + case 132: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationRes ) */ + errn = _exiEncodeStartElement(stream, 6, 1, state, qnameID, 4, 40); + break; + case 135: + /* SE( {urn:iso:15118:2:2013:MsgBody}BodyElement ) */ + errn = _exiEncodeStartElement(stream, 6, 2, state, qnameID, 4, 45); + break; + case 138: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckReq ) */ + errn = _exiEncodeStartElement(stream, 6, 3, state, qnameID, 4, 46); + break; + case 140: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckRes ) */ + errn = _exiEncodeStartElement(stream, 6, 4, state, qnameID, 4, 56); + break; + case 142: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq ) */ + errn = _exiEncodeStartElement(stream, 6, 5, state, qnameID, 4, 69); + break; + case 144: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes ) */ + errn = _exiEncodeStartElement(stream, 6, 6, state, qnameID, 4, 99); + break; + case 146: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq ) */ + errn = _exiEncodeStartElement(stream, 6, 7, state, qnameID, 4, 120); + break; + case 148: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes ) */ + errn = _exiEncodeStartElement(stream, 6, 8, state, qnameID, 4, 124); + break; + case 150: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 6, 9, state, qnameID, 4, 132); + break; + case 152: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 6, 10, state, qnameID, 4, 150); + break; + case 159: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusReq ) */ + errn = _exiEncodeStartElement(stream, 6, 11, state, qnameID, 4, 209); + break; + case 161: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusRes ) */ + errn = _exiEncodeStartElement(stream, 6, 12, state, qnameID, 4, 210); + break; + case 165: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandReq ) */ + errn = _exiEncodeStartElement(stream, 6, 13, state, qnameID, 4, 225); + break; + case 167: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandRes ) */ + errn = _exiEncodeStartElement(stream, 6, 14, state, qnameID, 4, 236); + break; + case 195: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq ) */ + errn = _exiEncodeStartElement(stream, 6, 15, state, qnameID, 4, 311); + break; + case 197: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes ) */ + errn = _exiEncodeStartElement(stream, 6, 16, state, qnameID, 4, 318); + break; + case 200: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq ) */ + errn = _exiEncodeStartElement(stream, 6, 17, state, qnameID, 4, 324); + break; + case 202: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes ) */ + errn = _exiEncodeStartElement(stream, 6, 18, state, qnameID, 4, 327); + break; + case 205: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq ) */ + errn = _exiEncodeStartElement(stream, 6, 19, state, qnameID, 4, 331); + break; + case 207: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes ) */ + errn = _exiEncodeStartElement(stream, 6, 20, state, qnameID, 4, 356); + break; + case 209: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq ) */ + errn = _exiEncodeStartElement(stream, 6, 21, state, qnameID, 4, 358); + break; + case 211: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes ) */ + errn = _exiEncodeStartElement(stream, 6, 22, state, qnameID, 4, 318); + break; + case 213: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeReq ) */ + errn = _exiEncodeStartElement(stream, 6, 23, state, qnameID, 4, 394); + break; + case 215: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeRes ) */ + errn = _exiEncodeStartElement(stream, 6, 24, state, qnameID, 4, 398); + break; + case 228: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailReq ) */ + errn = _exiEncodeStartElement(stream, 6, 25, state, qnameID, 4, 402); + break; + case 230: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailRes ) */ + errn = _exiEncodeStartElement(stream, 6, 26, state, qnameID, 4, 404); + break; + case 232: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 6, 27, state, qnameID, 4, 687); + break; + case 234: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 6, 28, state, qnameID, 4, 692); + break; + case 241: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupReq ) */ + errn = _exiEncodeStartElement(stream, 6, 29, state, qnameID, 4, 729); + break; + case 243: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupRes ) */ + errn = _exiEncodeStartElement(stream, 6, 30, state, qnameID, 4, 731); + break; + case 245: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopReq ) */ + errn = _exiEncodeStartElement(stream, 6, 31, state, qnameID, 4, 735); + break; + case 247: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopRes ) */ + errn = _exiEncodeStartElement(stream, 6, 32, state, qnameID, 4, 356); + break; + case 249: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq ) */ + errn = _exiEncodeStartElement(stream, 6, 33, state, qnameID, 4, 46); + break; + case 251: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes ) */ + errn = _exiEncodeStartElement(stream, 6, 34, state, qnameID, 4, 398); + break; + } + break; + case 770: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + switch(qnameID) { + case 443: + /* SE( {urn:iso:15118:2:2013:MsgDef}Header ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 767, 760); + break; + } + break; + case 772: + /* FragmentContent[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_DOCUMENT] */ + switch(qnameID) { + case 254: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 0, state, qnameID, 772, 2); + break; + case 256: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 1, state, qnameID, 772, 23); + break; + case 129: + /* SE( {urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 2, state, qnameID, 772, 24); + break; + case 258: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 3, state, qnameID, 772, 24); + break; + case 130: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationReq ) */ + errn = _exiEncodeStartElement(stream, 8, 4, state, qnameID, 772, 35); + break; + case 132: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationRes ) */ + errn = _exiEncodeStartElement(stream, 8, 5, state, qnameID, 772, 40); + break; + case 442: + /* SE( {urn:iso:15118:2:2013:MsgDef}Body ) */ + errn = _exiEncodeStartElement(stream, 8, 6, state, qnameID, 772, 768); + break; + case 135: + /* SE( {urn:iso:15118:2:2013:MsgBody}BodyElement ) */ + errn = _exiEncodeStartElement(stream, 8, 7, state, qnameID, 772, 45); + break; + case 137: + /* SE( {urn:iso:15118:2:2013:MsgBody}BulkChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 8, 8, state, qnameID, 772, 29); + break; + case 260: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 8, 9, state, qnameID, 772, 29); + break; + case 261: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}BulkSOC ) */ + errn = _exiEncodeStartElement(stream, 8, 10, state, qnameID, 772, 52); + break; + case 138: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckReq ) */ + errn = _exiEncodeStartElement(stream, 8, 11, state, qnameID, 772, 46); + break; + case 140: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckRes ) */ + errn = _exiEncodeStartElement(stream, 8, 12, state, qnameID, 772, 56); + break; + case 59: + /* SE( {http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod ) */ + errn = _exiEncodeStartElement(stream, 8, 13, state, qnameID, 772, 66); + break; + case 262: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Certificate ) */ + errn = _exiEncodeStartElement(stream, 8, 14, state, qnameID, 772, 37); + break; + case 142: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq ) */ + errn = _exiEncodeStartElement(stream, 8, 15, state, qnameID, 772, 69); + break; + case 144: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes ) */ + errn = _exiEncodeStartElement(stream, 8, 16, state, qnameID, 772, 99); + break; + case 146: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq ) */ + errn = _exiEncodeStartElement(stream, 8, 17, state, qnameID, 772, 120); + break; + case 148: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes ) */ + errn = _exiEncodeStartElement(stream, 8, 18, state, qnameID, 772, 124); + break; + case 150: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 8, 19, state, qnameID, 772, 132); + break; + case 152: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 8, 20, state, qnameID, 772, 150); + break; + case 154: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeProgress ) */ + errn = _exiEncodeStartElement(stream, 8, 21, state, qnameID, 772, 26); + break; + case 155: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeService ) */ + errn = _exiEncodeStartElement(stream, 8, 22, state, qnameID, 772, 698); + break; + case 156: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 8, 23, state, qnameID, 772, 29); + break; + case 265: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 8, 24, state, qnameID, 772, 29); + break; + case 157: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingProfile ) */ + errn = _exiEncodeStartElement(stream, 8, 25, state, qnameID, 772, 361); + break; + case 266: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse ) */ + errn = _exiEncodeStartElement(stream, 8, 26, state, qnameID, 772, 365); + break; + case 267: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower ) */ + errn = _exiEncodeStartElement(stream, 8, 27, state, qnameID, 772, 8); + break; + case 268: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart ) */ + errn = _exiEncodeStartElement(stream, 8, 28, state, qnameID, 772, 3); + break; + case 158: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingSession ) */ + errn = _exiEncodeStartElement(stream, 8, 29, state, qnameID, 772, 332); + break; + case 159: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusReq ) */ + errn = _exiEncodeStartElement(stream, 8, 30, state, qnameID, 772, 209); + break; + case 161: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusRes ) */ + errn = _exiEncodeStartElement(stream, 8, 31, state, qnameID, 772, 210); + break; + case 270: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost ) */ + errn = _exiEncodeStartElement(stream, 8, 32, state, qnameID, 772, 179); + break; + case 163: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain ) */ + errn = _exiEncodeStartElement(stream, 8, 33, state, qnameID, 772, 101); + break; + case 164: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey ) */ + errn = _exiEncodeStartElement(stream, 8, 34, state, qnameID, 772, 112); + break; + case 273: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Cost ) */ + errn = _exiEncodeStartElement(stream, 8, 35, state, qnameID, 772, 181); + break; + case 165: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandReq ) */ + errn = _exiEncodeStartElement(stream, 8, 36, state, qnameID, 772, 225); + break; + case 167: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandRes ) */ + errn = _exiEncodeStartElement(stream, 8, 37, state, qnameID, 772, 236); + break; + case 275: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 38, state, qnameID, 772, 137); + break; + case 278: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 39, state, qnameID, 772, 251); + break; + case 280: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 40, state, qnameID, 772, 198); + break; + case 169: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 41, state, qnameID, 772, 58); + break; + case 282: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 42, state, qnameID, 772, 58); + break; + case 170: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 43, state, qnameID, 772, 47); + break; + case 285: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 44, state, qnameID, 772, 47); + break; + case 171: + /* SE( {urn:iso:15118:2:2013:MsgBody}DHpublickey ) */ + errn = _exiEncodeStartElement(stream, 8, 45, state, qnameID, 772, 112); + break; + case 62: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 8, 46, state, qnameID, 772, 255); + break; + case 287: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DepartureTime ) */ + errn = _exiEncodeStartElement(stream, 8, 47, state, qnameID, 772, 3); + break; + case 64: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestMethod ) */ + errn = _exiEncodeStartElement(stream, 8, 48, state, qnameID, 772, 66); + break; + case 66: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestValue ) */ + errn = _exiEncodeStartElement(stream, 8, 49, state, qnameID, 772, 37); + break; + case 289: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EAmount ) */ + errn = _exiEncodeStartElement(stream, 8, 50, state, qnameID, 772, 8); + break; + case 291: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel ) */ + errn = _exiEncodeStartElement(stream, 8, 51, state, qnameID, 772, 173); + break; + case 172: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVCCID ) */ + errn = _exiEncodeStartElement(stream, 8, 52, state, qnameID, 772, 313); + break; + case 292: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 53, state, qnameID, 772, 147); + break; + case 294: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity ) */ + errn = _exiEncodeStartElement(stream, 8, 54, state, qnameID, 772, 8); + break; + case 295: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest ) */ + errn = _exiEncodeStartElement(stream, 8, 55, state, qnameID, 772, 8); + break; + case 296: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode ) */ + errn = _exiEncodeStartElement(stream, 8, 56, state, qnameID, 772, 49); + break; + case 297: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 57, state, qnameID, 772, 8); + break; + case 298: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage ) */ + errn = _exiEncodeStartElement(stream, 8, 58, state, qnameID, 772, 8); + break; + case 173: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 59, state, qnameID, 772, 8); + break; + case 299: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 60, state, qnameID, 772, 8); + break; + case 174: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 61, state, qnameID, 772, 8); + break; + case 300: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 62, state, qnameID, 772, 8); + break; + case 175: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 63, state, qnameID, 772, 8); + break; + case 301: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 64, state, qnameID, 772, 8); + break; + case 302: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 65, state, qnameID, 772, 8); + break; + case 303: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 66, state, qnameID, 772, 45); + break; + case 305: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC ) */ + errn = _exiEncodeStartElement(stream, 8, 67, state, qnameID, 772, 52); + break; + case 306: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVReady ) */ + errn = _exiEncodeStartElement(stream, 8, 68, state, qnameID, 772, 29); + break; + case 307: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 69, state, qnameID, 772, 45); + break; + case 176: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 8, 70, state, qnameID, 772, 29); + break; + case 309: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance ) */ + errn = _exiEncodeStartElement(stream, 8, 71, state, qnameID, 772, 8); + break; + case 310: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered ) */ + errn = _exiEncodeStartElement(stream, 8, 72, state, qnameID, 772, 8); + break; + case 177: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEID ) */ + errn = _exiEncodeStartElement(stream, 8, 73, state, qnameID, 772, 118); + break; + case 311: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 74, state, qnameID, 772, 61); + break; + case 178: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 75, state, qnameID, 772, 8); + break; + case 312: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 76, state, qnameID, 772, 8); + break; + case 179: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 77, state, qnameID, 772, 8); + break; + case 313: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 78, state, qnameID, 772, 8); + break; + case 180: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 79, state, qnameID, 772, 8); + break; + case 314: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 80, state, qnameID, 772, 8); + break; + case 181: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 81, state, qnameID, 772, 8); + break; + case 315: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 82, state, qnameID, 772, 8); + break; + case 316: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 83, state, qnameID, 772, 8); + break; + case 317: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 84, state, qnameID, 772, 8); + break; + case 318: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage ) */ + errn = _exiEncodeStartElement(stream, 8, 85, state, qnameID, 772, 8); + break; + case 319: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSENotification ) */ + errn = _exiEncodeStartElement(stream, 8, 86, state, qnameID, 772, 26); + break; + case 321: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple ) */ + errn = _exiEncodeStartElement(stream, 8, 87, state, qnameID, 772, 8); + break; + case 182: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 8, 88, state, qnameID, 772, 29); + break; + case 183: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 89, state, qnameID, 772, 8); + break; + case 184: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage ) */ + errn = _exiEncodeStartElement(stream, 8, 90, state, qnameID, 772, 8); + break; + case 185: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEProcessing ) */ + errn = _exiEncodeStartElement(stream, 8, 91, state, qnameID, 772, 26); + break; + case 323: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 92, state, qnameID, 772, 263); + break; + case 324: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode ) */ + errn = _exiEncodeStartElement(stream, 8, 93, state, qnameID, 772, 49); + break; + case 186: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSETimeStamp ) */ + errn = _exiEncodeStartElement(stream, 8, 94, state, qnameID, 772, 15); + break; + case 187: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 8, 95, state, qnameID, 772, 29); + break; + case 326: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 96, state, qnameID, 772, 45); + break; + case 188: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 97, state, qnameID, 772, 8); + break; + case 189: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetVoltage ) */ + errn = _exiEncodeStartElement(stream, 8, 98, state, qnameID, 772, 8); + break; + case 328: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 8, 99, state, qnameID, 772, 134); + break; + case 330: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Entry ) */ + errn = _exiEncodeStartElement(stream, 8, 100, state, qnameID, 772, 266); + break; + case 68: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Exponent ) */ + errn = _exiEncodeStartElement(stream, 8, 101, state, qnameID, 772, 37); + break; + case 332: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FaultCode ) */ + errn = _exiEncodeStartElement(stream, 8, 102, state, qnameID, 772, 26); + break; + case 333: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FaultMsg ) */ + errn = _exiEncodeStartElement(stream, 8, 103, state, qnameID, 772, 118); + break; + case 334: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FreeService ) */ + errn = _exiEncodeStartElement(stream, 8, 104, state, qnameID, 772, 29); + break; + case 335: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FullSOC ) */ + errn = _exiEncodeStartElement(stream, 8, 105, state, qnameID, 772, 52); + break; + case 69: + /* SE( {http://www.w3.org/2000/09/xmldsig#}G ) */ + errn = _exiEncodeStartElement(stream, 8, 106, state, qnameID, 772, 37); + break; + case 190: + /* SE( {urn:iso:15118:2:2013:MsgBody}GenChallenge ) */ + errn = _exiEncodeStartElement(stream, 8, 107, state, qnameID, 772, 37); + break; + case 70: + /* SE( {http://www.w3.org/2000/09/xmldsig#}HMACOutputLength ) */ + errn = _exiEncodeStartElement(stream, 8, 108, state, qnameID, 772, 219); + break; + case 443: + /* SE( {urn:iso:15118:2:2013:MsgDef}Header ) */ + errn = _exiEncodeStartElement(stream, 8, 109, state, qnameID, 772, 760); + break; + case 72: + /* SE( {http://www.w3.org/2000/09/xmldsig#}J ) */ + errn = _exiEncodeStartElement(stream, 8, 110, state, qnameID, 772, 37); + break; + case 73: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyInfo ) */ + errn = _exiEncodeStartElement(stream, 8, 111, state, qnameID, 772, 268); + break; + case 75: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyName ) */ + errn = _exiEncodeStartElement(stream, 8, 112, state, qnameID, 772, 74); + break; + case 76: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyValue ) */ + errn = _exiEncodeStartElement(stream, 8, 113, state, qnameID, 772, 271); + break; + case 192: + /* SE( {urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs ) */ + errn = _exiEncodeStartElement(stream, 8, 114, state, qnameID, 772, 72); + break; + case 78: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Manifest ) */ + errn = _exiEncodeStartElement(stream, 8, 115, state, qnameID, 772, 300); + break; + case 193: + /* SE( {urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 8, 116, state, qnameID, 772, 3); + break; + case 339: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterID ) */ + errn = _exiEncodeStartElement(stream, 8, 117, state, qnameID, 772, 118); + break; + case 194: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeterInfo ) */ + errn = _exiEncodeStartElement(stream, 8, 118, state, qnameID, 772, 215); + break; + case 341: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterReading ) */ + errn = _exiEncodeStartElement(stream, 8, 119, state, qnameID, 772, 3); + break; + case 342: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 120, state, qnameID, 772, 219); + break; + case 195: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq ) */ + errn = _exiEncodeStartElement(stream, 8, 121, state, qnameID, 772, 311); + break; + case 197: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes ) */ + errn = _exiEncodeStartElement(stream, 8, 122, state, qnameID, 772, 318); + break; + case 80: + /* SE( {http://www.w3.org/2000/09/xmldsig#}MgmtData ) */ + errn = _exiEncodeStartElement(stream, 8, 123, state, qnameID, 772, 74); + break; + case 81: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Modulus ) */ + errn = _exiEncodeStartElement(stream, 8, 124, state, qnameID, 772, 37); + break; + case 343: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Multiplier ) */ + errn = _exiEncodeStartElement(stream, 8, 125, state, qnameID, 772, 9); + break; + case 446: + /* SE( {urn:iso:15118:2:2013:MsgHeader}Notification ) */ + errn = _exiEncodeStartElement(stream, 8, 126, state, qnameID, 772, 762); + break; + case 345: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay ) */ + errn = _exiEncodeStartElement(stream, 8, 127, state, qnameID, 772, 3); + break; + case 347: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels ) */ + errn = _exiEncodeStartElement(stream, 8, 128, state, qnameID, 772, 173); + break; + case 199: + /* SE( {urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert ) */ + errn = _exiEncodeStartElement(stream, 8, 129, state, qnameID, 772, 37); + break; + case 82: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Object ) */ + errn = _exiEncodeStartElement(stream, 8, 130, state, qnameID, 772, 321); + break; + case 84: + /* SE( {http://www.w3.org/2000/09/xmldsig#}P ) */ + errn = _exiEncodeStartElement(stream, 8, 131, state, qnameID, 772, 37); + break; + case 85: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPData ) */ + errn = _exiEncodeStartElement(stream, 8, 132, state, qnameID, 772, 291); + break; + case 87: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPKeyID ) */ + errn = _exiEncodeStartElement(stream, 8, 133, state, qnameID, 772, 289); + break; + case 88: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket ) */ + errn = _exiEncodeStartElement(stream, 8, 134, state, qnameID, 772, 289); + break; + case 348: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMax ) */ + errn = _exiEncodeStartElement(stream, 8, 135, state, qnameID, 772, 8); + break; + case 349: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule ) */ + errn = _exiEncodeStartElement(stream, 8, 136, state, qnameID, 772, 158); + break; + case 350: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry ) */ + errn = _exiEncodeStartElement(stream, 8, 137, state, qnameID, 772, 159); + break; + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 8, 138, state, qnameID, 772, 410); + break; + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 8, 139, state, qnameID, 772, 408); + break; + case 355: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID ) */ + errn = _exiEncodeStartElement(stream, 8, 140, state, qnameID, 772, 15); + break; + case 200: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq ) */ + errn = _exiEncodeStartElement(stream, 8, 141, state, qnameID, 772, 324); + break; + case 202: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes ) */ + errn = _exiEncodeStartElement(stream, 8, 142, state, qnameID, 772, 327); + break; + case 358: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PaymentOption ) */ + errn = _exiEncodeStartElement(stream, 8, 143, state, qnameID, 772, 332); + break; + case 204: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentOptionList ) */ + errn = _exiEncodeStartElement(stream, 8, 144, state, qnameID, 772, 694); + break; + case 205: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq ) */ + errn = _exiEncodeStartElement(stream, 8, 145, state, qnameID, 772, 331); + break; + case 207: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes ) */ + errn = _exiEncodeStartElement(stream, 8, 146, state, qnameID, 772, 356); + break; + case 89: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PgenCounter ) */ + errn = _exiEncodeStartElement(stream, 8, 147, state, qnameID, 772, 37); + break; + case 209: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq ) */ + errn = _exiEncodeStartElement(stream, 8, 148, state, qnameID, 772, 358); + break; + case 211: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes ) */ + errn = _exiEncodeStartElement(stream, 8, 149, state, qnameID, 772, 318); + break; + case 213: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeReq ) */ + errn = _exiEncodeStartElement(stream, 8, 150, state, qnameID, 772, 394); + break; + case 215: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeRes ) */ + errn = _exiEncodeStartElement(stream, 8, 151, state, qnameID, 772, 398); + break; + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 8, 152, state, qnameID, 772, 362); + break; + case 90: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Q ) */ + errn = _exiEncodeStartElement(stream, 8, 153, state, qnameID, 772, 37); + break; + case 363: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RCD ) */ + errn = _exiEncodeStartElement(stream, 8, 154, state, qnameID, 772, 29); + break; + case 91: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 8, 155, state, qnameID, 772, 273); + break; + case 217: + /* SE( {urn:iso:15118:2:2013:MsgBody}ReceiptRequired ) */ + errn = _exiEncodeStartElement(stream, 8, 156, state, qnameID, 772, 29); + break; + case 93: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Reference ) */ + errn = _exiEncodeStartElement(stream, 8, 157, state, qnameID, 772, 302); + break; + case 364: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval ) */ + errn = _exiEncodeStartElement(stream, 8, 158, state, qnameID, 772, 160); + break; + case 218: + /* SE( {urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC ) */ + errn = _exiEncodeStartElement(stream, 8, 159, state, qnameID, 772, 8); + break; + case 219: + /* SE( {urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC ) */ + errn = _exiEncodeStartElement(stream, 8, 160, state, qnameID, 772, 8); + break; + case 220: + /* SE( {urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 8, 161, state, qnameID, 772, 134); + break; + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 8, 162, state, qnameID, 772, 41); + break; + case 95: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RetrievalMethod ) */ + errn = _exiEncodeStartElement(stream, 8, 163, state, qnameID, 772, 277); + break; + case 222: + /* SE( {urn:iso:15118:2:2013:MsgBody}RetryCounter ) */ + errn = _exiEncodeStartElement(stream, 8, 164, state, qnameID, 772, 15); + break; + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 8, 165, state, qnameID, 772, 73); + break; + case 223: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain ) */ + errn = _exiEncodeStartElement(stream, 8, 166, state, qnameID, 772, 101); + break; + case 368: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList ) */ + errn = _exiEncodeStartElement(stream, 8, 167, state, qnameID, 772, 153); + break; + case 370: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 8, 168, state, qnameID, 772, 154); + break; + case 224: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 8, 169, state, qnameID, 772, 155); + break; + case 371: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 8, 170, state, qnameID, 772, 155); + break; + case 373: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SASchedules ) */ + errn = _exiEncodeStartElement(stream, 8, 171, state, qnameID, 772, 45); + break; + case 97: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKIData ) */ + errn = _exiEncodeStartElement(stream, 8, 172, state, qnameID, 772, 295); + break; + case 99: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKISexp ) */ + errn = _exiEncodeStartElement(stream, 8, 173, state, qnameID, 772, 289); + break; + case 375: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariff ) */ + errn = _exiEncodeStartElement(stream, 8, 174, state, qnameID, 772, 169); + break; + case 376: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription ) */ + errn = _exiEncodeStartElement(stream, 8, 175, state, qnameID, 772, 118); + break; + case 377: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry ) */ + errn = _exiEncodeStartElement(stream, 8, 176, state, qnameID, 772, 176); + break; + case 379: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID ) */ + errn = _exiEncodeStartElement(stream, 8, 177, state, qnameID, 772, 155); + break; + case 100: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Seed ) */ + errn = _exiEncodeStartElement(stream, 8, 178, state, qnameID, 772, 37); + break; + case 225: + /* SE( {urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption ) */ + errn = _exiEncodeStartElement(stream, 8, 179, state, qnameID, 772, 332); + break; + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 8, 180, state, qnameID, 772, 336); + break; + case 226: + /* SE( {urn:iso:15118:2:2013:MsgBody}SelectedServiceList ) */ + errn = _exiEncodeStartElement(stream, 8, 181, state, qnameID, 772, 335); + break; + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 8, 182, state, qnameID, 772, 714); + break; + case 227: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 8, 183, state, qnameID, 772, 689); + break; + case 385: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 8, 184, state, qnameID, 772, 689); + break; + case 228: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailReq ) */ + errn = _exiEncodeStartElement(stream, 8, 185, state, qnameID, 772, 402); + break; + case 230: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailRes ) */ + errn = _exiEncodeStartElement(stream, 8, 186, state, qnameID, 772, 404); + break; + case 232: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 8, 187, state, qnameID, 772, 687); + break; + case 234: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 8, 188, state, qnameID, 772, 692); + break; + case 236: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 8, 189, state, qnameID, 772, 161); + break; + case 386: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 8, 190, state, qnameID, 772, 161); + break; + case 237: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceList ) */ + errn = _exiEncodeStartElement(stream, 8, 191, state, qnameID, 772, 713); + break; + case 388: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceName ) */ + errn = _exiEncodeStartElement(stream, 8, 192, state, qnameID, 772, 118); + break; + case 238: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceParameterList ) */ + errn = _exiEncodeStartElement(stream, 8, 193, state, qnameID, 772, 407); + break; + case 239: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceScope ) */ + errn = _exiEncodeStartElement(stream, 8, 194, state, qnameID, 772, 118); + break; + case 390: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceScope ) */ + errn = _exiEncodeStartElement(stream, 8, 195, state, qnameID, 772, 118); + break; + case 240: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionID ) */ + errn = _exiEncodeStartElement(stream, 8, 196, state, qnameID, 772, 313); + break; + case 447: + /* SE( {urn:iso:15118:2:2013:MsgHeader}SessionID ) */ + errn = _exiEncodeStartElement(stream, 8, 197, state, qnameID, 772, 313); + break; + case 241: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupReq ) */ + errn = _exiEncodeStartElement(stream, 8, 198, state, qnameID, 772, 729); + break; + case 243: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupRes ) */ + errn = _exiEncodeStartElement(stream, 8, 199, state, qnameID, 772, 731); + break; + case 245: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopReq ) */ + errn = _exiEncodeStartElement(stream, 8, 200, state, qnameID, 772, 735); + break; + case 247: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopRes ) */ + errn = _exiEncodeStartElement(stream, 8, 201, state, qnameID, 772, 356); + break; + case 392: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading ) */ + errn = _exiEncodeStartElement(stream, 8, 202, state, qnameID, 772, 37); + break; + case 101: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Signature ) */ + errn = _exiEncodeStartElement(stream, 8, 203, state, qnameID, 772, 737); + break; + case 102: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureMethod ) */ + errn = _exiEncodeStartElement(stream, 8, 204, state, qnameID, 772, 742); + break; + case 104: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperties ) */ + errn = _exiEncodeStartElement(stream, 8, 205, state, qnameID, 772, 751); + break; + case 106: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperty ) */ + errn = _exiEncodeStartElement(stream, 8, 206, state, qnameID, 772, 753); + break; + case 109: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureValue ) */ + errn = _exiEncodeStartElement(stream, 8, 207, state, qnameID, 772, 747); + break; + case 111: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignedInfo ) */ + errn = _exiEncodeStartElement(stream, 8, 208, state, qnameID, 772, 739); + break; + case 393: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SubCertificates ) */ + errn = _exiEncodeStartElement(stream, 8, 209, state, qnameID, 772, 104); + break; + case 395: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 8, 210, state, qnameID, 772, 704); + break; + case 397: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TMeter ) */ + errn = _exiEncodeStartElement(stream, 8, 211, state, qnameID, 772, 15); + break; + case 398: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval ) */ + errn = _exiEncodeStartElement(stream, 8, 212, state, qnameID, 772, 45); + break; + case 113: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transform ) */ + errn = _exiEncodeStartElement(stream, 8, 213, state, qnameID, 772, 281); + break; + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 8, 214, state, qnameID, 772, 280); + break; + case 399: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Unit ) */ + errn = _exiEncodeStartElement(stream, 8, 215, state, qnameID, 772, 12); + break; + case 444: + /* SE( {urn:iso:15118:2:2013:MsgDef}V2G_Message ) */ + errn = _exiEncodeStartElement(stream, 8, 216, state, qnameID, 772, 759); + break; + case 400: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Value ) */ + errn = _exiEncodeStartElement(stream, 8, 217, state, qnameID, 772, 15); + break; + case 249: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq ) */ + errn = _exiEncodeStartElement(stream, 8, 218, state, qnameID, 772, 46); + break; + case 251: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes ) */ + errn = _exiEncodeStartElement(stream, 8, 219, state, qnameID, 772, 398); + break; + case 117: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509CRL ) */ + errn = _exiEncodeStartElement(stream, 8, 220, state, qnameID, 772, 289); + break; + case 118: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Certificate ) */ + errn = _exiEncodeStartElement(stream, 8, 221, state, qnameID, 772, 289); + break; + case 119: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Data ) */ + errn = _exiEncodeStartElement(stream, 8, 222, state, qnameID, 772, 287); + break; + case 121: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509IssuerName ) */ + errn = _exiEncodeStartElement(stream, 8, 223, state, qnameID, 772, 74); + break; + case 122: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial ) */ + errn = _exiEncodeStartElement(stream, 8, 224, state, qnameID, 772, 73); + break; + case 124: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SKI ) */ + errn = _exiEncodeStartElement(stream, 8, 225, state, qnameID, 772, 289); + break; + case 125: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SerialNumber ) */ + errn = _exiEncodeStartElement(stream, 8, 226, state, qnameID, 772, 15); + break; + case 126: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SubjectName ) */ + errn = _exiEncodeStartElement(stream, 8, 227, state, qnameID, 772, 74); + break; + case 127: + /* SE( {http://www.w3.org/2000/09/xmldsig#}XPath ) */ + errn = _exiEncodeStartElement(stream, 8, 228, state, qnameID, 772, 74); + break; + case 128: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Y ) */ + errn = _exiEncodeStartElement(stream, 8, 229, state, qnameID, 772, 37); + break; + case 401: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}amount ) */ + errn = _exiEncodeStartElement(stream, 8, 230, state, qnameID, 772, 3); + break; + case 402: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier ) */ + errn = _exiEncodeStartElement(stream, 8, 231, state, qnameID, 772, 9); + break; + case 403: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}boolValue ) */ + errn = _exiEncodeStartElement(stream, 8, 232, state, qnameID, 772, 29); + break; + case 404: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}byteValue ) */ + errn = _exiEncodeStartElement(stream, 8, 233, state, qnameID, 772, 412); + break; + case 408: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}costKind ) */ + errn = _exiEncodeStartElement(stream, 8, 234, state, qnameID, 772, 26); + break; + case 411: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}duration ) */ + errn = _exiEncodeStartElement(stream, 8, 235, state, qnameID, 772, 161); + break; + case 253: + /* SE( {urn:iso:15118:2:2013:MsgBody}eMAID ) */ + errn = _exiEncodeStartElement(stream, 8, 236, state, qnameID, 772, 773); + break; + case 418: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}intValue ) */ + errn = _exiEncodeStartElement(stream, 8, 237, state, qnameID, 772, 15); + break; + case 425: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}physicalValue ) */ + errn = _exiEncodeStartElement(stream, 8, 238, state, qnameID, 772, 8); + break; + case 433: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}shortValue ) */ + errn = _exiEncodeStartElement(stream, 8, 239, state, qnameID, 772, 15); + break; + case 435: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}start ) */ + errn = _exiEncodeStartElement(stream, 8, 240, state, qnameID, 772, 161); + break; + case 436: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}startValue ) */ + errn = _exiEncodeStartElement(stream, 8, 241, state, qnameID, 772, 8); + break; + case 437: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}stringValue ) */ + errn = _exiEncodeStartElement(stream, 8, 242, state, qnameID, 772, 74); + break; + } + break; + case 773: + /* First(xsi:type)(xsi:nil)StartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 254: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 9, 11, state, qnameID, 774, 2); + break; + case 256: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 9, 12, state, qnameID, 774, 23); + break; + case 129: + /* SE( {urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 9, 13, state, qnameID, 774, 24); + break; + case 258: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 9, 14, state, qnameID, 774, 24); + break; + case 130: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationReq ) */ + errn = _exiEncodeStartElement(stream, 9, 15, state, qnameID, 774, 35); + break; + case 132: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationRes ) */ + errn = _exiEncodeStartElement(stream, 9, 16, state, qnameID, 774, 40); + break; + case 442: + /* SE( {urn:iso:15118:2:2013:MsgDef}Body ) */ + errn = _exiEncodeStartElement(stream, 9, 17, state, qnameID, 774, 768); + break; + case 135: + /* SE( {urn:iso:15118:2:2013:MsgBody}BodyElement ) */ + errn = _exiEncodeStartElement(stream, 9, 18, state, qnameID, 774, 45); + break; + case 137: + /* SE( {urn:iso:15118:2:2013:MsgBody}BulkChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 9, 19, state, qnameID, 774, 29); + break; + case 260: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 9, 20, state, qnameID, 774, 29); + break; + case 261: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}BulkSOC ) */ + errn = _exiEncodeStartElement(stream, 9, 21, state, qnameID, 774, 52); + break; + case 138: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckReq ) */ + errn = _exiEncodeStartElement(stream, 9, 22, state, qnameID, 774, 46); + break; + case 140: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckRes ) */ + errn = _exiEncodeStartElement(stream, 9, 23, state, qnameID, 774, 56); + break; + case 59: + /* SE( {http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod ) */ + errn = _exiEncodeStartElement(stream, 9, 24, state, qnameID, 774, 66); + break; + case 262: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Certificate ) */ + errn = _exiEncodeStartElement(stream, 9, 25, state, qnameID, 774, 37); + break; + case 142: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq ) */ + errn = _exiEncodeStartElement(stream, 9, 26, state, qnameID, 774, 69); + break; + case 144: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes ) */ + errn = _exiEncodeStartElement(stream, 9, 27, state, qnameID, 774, 99); + break; + case 146: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq ) */ + errn = _exiEncodeStartElement(stream, 9, 28, state, qnameID, 774, 120); + break; + case 148: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes ) */ + errn = _exiEncodeStartElement(stream, 9, 29, state, qnameID, 774, 124); + break; + case 150: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 9, 30, state, qnameID, 774, 132); + break; + case 152: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 9, 31, state, qnameID, 774, 150); + break; + case 154: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeProgress ) */ + errn = _exiEncodeStartElement(stream, 9, 32, state, qnameID, 774, 26); + break; + case 155: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeService ) */ + errn = _exiEncodeStartElement(stream, 9, 33, state, qnameID, 774, 698); + break; + case 156: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 9, 34, state, qnameID, 774, 29); + break; + case 265: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 9, 35, state, qnameID, 774, 29); + break; + case 157: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingProfile ) */ + errn = _exiEncodeStartElement(stream, 9, 36, state, qnameID, 774, 361); + break; + case 266: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse ) */ + errn = _exiEncodeStartElement(stream, 9, 37, state, qnameID, 774, 365); + break; + case 267: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower ) */ + errn = _exiEncodeStartElement(stream, 9, 38, state, qnameID, 774, 8); + break; + case 268: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart ) */ + errn = _exiEncodeStartElement(stream, 9, 39, state, qnameID, 774, 3); + break; + case 158: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingSession ) */ + errn = _exiEncodeStartElement(stream, 9, 40, state, qnameID, 774, 332); + break; + case 159: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusReq ) */ + errn = _exiEncodeStartElement(stream, 9, 41, state, qnameID, 774, 209); + break; + case 161: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusRes ) */ + errn = _exiEncodeStartElement(stream, 9, 42, state, qnameID, 774, 210); + break; + case 270: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost ) */ + errn = _exiEncodeStartElement(stream, 9, 43, state, qnameID, 774, 179); + break; + case 163: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain ) */ + errn = _exiEncodeStartElement(stream, 9, 44, state, qnameID, 774, 101); + break; + case 164: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey ) */ + errn = _exiEncodeStartElement(stream, 9, 45, state, qnameID, 774, 112); + break; + case 273: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Cost ) */ + errn = _exiEncodeStartElement(stream, 9, 46, state, qnameID, 774, 181); + break; + case 165: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandReq ) */ + errn = _exiEncodeStartElement(stream, 9, 47, state, qnameID, 774, 225); + break; + case 167: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandRes ) */ + errn = _exiEncodeStartElement(stream, 9, 48, state, qnameID, 774, 236); + break; + case 275: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 9, 49, state, qnameID, 774, 137); + break; + case 278: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 9, 50, state, qnameID, 774, 251); + break; + case 280: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 9, 51, state, qnameID, 774, 198); + break; + case 169: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 9, 52, state, qnameID, 774, 58); + break; + case 282: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 9, 53, state, qnameID, 774, 58); + break; + case 170: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 9, 54, state, qnameID, 774, 47); + break; + case 285: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 9, 55, state, qnameID, 774, 47); + break; + case 171: + /* SE( {urn:iso:15118:2:2013:MsgBody}DHpublickey ) */ + errn = _exiEncodeStartElement(stream, 9, 56, state, qnameID, 774, 112); + break; + case 62: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 9, 57, state, qnameID, 774, 255); + break; + case 287: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DepartureTime ) */ + errn = _exiEncodeStartElement(stream, 9, 58, state, qnameID, 774, 3); + break; + case 64: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestMethod ) */ + errn = _exiEncodeStartElement(stream, 9, 59, state, qnameID, 774, 66); + break; + case 66: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestValue ) */ + errn = _exiEncodeStartElement(stream, 9, 60, state, qnameID, 774, 37); + break; + case 289: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EAmount ) */ + errn = _exiEncodeStartElement(stream, 9, 61, state, qnameID, 774, 8); + break; + case 291: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel ) */ + errn = _exiEncodeStartElement(stream, 9, 62, state, qnameID, 774, 173); + break; + case 172: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVCCID ) */ + errn = _exiEncodeStartElement(stream, 9, 63, state, qnameID, 774, 313); + break; + case 292: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 9, 64, state, qnameID, 774, 147); + break; + case 294: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity ) */ + errn = _exiEncodeStartElement(stream, 9, 65, state, qnameID, 774, 8); + break; + case 295: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest ) */ + errn = _exiEncodeStartElement(stream, 9, 66, state, qnameID, 774, 8); + break; + case 296: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode ) */ + errn = _exiEncodeStartElement(stream, 9, 67, state, qnameID, 774, 49); + break; + case 297: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 9, 68, state, qnameID, 774, 8); + break; + case 298: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage ) */ + errn = _exiEncodeStartElement(stream, 9, 69, state, qnameID, 774, 8); + break; + case 173: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 70, state, qnameID, 774, 8); + break; + case 299: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 71, state, qnameID, 774, 8); + break; + case 174: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 72, state, qnameID, 774, 8); + break; + case 300: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 73, state, qnameID, 774, 8); + break; + case 175: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 74, state, qnameID, 774, 8); + break; + case 301: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 75, state, qnameID, 774, 8); + break; + case 302: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent ) */ + errn = _exiEncodeStartElement(stream, 9, 76, state, qnameID, 774, 8); + break; + case 303: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 9, 77, state, qnameID, 774, 45); + break; + case 305: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC ) */ + errn = _exiEncodeStartElement(stream, 9, 78, state, qnameID, 774, 52); + break; + case 306: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVReady ) */ + errn = _exiEncodeStartElement(stream, 9, 79, state, qnameID, 774, 29); + break; + case 307: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 9, 80, state, qnameID, 774, 45); + break; + case 176: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 9, 81, state, qnameID, 774, 29); + break; + case 309: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance ) */ + errn = _exiEncodeStartElement(stream, 9, 82, state, qnameID, 774, 8); + break; + case 310: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered ) */ + errn = _exiEncodeStartElement(stream, 9, 83, state, qnameID, 774, 8); + break; + case 177: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEID ) */ + errn = _exiEncodeStartElement(stream, 9, 84, state, qnameID, 774, 118); + break; + case 311: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus ) */ + errn = _exiEncodeStartElement(stream, 9, 85, state, qnameID, 774, 61); + break; + case 178: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 9, 86, state, qnameID, 774, 8); + break; + case 312: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 9, 87, state, qnameID, 774, 8); + break; + case 179: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 88, state, qnameID, 774, 8); + break; + case 313: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 89, state, qnameID, 774, 8); + break; + case 180: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 90, state, qnameID, 774, 8); + break; + case 314: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 91, state, qnameID, 774, 8); + break; + case 181: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 92, state, qnameID, 774, 8); + break; + case 315: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 93, state, qnameID, 774, 8); + break; + case 316: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 94, state, qnameID, 774, 8); + break; + case 317: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 9, 95, state, qnameID, 774, 8); + break; + case 318: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage ) */ + errn = _exiEncodeStartElement(stream, 9, 96, state, qnameID, 774, 8); + break; + case 319: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSENotification ) */ + errn = _exiEncodeStartElement(stream, 9, 97, state, qnameID, 774, 26); + break; + case 321: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple ) */ + errn = _exiEncodeStartElement(stream, 9, 98, state, qnameID, 774, 8); + break; + case 182: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 9, 99, state, qnameID, 774, 29); + break; + case 183: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent ) */ + errn = _exiEncodeStartElement(stream, 9, 100, state, qnameID, 774, 8); + break; + case 184: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage ) */ + errn = _exiEncodeStartElement(stream, 9, 101, state, qnameID, 774, 8); + break; + case 185: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEProcessing ) */ + errn = _exiEncodeStartElement(stream, 9, 102, state, qnameID, 774, 26); + break; + case 323: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 9, 103, state, qnameID, 774, 263); + break; + case 324: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode ) */ + errn = _exiEncodeStartElement(stream, 9, 104, state, qnameID, 774, 49); + break; + case 186: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSETimeStamp ) */ + errn = _exiEncodeStartElement(stream, 9, 105, state, qnameID, 774, 15); + break; + case 187: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 9, 106, state, qnameID, 774, 29); + break; + case 326: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVStatus ) */ + errn = _exiEncodeStartElement(stream, 9, 107, state, qnameID, 774, 45); + break; + case 188: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetCurrent ) */ + errn = _exiEncodeStartElement(stream, 9, 108, state, qnameID, 774, 8); + break; + case 189: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetVoltage ) */ + errn = _exiEncodeStartElement(stream, 9, 109, state, qnameID, 774, 8); + break; + case 328: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 9, 110, state, qnameID, 774, 134); + break; + case 330: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Entry ) */ + errn = _exiEncodeStartElement(stream, 9, 111, state, qnameID, 774, 266); + break; + case 68: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Exponent ) */ + errn = _exiEncodeStartElement(stream, 9, 112, state, qnameID, 774, 37); + break; + case 332: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FaultCode ) */ + errn = _exiEncodeStartElement(stream, 9, 113, state, qnameID, 774, 26); + break; + case 333: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FaultMsg ) */ + errn = _exiEncodeStartElement(stream, 9, 114, state, qnameID, 774, 118); + break; + case 334: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FreeService ) */ + errn = _exiEncodeStartElement(stream, 9, 115, state, qnameID, 774, 29); + break; + case 335: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FullSOC ) */ + errn = _exiEncodeStartElement(stream, 9, 116, state, qnameID, 774, 52); + break; + case 69: + /* SE( {http://www.w3.org/2000/09/xmldsig#}G ) */ + errn = _exiEncodeStartElement(stream, 9, 117, state, qnameID, 774, 37); + break; + case 190: + /* SE( {urn:iso:15118:2:2013:MsgBody}GenChallenge ) */ + errn = _exiEncodeStartElement(stream, 9, 118, state, qnameID, 774, 37); + break; + case 70: + /* SE( {http://www.w3.org/2000/09/xmldsig#}HMACOutputLength ) */ + errn = _exiEncodeStartElement(stream, 9, 119, state, qnameID, 774, 219); + break; + case 443: + /* SE( {urn:iso:15118:2:2013:MsgDef}Header ) */ + errn = _exiEncodeStartElement(stream, 9, 120, state, qnameID, 774, 760); + break; + case 72: + /* SE( {http://www.w3.org/2000/09/xmldsig#}J ) */ + errn = _exiEncodeStartElement(stream, 9, 121, state, qnameID, 774, 37); + break; + case 73: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyInfo ) */ + errn = _exiEncodeStartElement(stream, 9, 122, state, qnameID, 774, 268); + break; + case 75: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyName ) */ + errn = _exiEncodeStartElement(stream, 9, 123, state, qnameID, 774, 74); + break; + case 76: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyValue ) */ + errn = _exiEncodeStartElement(stream, 9, 124, state, qnameID, 774, 271); + break; + case 192: + /* SE( {urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs ) */ + errn = _exiEncodeStartElement(stream, 9, 125, state, qnameID, 774, 72); + break; + case 78: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Manifest ) */ + errn = _exiEncodeStartElement(stream, 9, 126, state, qnameID, 774, 300); + break; + case 193: + /* SE( {urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 9, 127, state, qnameID, 774, 3); + break; + case 339: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterID ) */ + errn = _exiEncodeStartElement(stream, 9, 128, state, qnameID, 774, 118); + break; + case 194: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeterInfo ) */ + errn = _exiEncodeStartElement(stream, 9, 129, state, qnameID, 774, 215); + break; + case 341: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterReading ) */ + errn = _exiEncodeStartElement(stream, 9, 130, state, qnameID, 774, 3); + break; + case 342: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterStatus ) */ + errn = _exiEncodeStartElement(stream, 9, 131, state, qnameID, 774, 219); + break; + case 195: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq ) */ + errn = _exiEncodeStartElement(stream, 9, 132, state, qnameID, 774, 311); + break; + case 197: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes ) */ + errn = _exiEncodeStartElement(stream, 9, 133, state, qnameID, 774, 318); + break; + case 80: + /* SE( {http://www.w3.org/2000/09/xmldsig#}MgmtData ) */ + errn = _exiEncodeStartElement(stream, 9, 134, state, qnameID, 774, 74); + break; + case 81: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Modulus ) */ + errn = _exiEncodeStartElement(stream, 9, 135, state, qnameID, 774, 37); + break; + case 343: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Multiplier ) */ + errn = _exiEncodeStartElement(stream, 9, 136, state, qnameID, 774, 9); + break; + case 446: + /* SE( {urn:iso:15118:2:2013:MsgHeader}Notification ) */ + errn = _exiEncodeStartElement(stream, 9, 137, state, qnameID, 774, 762); + break; + case 345: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay ) */ + errn = _exiEncodeStartElement(stream, 9, 138, state, qnameID, 774, 3); + break; + case 347: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels ) */ + errn = _exiEncodeStartElement(stream, 9, 139, state, qnameID, 774, 173); + break; + case 199: + /* SE( {urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert ) */ + errn = _exiEncodeStartElement(stream, 9, 140, state, qnameID, 774, 37); + break; + case 82: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Object ) */ + errn = _exiEncodeStartElement(stream, 9, 141, state, qnameID, 774, 321); + break; + case 84: + /* SE( {http://www.w3.org/2000/09/xmldsig#}P ) */ + errn = _exiEncodeStartElement(stream, 9, 142, state, qnameID, 774, 37); + break; + case 85: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPData ) */ + errn = _exiEncodeStartElement(stream, 9, 143, state, qnameID, 774, 291); + break; + case 87: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPKeyID ) */ + errn = _exiEncodeStartElement(stream, 9, 144, state, qnameID, 774, 289); + break; + case 88: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket ) */ + errn = _exiEncodeStartElement(stream, 9, 145, state, qnameID, 774, 289); + break; + case 348: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMax ) */ + errn = _exiEncodeStartElement(stream, 9, 146, state, qnameID, 774, 8); + break; + case 349: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule ) */ + errn = _exiEncodeStartElement(stream, 9, 147, state, qnameID, 774, 158); + break; + case 350: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry ) */ + errn = _exiEncodeStartElement(stream, 9, 148, state, qnameID, 774, 159); + break; + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 9, 149, state, qnameID, 774, 410); + break; + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 9, 150, state, qnameID, 774, 408); + break; + case 355: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID ) */ + errn = _exiEncodeStartElement(stream, 9, 151, state, qnameID, 774, 15); + break; + case 200: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq ) */ + errn = _exiEncodeStartElement(stream, 9, 152, state, qnameID, 774, 324); + break; + case 202: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes ) */ + errn = _exiEncodeStartElement(stream, 9, 153, state, qnameID, 774, 327); + break; + case 358: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PaymentOption ) */ + errn = _exiEncodeStartElement(stream, 9, 154, state, qnameID, 774, 332); + break; + case 204: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentOptionList ) */ + errn = _exiEncodeStartElement(stream, 9, 155, state, qnameID, 774, 694); + break; + case 205: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq ) */ + errn = _exiEncodeStartElement(stream, 9, 156, state, qnameID, 774, 331); + break; + case 207: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes ) */ + errn = _exiEncodeStartElement(stream, 9, 157, state, qnameID, 774, 356); + break; + case 89: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PgenCounter ) */ + errn = _exiEncodeStartElement(stream, 9, 158, state, qnameID, 774, 37); + break; + case 209: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq ) */ + errn = _exiEncodeStartElement(stream, 9, 159, state, qnameID, 774, 358); + break; + case 211: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes ) */ + errn = _exiEncodeStartElement(stream, 9, 160, state, qnameID, 774, 318); + break; + case 213: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeReq ) */ + errn = _exiEncodeStartElement(stream, 9, 161, state, qnameID, 774, 394); + break; + case 215: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeRes ) */ + errn = _exiEncodeStartElement(stream, 9, 162, state, qnameID, 774, 398); + break; + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 9, 163, state, qnameID, 774, 362); + break; + case 90: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Q ) */ + errn = _exiEncodeStartElement(stream, 9, 164, state, qnameID, 774, 37); + break; + case 363: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RCD ) */ + errn = _exiEncodeStartElement(stream, 9, 165, state, qnameID, 774, 29); + break; + case 91: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 9, 166, state, qnameID, 774, 273); + break; + case 217: + /* SE( {urn:iso:15118:2:2013:MsgBody}ReceiptRequired ) */ + errn = _exiEncodeStartElement(stream, 9, 167, state, qnameID, 774, 29); + break; + case 93: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Reference ) */ + errn = _exiEncodeStartElement(stream, 9, 168, state, qnameID, 774, 302); + break; + case 364: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval ) */ + errn = _exiEncodeStartElement(stream, 9, 169, state, qnameID, 774, 160); + break; + case 218: + /* SE( {urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC ) */ + errn = _exiEncodeStartElement(stream, 9, 170, state, qnameID, 774, 8); + break; + case 219: + /* SE( {urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC ) */ + errn = _exiEncodeStartElement(stream, 9, 171, state, qnameID, 774, 8); + break; + case 220: + /* SE( {urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 9, 172, state, qnameID, 774, 134); + break; + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 9, 173, state, qnameID, 774, 41); + break; + case 95: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RetrievalMethod ) */ + errn = _exiEncodeStartElement(stream, 9, 174, state, qnameID, 774, 277); + break; + case 222: + /* SE( {urn:iso:15118:2:2013:MsgBody}RetryCounter ) */ + errn = _exiEncodeStartElement(stream, 9, 175, state, qnameID, 774, 15); + break; + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 9, 176, state, qnameID, 774, 73); + break; + case 223: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain ) */ + errn = _exiEncodeStartElement(stream, 9, 177, state, qnameID, 774, 101); + break; + case 368: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList ) */ + errn = _exiEncodeStartElement(stream, 9, 178, state, qnameID, 774, 153); + break; + case 370: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 9, 179, state, qnameID, 774, 154); + break; + case 224: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 9, 180, state, qnameID, 774, 155); + break; + case 371: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 9, 181, state, qnameID, 774, 155); + break; + case 373: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SASchedules ) */ + errn = _exiEncodeStartElement(stream, 9, 182, state, qnameID, 774, 45); + break; + case 97: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKIData ) */ + errn = _exiEncodeStartElement(stream, 9, 183, state, qnameID, 774, 295); + break; + case 99: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKISexp ) */ + errn = _exiEncodeStartElement(stream, 9, 184, state, qnameID, 774, 289); + break; + case 375: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariff ) */ + errn = _exiEncodeStartElement(stream, 9, 185, state, qnameID, 774, 169); + break; + case 376: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription ) */ + errn = _exiEncodeStartElement(stream, 9, 186, state, qnameID, 774, 118); + break; + case 377: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry ) */ + errn = _exiEncodeStartElement(stream, 9, 187, state, qnameID, 774, 176); + break; + case 379: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID ) */ + errn = _exiEncodeStartElement(stream, 9, 188, state, qnameID, 774, 155); + break; + case 100: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Seed ) */ + errn = _exiEncodeStartElement(stream, 9, 189, state, qnameID, 774, 37); + break; + case 225: + /* SE( {urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption ) */ + errn = _exiEncodeStartElement(stream, 9, 190, state, qnameID, 774, 332); + break; + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 9, 191, state, qnameID, 774, 336); + break; + case 226: + /* SE( {urn:iso:15118:2:2013:MsgBody}SelectedServiceList ) */ + errn = _exiEncodeStartElement(stream, 9, 192, state, qnameID, 774, 335); + break; + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 9, 193, state, qnameID, 774, 714); + break; + case 227: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 9, 194, state, qnameID, 774, 689); + break; + case 385: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 9, 195, state, qnameID, 774, 689); + break; + case 228: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailReq ) */ + errn = _exiEncodeStartElement(stream, 9, 196, state, qnameID, 774, 402); + break; + case 230: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailRes ) */ + errn = _exiEncodeStartElement(stream, 9, 197, state, qnameID, 774, 404); + break; + case 232: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 9, 198, state, qnameID, 774, 687); + break; + case 234: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 9, 199, state, qnameID, 774, 692); + break; + case 236: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 9, 200, state, qnameID, 774, 161); + break; + case 386: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 9, 201, state, qnameID, 774, 161); + break; + case 237: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceList ) */ + errn = _exiEncodeStartElement(stream, 9, 202, state, qnameID, 774, 713); + break; + case 388: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceName ) */ + errn = _exiEncodeStartElement(stream, 9, 203, state, qnameID, 774, 118); + break; + case 238: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceParameterList ) */ + errn = _exiEncodeStartElement(stream, 9, 204, state, qnameID, 774, 407); + break; + case 239: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceScope ) */ + errn = _exiEncodeStartElement(stream, 9, 205, state, qnameID, 774, 118); + break; + case 390: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceScope ) */ + errn = _exiEncodeStartElement(stream, 9, 206, state, qnameID, 774, 118); + break; + case 240: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionID ) */ + errn = _exiEncodeStartElement(stream, 9, 207, state, qnameID, 774, 313); + break; + case 447: + /* SE( {urn:iso:15118:2:2013:MsgHeader}SessionID ) */ + errn = _exiEncodeStartElement(stream, 9, 208, state, qnameID, 774, 313); + break; + case 241: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupReq ) */ + errn = _exiEncodeStartElement(stream, 9, 209, state, qnameID, 774, 729); + break; + case 243: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupRes ) */ + errn = _exiEncodeStartElement(stream, 9, 210, state, qnameID, 774, 731); + break; + case 245: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopReq ) */ + errn = _exiEncodeStartElement(stream, 9, 211, state, qnameID, 774, 735); + break; + case 247: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopRes ) */ + errn = _exiEncodeStartElement(stream, 9, 212, state, qnameID, 774, 356); + break; + case 392: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading ) */ + errn = _exiEncodeStartElement(stream, 9, 213, state, qnameID, 774, 37); + break; + case 101: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Signature ) */ + errn = _exiEncodeStartElement(stream, 9, 214, state, qnameID, 774, 737); + break; + case 102: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureMethod ) */ + errn = _exiEncodeStartElement(stream, 9, 215, state, qnameID, 774, 742); + break; + case 104: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperties ) */ + errn = _exiEncodeStartElement(stream, 9, 216, state, qnameID, 774, 751); + break; + case 106: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperty ) */ + errn = _exiEncodeStartElement(stream, 9, 217, state, qnameID, 774, 753); + break; + case 109: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureValue ) */ + errn = _exiEncodeStartElement(stream, 9, 218, state, qnameID, 774, 747); + break; + case 111: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignedInfo ) */ + errn = _exiEncodeStartElement(stream, 9, 219, state, qnameID, 774, 739); + break; + case 393: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SubCertificates ) */ + errn = _exiEncodeStartElement(stream, 9, 220, state, qnameID, 774, 104); + break; + case 395: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 9, 221, state, qnameID, 774, 704); + break; + case 397: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TMeter ) */ + errn = _exiEncodeStartElement(stream, 9, 222, state, qnameID, 774, 15); + break; + case 398: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval ) */ + errn = _exiEncodeStartElement(stream, 9, 223, state, qnameID, 774, 45); + break; + case 113: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transform ) */ + errn = _exiEncodeStartElement(stream, 9, 224, state, qnameID, 774, 281); + break; + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 9, 225, state, qnameID, 774, 280); + break; + case 399: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Unit ) */ + errn = _exiEncodeStartElement(stream, 9, 226, state, qnameID, 774, 12); + break; + case 444: + /* SE( {urn:iso:15118:2:2013:MsgDef}V2G_Message ) */ + errn = _exiEncodeStartElement(stream, 9, 227, state, qnameID, 774, 759); + break; + case 400: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Value ) */ + errn = _exiEncodeStartElement(stream, 9, 228, state, qnameID, 774, 15); + break; + case 249: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq ) */ + errn = _exiEncodeStartElement(stream, 9, 229, state, qnameID, 774, 46); + break; + case 251: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes ) */ + errn = _exiEncodeStartElement(stream, 9, 230, state, qnameID, 774, 398); + break; + case 117: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509CRL ) */ + errn = _exiEncodeStartElement(stream, 9, 231, state, qnameID, 774, 289); + break; + case 118: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Certificate ) */ + errn = _exiEncodeStartElement(stream, 9, 232, state, qnameID, 774, 289); + break; + case 119: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Data ) */ + errn = _exiEncodeStartElement(stream, 9, 233, state, qnameID, 774, 287); + break; + case 121: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509IssuerName ) */ + errn = _exiEncodeStartElement(stream, 9, 234, state, qnameID, 774, 74); + break; + case 122: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial ) */ + errn = _exiEncodeStartElement(stream, 9, 235, state, qnameID, 774, 73); + break; + case 124: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SKI ) */ + errn = _exiEncodeStartElement(stream, 9, 236, state, qnameID, 774, 289); + break; + case 125: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SerialNumber ) */ + errn = _exiEncodeStartElement(stream, 9, 237, state, qnameID, 774, 15); + break; + case 126: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SubjectName ) */ + errn = _exiEncodeStartElement(stream, 9, 238, state, qnameID, 774, 74); + break; + case 127: + /* SE( {http://www.w3.org/2000/09/xmldsig#}XPath ) */ + errn = _exiEncodeStartElement(stream, 9, 239, state, qnameID, 774, 74); + break; + case 128: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Y ) */ + errn = _exiEncodeStartElement(stream, 9, 240, state, qnameID, 774, 37); + break; + case 401: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}amount ) */ + errn = _exiEncodeStartElement(stream, 9, 241, state, qnameID, 774, 3); + break; + case 402: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier ) */ + errn = _exiEncodeStartElement(stream, 9, 242, state, qnameID, 774, 9); + break; + case 403: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}boolValue ) */ + errn = _exiEncodeStartElement(stream, 9, 243, state, qnameID, 774, 29); + break; + case 404: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}byteValue ) */ + errn = _exiEncodeStartElement(stream, 9, 244, state, qnameID, 774, 412); + break; + case 408: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}costKind ) */ + errn = _exiEncodeStartElement(stream, 9, 245, state, qnameID, 774, 26); + break; + case 411: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}duration ) */ + errn = _exiEncodeStartElement(stream, 9, 246, state, qnameID, 774, 161); + break; + case 253: + /* SE( {urn:iso:15118:2:2013:MsgBody}eMAID ) */ + errn = _exiEncodeStartElement(stream, 9, 247, state, qnameID, 774, 773); + break; + case 418: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}intValue ) */ + errn = _exiEncodeStartElement(stream, 9, 248, state, qnameID, 774, 15); + break; + case 425: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}physicalValue ) */ + errn = _exiEncodeStartElement(stream, 9, 249, state, qnameID, 774, 8); + break; + case 433: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}shortValue ) */ + errn = _exiEncodeStartElement(stream, 9, 250, state, qnameID, 774, 15); + break; + case 435: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}start ) */ + errn = _exiEncodeStartElement(stream, 9, 251, state, qnameID, 774, 161); + break; + case 436: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}startValue ) */ + errn = _exiEncodeStartElement(stream, 9, 252, state, qnameID, 774, 8); + break; + case 437: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}stringValue ) */ + errn = _exiEncodeStartElement(stream, 9, 253, state, qnameID, 774, 74); + break; + } + break; + case 774: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 254: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 0, state, qnameID, 774, 2); + break; + case 256: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 1, state, qnameID, 774, 23); + break; + case 129: + /* SE( {urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 2, state, qnameID, 774, 24); + break; + case 258: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 3, state, qnameID, 774, 24); + break; + case 130: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationReq ) */ + errn = _exiEncodeStartElement(stream, 8, 4, state, qnameID, 774, 35); + break; + case 132: + /* SE( {urn:iso:15118:2:2013:MsgBody}AuthorizationRes ) */ + errn = _exiEncodeStartElement(stream, 8, 5, state, qnameID, 774, 40); + break; + case 442: + /* SE( {urn:iso:15118:2:2013:MsgDef}Body ) */ + errn = _exiEncodeStartElement(stream, 8, 6, state, qnameID, 774, 768); + break; + case 135: + /* SE( {urn:iso:15118:2:2013:MsgBody}BodyElement ) */ + errn = _exiEncodeStartElement(stream, 8, 7, state, qnameID, 774, 45); + break; + case 137: + /* SE( {urn:iso:15118:2:2013:MsgBody}BulkChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 8, 8, state, qnameID, 774, 29); + break; + case 260: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 8, 9, state, qnameID, 774, 29); + break; + case 261: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}BulkSOC ) */ + errn = _exiEncodeStartElement(stream, 8, 10, state, qnameID, 774, 52); + break; + case 138: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckReq ) */ + errn = _exiEncodeStartElement(stream, 8, 11, state, qnameID, 774, 46); + break; + case 140: + /* SE( {urn:iso:15118:2:2013:MsgBody}CableCheckRes ) */ + errn = _exiEncodeStartElement(stream, 8, 12, state, qnameID, 774, 56); + break; + case 59: + /* SE( {http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod ) */ + errn = _exiEncodeStartElement(stream, 8, 13, state, qnameID, 774, 66); + break; + case 262: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Certificate ) */ + errn = _exiEncodeStartElement(stream, 8, 14, state, qnameID, 774, 37); + break; + case 142: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq ) */ + errn = _exiEncodeStartElement(stream, 8, 15, state, qnameID, 774, 69); + break; + case 144: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes ) */ + errn = _exiEncodeStartElement(stream, 8, 16, state, qnameID, 774, 99); + break; + case 146: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq ) */ + errn = _exiEncodeStartElement(stream, 8, 17, state, qnameID, 774, 120); + break; + case 148: + /* SE( {urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes ) */ + errn = _exiEncodeStartElement(stream, 8, 18, state, qnameID, 774, 124); + break; + case 150: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 8, 19, state, qnameID, 774, 132); + break; + case 152: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 8, 20, state, qnameID, 774, 150); + break; + case 154: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeProgress ) */ + errn = _exiEncodeStartElement(stream, 8, 21, state, qnameID, 774, 26); + break; + case 155: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargeService ) */ + errn = _exiEncodeStartElement(stream, 8, 22, state, qnameID, 774, 698); + break; + case 156: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 8, 23, state, qnameID, 774, 29); + break; + case 265: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete ) */ + errn = _exiEncodeStartElement(stream, 8, 24, state, qnameID, 774, 29); + break; + case 157: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingProfile ) */ + errn = _exiEncodeStartElement(stream, 8, 25, state, qnameID, 774, 361); + break; + case 266: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse ) */ + errn = _exiEncodeStartElement(stream, 8, 26, state, qnameID, 774, 365); + break; + case 267: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower ) */ + errn = _exiEncodeStartElement(stream, 8, 27, state, qnameID, 774, 8); + break; + case 268: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart ) */ + errn = _exiEncodeStartElement(stream, 8, 28, state, qnameID, 774, 3); + break; + case 158: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingSession ) */ + errn = _exiEncodeStartElement(stream, 8, 29, state, qnameID, 774, 332); + break; + case 159: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusReq ) */ + errn = _exiEncodeStartElement(stream, 8, 30, state, qnameID, 774, 209); + break; + case 161: + /* SE( {urn:iso:15118:2:2013:MsgBody}ChargingStatusRes ) */ + errn = _exiEncodeStartElement(stream, 8, 31, state, qnameID, 774, 210); + break; + case 270: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost ) */ + errn = _exiEncodeStartElement(stream, 8, 32, state, qnameID, 774, 179); + break; + case 163: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain ) */ + errn = _exiEncodeStartElement(stream, 8, 33, state, qnameID, 774, 101); + break; + case 164: + /* SE( {urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey ) */ + errn = _exiEncodeStartElement(stream, 8, 34, state, qnameID, 774, 112); + break; + case 273: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Cost ) */ + errn = _exiEncodeStartElement(stream, 8, 35, state, qnameID, 774, 181); + break; + case 165: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandReq ) */ + errn = _exiEncodeStartElement(stream, 8, 36, state, qnameID, 774, 225); + break; + case 167: + /* SE( {urn:iso:15118:2:2013:MsgBody}CurrentDemandRes ) */ + errn = _exiEncodeStartElement(stream, 8, 37, state, qnameID, 774, 236); + break; + case 275: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 38, state, qnameID, 774, 137); + break; + case 278: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 39, state, qnameID, 774, 251); + break; + case 280: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 40, state, qnameID, 774, 198); + break; + case 169: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 41, state, qnameID, 774, 58); + break; + case 282: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 42, state, qnameID, 774, 58); + break; + case 170: + /* SE( {urn:iso:15118:2:2013:MsgBody}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 43, state, qnameID, 774, 47); + break; + case 285: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 44, state, qnameID, 774, 47); + break; + case 171: + /* SE( {urn:iso:15118:2:2013:MsgBody}DHpublickey ) */ + errn = _exiEncodeStartElement(stream, 8, 45, state, qnameID, 774, 112); + break; + case 62: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 8, 46, state, qnameID, 774, 255); + break; + case 287: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DepartureTime ) */ + errn = _exiEncodeStartElement(stream, 8, 47, state, qnameID, 774, 3); + break; + case 64: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestMethod ) */ + errn = _exiEncodeStartElement(stream, 8, 48, state, qnameID, 774, 66); + break; + case 66: + /* SE( {http://www.w3.org/2000/09/xmldsig#}DigestValue ) */ + errn = _exiEncodeStartElement(stream, 8, 49, state, qnameID, 774, 37); + break; + case 289: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EAmount ) */ + errn = _exiEncodeStartElement(stream, 8, 50, state, qnameID, 774, 8); + break; + case 291: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel ) */ + errn = _exiEncodeStartElement(stream, 8, 51, state, qnameID, 774, 173); + break; + case 172: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVCCID ) */ + errn = _exiEncodeStartElement(stream, 8, 52, state, qnameID, 774, 313); + break; + case 292: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 53, state, qnameID, 774, 147); + break; + case 294: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity ) */ + errn = _exiEncodeStartElement(stream, 8, 54, state, qnameID, 774, 8); + break; + case 295: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest ) */ + errn = _exiEncodeStartElement(stream, 8, 55, state, qnameID, 774, 8); + break; + case 296: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode ) */ + errn = _exiEncodeStartElement(stream, 8, 56, state, qnameID, 774, 49); + break; + case 297: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 57, state, qnameID, 774, 8); + break; + case 298: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage ) */ + errn = _exiEncodeStartElement(stream, 8, 58, state, qnameID, 774, 8); + break; + case 173: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 59, state, qnameID, 774, 8); + break; + case 299: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 60, state, qnameID, 774, 8); + break; + case 174: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 61, state, qnameID, 774, 8); + break; + case 300: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 62, state, qnameID, 774, 8); + break; + case 175: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 63, state, qnameID, 774, 8); + break; + case 301: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 64, state, qnameID, 774, 8); + break; + case 302: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 65, state, qnameID, 774, 8); + break; + case 303: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 66, state, qnameID, 774, 45); + break; + case 305: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC ) */ + errn = _exiEncodeStartElement(stream, 8, 67, state, qnameID, 774, 52); + break; + case 306: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVReady ) */ + errn = _exiEncodeStartElement(stream, 8, 68, state, qnameID, 774, 29); + break; + case 307: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter ) */ + errn = _exiEncodeStartElement(stream, 8, 69, state, qnameID, 774, 45); + break; + case 176: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 8, 70, state, qnameID, 774, 29); + break; + case 309: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance ) */ + errn = _exiEncodeStartElement(stream, 8, 71, state, qnameID, 774, 8); + break; + case 310: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered ) */ + errn = _exiEncodeStartElement(stream, 8, 72, state, qnameID, 774, 8); + break; + case 177: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEID ) */ + errn = _exiEncodeStartElement(stream, 8, 73, state, qnameID, 774, 118); + break; + case 311: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 74, state, qnameID, 774, 61); + break; + case 178: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 75, state, qnameID, 774, 8); + break; + case 312: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 76, state, qnameID, 774, 8); + break; + case 179: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 77, state, qnameID, 774, 8); + break; + case 313: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 78, state, qnameID, 774, 8); + break; + case 180: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 79, state, qnameID, 774, 8); + break; + case 314: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 80, state, qnameID, 774, 8); + break; + case 181: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 81, state, qnameID, 774, 8); + break; + case 315: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 82, state, qnameID, 774, 8); + break; + case 316: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 83, state, qnameID, 774, 8); + break; + case 317: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit ) */ + errn = _exiEncodeStartElement(stream, 8, 84, state, qnameID, 774, 8); + break; + case 318: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage ) */ + errn = _exiEncodeStartElement(stream, 8, 85, state, qnameID, 774, 8); + break; + case 319: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSENotification ) */ + errn = _exiEncodeStartElement(stream, 8, 86, state, qnameID, 774, 26); + break; + case 321: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple ) */ + errn = _exiEncodeStartElement(stream, 8, 87, state, qnameID, 774, 8); + break; + case 182: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 8, 88, state, qnameID, 774, 29); + break; + case 183: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 89, state, qnameID, 774, 8); + break; + case 184: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage ) */ + errn = _exiEncodeStartElement(stream, 8, 90, state, qnameID, 774, 8); + break; + case 185: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEProcessing ) */ + errn = _exiEncodeStartElement(stream, 8, 91, state, qnameID, 774, 26); + break; + case 323: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 92, state, qnameID, 774, 263); + break; + case 324: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode ) */ + errn = _exiEncodeStartElement(stream, 8, 93, state, qnameID, 774, 49); + break; + case 186: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSETimeStamp ) */ + errn = _exiEncodeStartElement(stream, 8, 94, state, qnameID, 774, 15); + break; + case 187: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved ) */ + errn = _exiEncodeStartElement(stream, 8, 95, state, qnameID, 774, 29); + break; + case 326: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EVStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 96, state, qnameID, 774, 45); + break; + case 188: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetCurrent ) */ + errn = _exiEncodeStartElement(stream, 8, 97, state, qnameID, 774, 8); + break; + case 189: + /* SE( {urn:iso:15118:2:2013:MsgBody}EVTargetVoltage ) */ + errn = _exiEncodeStartElement(stream, 8, 98, state, qnameID, 774, 8); + break; + case 328: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 8, 99, state, qnameID, 774, 134); + break; + case 330: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Entry ) */ + errn = _exiEncodeStartElement(stream, 8, 100, state, qnameID, 774, 266); + break; + case 68: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Exponent ) */ + errn = _exiEncodeStartElement(stream, 8, 101, state, qnameID, 774, 37); + break; + case 332: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FaultCode ) */ + errn = _exiEncodeStartElement(stream, 8, 102, state, qnameID, 774, 26); + break; + case 333: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FaultMsg ) */ + errn = _exiEncodeStartElement(stream, 8, 103, state, qnameID, 774, 118); + break; + case 334: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FreeService ) */ + errn = _exiEncodeStartElement(stream, 8, 104, state, qnameID, 774, 29); + break; + case 335: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}FullSOC ) */ + errn = _exiEncodeStartElement(stream, 8, 105, state, qnameID, 774, 52); + break; + case 69: + /* SE( {http://www.w3.org/2000/09/xmldsig#}G ) */ + errn = _exiEncodeStartElement(stream, 8, 106, state, qnameID, 774, 37); + break; + case 190: + /* SE( {urn:iso:15118:2:2013:MsgBody}GenChallenge ) */ + errn = _exiEncodeStartElement(stream, 8, 107, state, qnameID, 774, 37); + break; + case 70: + /* SE( {http://www.w3.org/2000/09/xmldsig#}HMACOutputLength ) */ + errn = _exiEncodeStartElement(stream, 8, 108, state, qnameID, 774, 219); + break; + case 443: + /* SE( {urn:iso:15118:2:2013:MsgDef}Header ) */ + errn = _exiEncodeStartElement(stream, 8, 109, state, qnameID, 774, 760); + break; + case 72: + /* SE( {http://www.w3.org/2000/09/xmldsig#}J ) */ + errn = _exiEncodeStartElement(stream, 8, 110, state, qnameID, 774, 37); + break; + case 73: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyInfo ) */ + errn = _exiEncodeStartElement(stream, 8, 111, state, qnameID, 774, 268); + break; + case 75: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyName ) */ + errn = _exiEncodeStartElement(stream, 8, 112, state, qnameID, 774, 74); + break; + case 76: + /* SE( {http://www.w3.org/2000/09/xmldsig#}KeyValue ) */ + errn = _exiEncodeStartElement(stream, 8, 113, state, qnameID, 774, 271); + break; + case 192: + /* SE( {urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs ) */ + errn = _exiEncodeStartElement(stream, 8, 114, state, qnameID, 774, 72); + break; + case 78: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Manifest ) */ + errn = _exiEncodeStartElement(stream, 8, 115, state, qnameID, 774, 300); + break; + case 193: + /* SE( {urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 8, 116, state, qnameID, 774, 3); + break; + case 339: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterID ) */ + errn = _exiEncodeStartElement(stream, 8, 117, state, qnameID, 774, 118); + break; + case 194: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeterInfo ) */ + errn = _exiEncodeStartElement(stream, 8, 118, state, qnameID, 774, 215); + break; + case 341: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterReading ) */ + errn = _exiEncodeStartElement(stream, 8, 119, state, qnameID, 774, 3); + break; + case 342: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}MeterStatus ) */ + errn = _exiEncodeStartElement(stream, 8, 120, state, qnameID, 774, 219); + break; + case 195: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq ) */ + errn = _exiEncodeStartElement(stream, 8, 121, state, qnameID, 774, 311); + break; + case 197: + /* SE( {urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes ) */ + errn = _exiEncodeStartElement(stream, 8, 122, state, qnameID, 774, 318); + break; + case 80: + /* SE( {http://www.w3.org/2000/09/xmldsig#}MgmtData ) */ + errn = _exiEncodeStartElement(stream, 8, 123, state, qnameID, 774, 74); + break; + case 81: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Modulus ) */ + errn = _exiEncodeStartElement(stream, 8, 124, state, qnameID, 774, 37); + break; + case 343: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Multiplier ) */ + errn = _exiEncodeStartElement(stream, 8, 125, state, qnameID, 774, 9); + break; + case 446: + /* SE( {urn:iso:15118:2:2013:MsgHeader}Notification ) */ + errn = _exiEncodeStartElement(stream, 8, 126, state, qnameID, 774, 762); + break; + case 345: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay ) */ + errn = _exiEncodeStartElement(stream, 8, 127, state, qnameID, 774, 3); + break; + case 347: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels ) */ + errn = _exiEncodeStartElement(stream, 8, 128, state, qnameID, 774, 173); + break; + case 199: + /* SE( {urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert ) */ + errn = _exiEncodeStartElement(stream, 8, 129, state, qnameID, 774, 37); + break; + case 82: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Object ) */ + errn = _exiEncodeStartElement(stream, 8, 130, state, qnameID, 774, 321); + break; + case 84: + /* SE( {http://www.w3.org/2000/09/xmldsig#}P ) */ + errn = _exiEncodeStartElement(stream, 8, 131, state, qnameID, 774, 37); + break; + case 85: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPData ) */ + errn = _exiEncodeStartElement(stream, 8, 132, state, qnameID, 774, 291); + break; + case 87: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPKeyID ) */ + errn = _exiEncodeStartElement(stream, 8, 133, state, qnameID, 774, 289); + break; + case 88: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket ) */ + errn = _exiEncodeStartElement(stream, 8, 134, state, qnameID, 774, 289); + break; + case 348: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMax ) */ + errn = _exiEncodeStartElement(stream, 8, 135, state, qnameID, 774, 8); + break; + case 349: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule ) */ + errn = _exiEncodeStartElement(stream, 8, 136, state, qnameID, 774, 158); + break; + case 350: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry ) */ + errn = _exiEncodeStartElement(stream, 8, 137, state, qnameID, 774, 159); + break; + case 353: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Parameter ) */ + errn = _exiEncodeStartElement(stream, 8, 138, state, qnameID, 774, 410); + break; + case 354: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet ) */ + errn = _exiEncodeStartElement(stream, 8, 139, state, qnameID, 774, 408); + break; + case 355: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID ) */ + errn = _exiEncodeStartElement(stream, 8, 140, state, qnameID, 774, 15); + break; + case 200: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq ) */ + errn = _exiEncodeStartElement(stream, 8, 141, state, qnameID, 774, 324); + break; + case 202: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes ) */ + errn = _exiEncodeStartElement(stream, 8, 142, state, qnameID, 774, 327); + break; + case 358: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}PaymentOption ) */ + errn = _exiEncodeStartElement(stream, 8, 143, state, qnameID, 774, 332); + break; + case 204: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentOptionList ) */ + errn = _exiEncodeStartElement(stream, 8, 144, state, qnameID, 774, 694); + break; + case 205: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq ) */ + errn = _exiEncodeStartElement(stream, 8, 145, state, qnameID, 774, 331); + break; + case 207: + /* SE( {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes ) */ + errn = _exiEncodeStartElement(stream, 8, 146, state, qnameID, 774, 356); + break; + case 89: + /* SE( {http://www.w3.org/2000/09/xmldsig#}PgenCounter ) */ + errn = _exiEncodeStartElement(stream, 8, 147, state, qnameID, 774, 37); + break; + case 209: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq ) */ + errn = _exiEncodeStartElement(stream, 8, 148, state, qnameID, 774, 358); + break; + case 211: + /* SE( {urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes ) */ + errn = _exiEncodeStartElement(stream, 8, 149, state, qnameID, 774, 318); + break; + case 213: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeReq ) */ + errn = _exiEncodeStartElement(stream, 8, 150, state, qnameID, 774, 394); + break; + case 215: + /* SE( {urn:iso:15118:2:2013:MsgBody}PreChargeRes ) */ + errn = _exiEncodeStartElement(stream, 8, 151, state, qnameID, 774, 398); + break; + case 361: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry ) */ + errn = _exiEncodeStartElement(stream, 8, 152, state, qnameID, 774, 362); + break; + case 90: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Q ) */ + errn = _exiEncodeStartElement(stream, 8, 153, state, qnameID, 774, 37); + break; + case 363: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RCD ) */ + errn = _exiEncodeStartElement(stream, 8, 154, state, qnameID, 774, 29); + break; + case 91: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RSAKeyValue ) */ + errn = _exiEncodeStartElement(stream, 8, 155, state, qnameID, 774, 273); + break; + case 217: + /* SE( {urn:iso:15118:2:2013:MsgBody}ReceiptRequired ) */ + errn = _exiEncodeStartElement(stream, 8, 156, state, qnameID, 774, 29); + break; + case 93: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Reference ) */ + errn = _exiEncodeStartElement(stream, 8, 157, state, qnameID, 774, 302); + break; + case 364: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval ) */ + errn = _exiEncodeStartElement(stream, 8, 158, state, qnameID, 774, 160); + break; + case 218: + /* SE( {urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC ) */ + errn = _exiEncodeStartElement(stream, 8, 159, state, qnameID, 774, 8); + break; + case 219: + /* SE( {urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC ) */ + errn = _exiEncodeStartElement(stream, 8, 160, state, qnameID, 774, 8); + break; + case 220: + /* SE( {urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 8, 161, state, qnameID, 774, 134); + break; + case 221: + /* SE( {urn:iso:15118:2:2013:MsgBody}ResponseCode ) */ + errn = _exiEncodeStartElement(stream, 8, 162, state, qnameID, 774, 41); + break; + case 95: + /* SE( {http://www.w3.org/2000/09/xmldsig#}RetrievalMethod ) */ + errn = _exiEncodeStartElement(stream, 8, 163, state, qnameID, 774, 277); + break; + case 222: + /* SE( {urn:iso:15118:2:2013:MsgBody}RetryCounter ) */ + errn = _exiEncodeStartElement(stream, 8, 164, state, qnameID, 774, 15); + break; + case 366: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID ) */ + errn = _exiEncodeStartElement(stream, 8, 165, state, qnameID, 774, 73); + break; + case 223: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain ) */ + errn = _exiEncodeStartElement(stream, 8, 166, state, qnameID, 774, 101); + break; + case 368: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList ) */ + errn = _exiEncodeStartElement(stream, 8, 167, state, qnameID, 774, 153); + break; + case 370: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple ) */ + errn = _exiEncodeStartElement(stream, 8, 168, state, qnameID, 774, 154); + break; + case 224: + /* SE( {urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 8, 169, state, qnameID, 774, 155); + break; + case 371: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID ) */ + errn = _exiEncodeStartElement(stream, 8, 170, state, qnameID, 774, 155); + break; + case 373: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SASchedules ) */ + errn = _exiEncodeStartElement(stream, 8, 171, state, qnameID, 774, 45); + break; + case 97: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKIData ) */ + errn = _exiEncodeStartElement(stream, 8, 172, state, qnameID, 774, 295); + break; + case 99: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SPKISexp ) */ + errn = _exiEncodeStartElement(stream, 8, 173, state, qnameID, 774, 289); + break; + case 375: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariff ) */ + errn = _exiEncodeStartElement(stream, 8, 174, state, qnameID, 774, 169); + break; + case 376: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription ) */ + errn = _exiEncodeStartElement(stream, 8, 175, state, qnameID, 774, 118); + break; + case 377: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry ) */ + errn = _exiEncodeStartElement(stream, 8, 176, state, qnameID, 774, 176); + break; + case 379: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID ) */ + errn = _exiEncodeStartElement(stream, 8, 177, state, qnameID, 774, 155); + break; + case 100: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Seed ) */ + errn = _exiEncodeStartElement(stream, 8, 178, state, qnameID, 774, 37); + break; + case 225: + /* SE( {urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption ) */ + errn = _exiEncodeStartElement(stream, 8, 179, state, qnameID, 774, 332); + break; + case 381: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SelectedService ) */ + errn = _exiEncodeStartElement(stream, 8, 180, state, qnameID, 774, 336); + break; + case 226: + /* SE( {urn:iso:15118:2:2013:MsgBody}SelectedServiceList ) */ + errn = _exiEncodeStartElement(stream, 8, 181, state, qnameID, 774, 335); + break; + case 384: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Service ) */ + errn = _exiEncodeStartElement(stream, 8, 182, state, qnameID, 774, 714); + break; + case 227: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 8, 183, state, qnameID, 774, 689); + break; + case 385: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory ) */ + errn = _exiEncodeStartElement(stream, 8, 184, state, qnameID, 774, 689); + break; + case 228: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailReq ) */ + errn = _exiEncodeStartElement(stream, 8, 185, state, qnameID, 774, 402); + break; + case 230: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDetailRes ) */ + errn = _exiEncodeStartElement(stream, 8, 186, state, qnameID, 774, 404); + break; + case 232: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq ) */ + errn = _exiEncodeStartElement(stream, 8, 187, state, qnameID, 774, 687); + break; + case 234: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes ) */ + errn = _exiEncodeStartElement(stream, 8, 188, state, qnameID, 774, 692); + break; + case 236: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 8, 189, state, qnameID, 774, 161); + break; + case 386: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 8, 190, state, qnameID, 774, 161); + break; + case 237: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceList ) */ + errn = _exiEncodeStartElement(stream, 8, 191, state, qnameID, 774, 713); + break; + case 388: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceName ) */ + errn = _exiEncodeStartElement(stream, 8, 192, state, qnameID, 774, 118); + break; + case 238: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceParameterList ) */ + errn = _exiEncodeStartElement(stream, 8, 193, state, qnameID, 774, 407); + break; + case 239: + /* SE( {urn:iso:15118:2:2013:MsgBody}ServiceScope ) */ + errn = _exiEncodeStartElement(stream, 8, 194, state, qnameID, 774, 118); + break; + case 390: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceScope ) */ + errn = _exiEncodeStartElement(stream, 8, 195, state, qnameID, 774, 118); + break; + case 240: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionID ) */ + errn = _exiEncodeStartElement(stream, 8, 196, state, qnameID, 774, 313); + break; + case 447: + /* SE( {urn:iso:15118:2:2013:MsgHeader}SessionID ) */ + errn = _exiEncodeStartElement(stream, 8, 197, state, qnameID, 774, 313); + break; + case 241: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupReq ) */ + errn = _exiEncodeStartElement(stream, 8, 198, state, qnameID, 774, 729); + break; + case 243: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionSetupRes ) */ + errn = _exiEncodeStartElement(stream, 8, 199, state, qnameID, 774, 731); + break; + case 245: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopReq ) */ + errn = _exiEncodeStartElement(stream, 8, 200, state, qnameID, 774, 735); + break; + case 247: + /* SE( {urn:iso:15118:2:2013:MsgBody}SessionStopRes ) */ + errn = _exiEncodeStartElement(stream, 8, 201, state, qnameID, 774, 356); + break; + case 392: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading ) */ + errn = _exiEncodeStartElement(stream, 8, 202, state, qnameID, 774, 37); + break; + case 101: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Signature ) */ + errn = _exiEncodeStartElement(stream, 8, 203, state, qnameID, 774, 737); + break; + case 102: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureMethod ) */ + errn = _exiEncodeStartElement(stream, 8, 204, state, qnameID, 774, 742); + break; + case 104: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperties ) */ + errn = _exiEncodeStartElement(stream, 8, 205, state, qnameID, 774, 751); + break; + case 106: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureProperty ) */ + errn = _exiEncodeStartElement(stream, 8, 206, state, qnameID, 774, 753); + break; + case 109: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignatureValue ) */ + errn = _exiEncodeStartElement(stream, 8, 207, state, qnameID, 774, 747); + break; + case 111: + /* SE( {http://www.w3.org/2000/09/xmldsig#}SignedInfo ) */ + errn = _exiEncodeStartElement(stream, 8, 208, state, qnameID, 774, 739); + break; + case 393: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SubCertificates ) */ + errn = _exiEncodeStartElement(stream, 8, 209, state, qnameID, 774, 104); + break; + case 395: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode ) */ + errn = _exiEncodeStartElement(stream, 8, 210, state, qnameID, 774, 704); + break; + case 397: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TMeter ) */ + errn = _exiEncodeStartElement(stream, 8, 211, state, qnameID, 774, 15); + break; + case 398: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval ) */ + errn = _exiEncodeStartElement(stream, 8, 212, state, qnameID, 774, 45); + break; + case 113: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transform ) */ + errn = _exiEncodeStartElement(stream, 8, 213, state, qnameID, 774, 281); + break; + case 115: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Transforms ) */ + errn = _exiEncodeStartElement(stream, 8, 214, state, qnameID, 774, 280); + break; + case 399: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Unit ) */ + errn = _exiEncodeStartElement(stream, 8, 215, state, qnameID, 774, 12); + break; + case 444: + /* SE( {urn:iso:15118:2:2013:MsgDef}V2G_Message ) */ + errn = _exiEncodeStartElement(stream, 8, 216, state, qnameID, 774, 759); + break; + case 400: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}Value ) */ + errn = _exiEncodeStartElement(stream, 8, 217, state, qnameID, 774, 15); + break; + case 249: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq ) */ + errn = _exiEncodeStartElement(stream, 8, 218, state, qnameID, 774, 46); + break; + case 251: + /* SE( {urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes ) */ + errn = _exiEncodeStartElement(stream, 8, 219, state, qnameID, 774, 398); + break; + case 117: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509CRL ) */ + errn = _exiEncodeStartElement(stream, 8, 220, state, qnameID, 774, 289); + break; + case 118: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Certificate ) */ + errn = _exiEncodeStartElement(stream, 8, 221, state, qnameID, 774, 289); + break; + case 119: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509Data ) */ + errn = _exiEncodeStartElement(stream, 8, 222, state, qnameID, 774, 287); + break; + case 121: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509IssuerName ) */ + errn = _exiEncodeStartElement(stream, 8, 223, state, qnameID, 774, 74); + break; + case 122: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial ) */ + errn = _exiEncodeStartElement(stream, 8, 224, state, qnameID, 774, 73); + break; + case 124: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SKI ) */ + errn = _exiEncodeStartElement(stream, 8, 225, state, qnameID, 774, 289); + break; + case 125: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SerialNumber ) */ + errn = _exiEncodeStartElement(stream, 8, 226, state, qnameID, 774, 15); + break; + case 126: + /* SE( {http://www.w3.org/2000/09/xmldsig#}X509SubjectName ) */ + errn = _exiEncodeStartElement(stream, 8, 227, state, qnameID, 774, 74); + break; + case 127: + /* SE( {http://www.w3.org/2000/09/xmldsig#}XPath ) */ + errn = _exiEncodeStartElement(stream, 8, 228, state, qnameID, 774, 74); + break; + case 128: + /* SE( {http://www.w3.org/2000/09/xmldsig#}Y ) */ + errn = _exiEncodeStartElement(stream, 8, 229, state, qnameID, 774, 37); + break; + case 401: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}amount ) */ + errn = _exiEncodeStartElement(stream, 8, 230, state, qnameID, 774, 3); + break; + case 402: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier ) */ + errn = _exiEncodeStartElement(stream, 8, 231, state, qnameID, 774, 9); + break; + case 403: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}boolValue ) */ + errn = _exiEncodeStartElement(stream, 8, 232, state, qnameID, 774, 29); + break; + case 404: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}byteValue ) */ + errn = _exiEncodeStartElement(stream, 8, 233, state, qnameID, 774, 412); + break; + case 408: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}costKind ) */ + errn = _exiEncodeStartElement(stream, 8, 234, state, qnameID, 774, 26); + break; + case 411: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}duration ) */ + errn = _exiEncodeStartElement(stream, 8, 235, state, qnameID, 774, 161); + break; + case 253: + /* SE( {urn:iso:15118:2:2013:MsgBody}eMAID ) */ + errn = _exiEncodeStartElement(stream, 8, 236, state, qnameID, 774, 773); + break; + case 418: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}intValue ) */ + errn = _exiEncodeStartElement(stream, 8, 237, state, qnameID, 774, 15); + break; + case 425: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}physicalValue ) */ + errn = _exiEncodeStartElement(stream, 8, 238, state, qnameID, 774, 8); + break; + case 433: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}shortValue ) */ + errn = _exiEncodeStartElement(stream, 8, 239, state, qnameID, 774, 15); + break; + case 435: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}start ) */ + errn = _exiEncodeStartElement(stream, 8, 240, state, qnameID, 774, 161); + break; + case 436: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}startValue ) */ + errn = _exiEncodeStartElement(stream, 8, 241, state, qnameID, 774, 8); + break; + case 437: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}stringValue ) */ + errn = _exiEncodeStartElement(stream, 8, 242, state, qnameID, 774, 74); + break; + } + break; + case 801: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + switch(qnameID) { + case 287: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}DepartureTime ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 3); + break; + } + break; + case 802: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + switch(qnameID) { + case 345: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 264, 3); + break; + } + break; + case 803: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + switch(qnameID) { + case 364: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 0, state, qnameID, 4, 160); + break; + case 398: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval ) */ + errn = _exiEncodeStartElement(stream, 2, 1, state, qnameID, 4, 45); + break; + } + break; + case 804: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + switch(qnameID) { + case 386: + /* SE( {urn:iso:15118:2:2013:MsgDataTypes}ServiceID ) */ + errn = _exiEncodeStartElement(stream, 1, 0, state, qnameID, 715, 161); + break; + } + break; + + default: + /* element qname not expected */ + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + } + + return (errn); +} + + + +int exiv2gEncodeStartElementNS(bitstream_t* stream, + exi_state_t* state, uint16_t namespaceUriID, + exi_string_ucs_t* localName) { + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; +} + + +int exiv2gEncodeStartElementGeneric(bitstream_t* stream, + exi_state_t* state, exi_string_ucs_t* namespaceUri, + exi_string_ucs_t* localName) { + + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + + errn = EXI_ERROR_UNEXPECTED_START_ELEMENT_GENERIC; + + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + return (errn); +} + + + +int exiv2gEncodeEndElement(bitstream_t* stream, exi_state_t* state) { + int16_t currentID = state->grammarStack[state->stackIndex]; + switch (currentID) { + case 774: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 8, 244); + break; + case 288: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] */ + errn = encodeNBitUnsignedInteger(stream, 3, 6); + break; + case 282: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 283: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 323: + /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 743: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 744: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 778: + /* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 3, 2); + break; + case 36: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + case 39: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + case 67: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 68: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 78: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 79: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 80: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 81: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 82: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 83: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 84: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 85: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 86: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 87: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 88: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 89: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 90: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 91: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 92: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 93: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 94: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 95: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 96: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + case 103: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), END_ELEMENT] */ + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 107: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), END_ELEMENT] */ + case 145: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 147: + /* First(xsi:type)StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), END_ELEMENT] */ + case 166: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] */ + case 168: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), END_ELEMENT] */ + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 183: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), END_ELEMENT] */ + case 185: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 189: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 191: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), END_ELEMENT] */ + case 194: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + case 195: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + case 206: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] */ + case 220: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 249: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + case 260: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + case 279: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 284: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] */ + case 286: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 293: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT] */ + case 297: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */ + case 309: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */ + case 337: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), END_ELEMENT] */ + case 339: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 340: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 341: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 342: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 343: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 344: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 345: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 346: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 347: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 348: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 349: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 350: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 351: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 352: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 353: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + case 364: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), END_ELEMENT] */ + case 368: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 369: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 370: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 371: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 372: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 373: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 374: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 375: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 376: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 377: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 378: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 379: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 380: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 381: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 382: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 383: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 384: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 385: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 386: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 387: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 388: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 389: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 390: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + case 406: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), END_ELEMENT] */ + case 415: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 416: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 417: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 418: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 419: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 420: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 421: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 422: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 423: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 424: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 425: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 426: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 427: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 428: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 429: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + case 431: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 432: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 433: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 434: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 435: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 436: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 437: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 438: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 439: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 440: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 441: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 442: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 443: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 444: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 445: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 446: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 447: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 448: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 449: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 450: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 451: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 452: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 453: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 454: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 455: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 456: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 457: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 458: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 459: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 460: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 461: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 462: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 463: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 464: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 465: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 466: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 467: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 468: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 469: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 470: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 471: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 472: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 473: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 474: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 475: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 476: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 477: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 478: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 479: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 480: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 481: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 482: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 483: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 484: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 485: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 486: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 487: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 488: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 489: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 490: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 491: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 492: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 493: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 494: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 495: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 496: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 497: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 498: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 499: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 500: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 501: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 502: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 503: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 504: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 505: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 506: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 507: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 508: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 509: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 510: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 511: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 512: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 513: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 514: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 515: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 516: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 517: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 518: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 519: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 520: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 521: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 522: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 523: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 524: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 525: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 526: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 527: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 528: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 529: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 530: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 531: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 532: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 533: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 534: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 535: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 536: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 537: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 538: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 539: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 540: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 541: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 542: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 543: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 544: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 545: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 546: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 547: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 548: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 549: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 550: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 551: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 552: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 553: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 554: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 555: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 556: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 557: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 558: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 559: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 560: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 561: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 562: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 563: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 564: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 565: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 566: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 567: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 568: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 569: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 570: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 571: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 572: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 573: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 574: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 575: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 576: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 577: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 578: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 579: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 580: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 581: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 582: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 583: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 584: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 585: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 586: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 587: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 588: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 589: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 590: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 591: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 592: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 593: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 594: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 595: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 596: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 597: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 598: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 599: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 600: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 601: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 602: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 603: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 604: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 605: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 606: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 607: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 608: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 609: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 610: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 611: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 612: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 613: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 614: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 615: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 616: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 617: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 618: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 619: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 620: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 621: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 622: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 623: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 624: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 625: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 626: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 627: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 628: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 629: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 630: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 631: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 632: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 633: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 634: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 635: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 636: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 637: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 638: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 639: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 640: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 641: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 642: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 643: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 644: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 645: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 646: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 647: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 648: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 649: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 650: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 651: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 652: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 653: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 654: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 655: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 656: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 657: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 658: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 659: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 660: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 661: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 662: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 663: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 664: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 665: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 666: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 667: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 668: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 669: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 670: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 671: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 672: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 673: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 674: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 675: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 676: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 677: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 678: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 679: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 680: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 681: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 682: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 683: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 684: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + case 688: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + case 695: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), END_ELEMENT] */ + case 705: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 706: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 707: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 708: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 709: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + case 712: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), END_ELEMENT] */ + case 720: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 721: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 722: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 723: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 724: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 725: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 726: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + case 733: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), END_ELEMENT] */ + case 749: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + case 757: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] */ + case 763: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), END_ELEMENT] */ + case 765: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + case 801: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + errn = encodeNBitUnsignedInteger(stream, 2, 1); + break; + case 272: + /* Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 2, 0); + break; + case 270: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 4, 8); + break; + case 4: + /* Element[END_ELEMENT] */ + case 45: + /* First(xsi:type)StartTag[END_ELEMENT] */ + case 209: + /* FirstStartTag[END_ELEMENT] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + break; + case 773: + /* First(xsi:type)(xsi:nil)StartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 9, 255); + break; + case 768: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + case 769: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), END_ELEMENT] */ + errn = encodeNBitUnsignedInteger(stream, 6, 35); + break; + case 775: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, END_ELEMENT] */ + errn = encodeNBitUnsignedInteger(stream, 4, 11); + break; + case 143: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 217: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 277: + /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 322: + /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + case 360: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + errn = encodeNBitUnsignedInteger(stream, 3, 3); + break; + case 35: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + case 144: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 177: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + case 259: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + case 278: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + case 292: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] */ + case 296: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] */ + case 392: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + case 687: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + case 691: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + case 748: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + case 761: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + errn = encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 142: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + case 216: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + case 321: + /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 3, 4); + break; + + default: + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + } + + if (errn == 0) { + /* pop item */ + errn = exi_v2g_PopStack(state); + } + + return (errn); +} + + + +int exiv2gEncodeCharacters(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + int16_t moveOnID = 0; + int deviantChars = 0; + int16_t currentID = state->grammarStack[state->stackIndex]; + + errn = EXI_ERROR_UNEXPECTED_CHARACTERS; + + switch (currentID) { + case 42: + /* Element[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, val->enumeration); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 16: + /* Element[CHARACTERS[INTEGER]] */ + if (val->type == EXI_DATATYPE_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger(stream, &val->integer); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 744: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 744; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, 1); + deviantChars = 1; + } + } + break; + case 786: + /* FirstStartTag[CHARACTERS[FLOAT]] */ + if (val->type == EXI_DATATYPE_FLOAT) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeFloat(stream, &val->float_me); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 10: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 3, -3); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 747: + /* FirstStartTag[ATTRIBUTE[STRING](Id), CHARACTERS[BINARY_BASE64]] */ + if (val->type == EXI_DATATYPE_BINARY_BASE64) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encodeBinary(stream, &val->binary); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 779: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, -128); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 800: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, 0); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 15: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + if (val->type == EXI_DATATYPE_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger(stream, &val->integer); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 269: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 8); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 299; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 4, 9); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + deviantChars = 1; + } + } + break; + case 13: + case 62: + case 135: + /* Element[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, val->enumeration); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 67: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 68; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 2, 3); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 3); + deviantChars = 1; + } + } + break; + case 743: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 744; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 3); + deviantChars = 1; + } + } + break; + case 68: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 68; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 2, 3); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, 1); + deviantChars = 1; + } + } + break; + case 299: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 8); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 299; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 4, 9); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 780: + case 782: + case 788: + case 790: + case 792: + case 794: + case 796: + case 798: + /* FirstStartTag[CHARACTERS[DATETIME]] */ + if (val->type == EXI_DATATYPE_DATETIME) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeDateTime(stream, &val->datetime); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 219: + /* FirstStartTag[CHARACTERS[INTEGER]] */ + if (val->type == EXI_DATATYPE_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger(stream, &val->integer); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 3: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger(stream, &val->integer); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 366: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 2, 1); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 756: + /* Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 756; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 271: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 276; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 777: + /* Element[CHARACTERS[LIST]] */ + if (val->type == EXI_DATATYPE_LIST) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, val->list.len); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 156: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, 1); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 174: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, 0); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 268: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 9); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 299; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 4, 10); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 773: + /* First(xsi:type)(xsi:nil)StartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 9, 256); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 774; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 9, 257); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 5); + deviantChars = 1; + } + } + break; + case 29: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + if (val->type == EXI_DATATYPE_BOOLEAN) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, val->boolean); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 365: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 2, 1); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 776: + /* FirstStartTag[CHARACTERS[LIST]] */ + if (val->type == EXI_DATATYPE_LIST) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, val->list.len); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 283: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 283; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, 1); + deviantChars = 1; + } + } + break; + case 787: + /* Element[CHARACTERS[FLOAT]] */ + if (val->type == EXI_DATATYPE_FLOAT) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeFloat(stream, &val->float_me); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 272: + /* Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 272; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, 1); + deviantChars = 1; + } + } + break; + case 333: + /* Element[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, val->enumeration); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 113: + /* StartTag[CHARACTERS[BINARY_BASE64]] */ + if (val->type == EXI_DATATYPE_BINARY_BASE64) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBinary(stream, &val->binary); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + deviantChars = 1; + } + } + break; + case 332: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, val->enumeration); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 30: + /* Element[CHARACTERS[BOOLEAN]] */ + if (val->type == EXI_DATATYPE_BOOLEAN) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, val->boolean); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 323: + /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 68; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 3); + deviantChars = 1; + } + } + break; + case 270: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 9); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 270; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 4, 10); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, 1); + deviantChars = 1; + } + } + break; + case 26: + case 689: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, val->enumeration); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 276: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 276; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 784: + /* FirstStartTag[CHARACTERS[DECIMAL]] */ + if (val->type == EXI_DATATYPE_DECIMAL) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeDecimal(stream, &val->decimal); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 778: + /* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 68; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 5); + deviantChars = 1; + } + } + break; + case 53: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 7, 0); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 322: + /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 68; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 3, 5); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 3); + deviantChars = 1; + } + } + break; + case 774: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 8, 245); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 774; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 8, 246); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, 1); + deviantChars = 1; + } + } + break; + case 9: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 3, -3); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 785: + /* Element[CHARACTERS[DECIMAL]] */ + if (val->type == EXI_DATATYPE_DECIMAL) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeDecimal(stream, &val->decimal); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 118: + /* FirstStartTag[CHARACTERS[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 282: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 283; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 3); + deviantChars = 1; + } + } + break; + case 755: + /* StartTag[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 756; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + deviantChars = 1; + } + } + break; + case 37: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + if (val->type == EXI_DATATYPE_BINARY_BASE64) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBinary(stream, &val->binary); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 173: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, 0); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 50: + /* Element[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 4, val->enumeration); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 321: + /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 5); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 68; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 3, 6); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 5); + deviantChars = 1; + } + } + break; + case 38: + /* Element[CHARACTERS[BINARY_BASE64]] */ + if (val->type == EXI_DATATYPE_BINARY_BASE64) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBinary(stream, &val->binary); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 161: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger(stream, &val->integer); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 74: + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 52: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 7, 0); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 412: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, -128); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 41: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, val->enumeration); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 6: + /* Element[CHARACTERS[UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger(stream, &val->integer); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 155: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, 1); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 75: + /* Element[CHARACTERS[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 12: + case 61: + case 134: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, val->enumeration); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 413: + /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + if (val->type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = _encodeNBitIntegerValue(stream, &val->integer, 8, -128); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 27: + case 690: + /* Element[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, val->enumeration); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 314: + /* Element[CHARACTERS[BINARY_HEX]] */ + if (val->type == EXI_DATATYPE_BINARY_HEX) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBinary(stream, &val->binary); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 117: + /* StartTag[CHARACTERS[STRING]] */ + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, state->elementStack[state->stackIndex], &val->str); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + deviantChars = 1; + } + } + break; + case 289: + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + if (val->type == EXI_DATATYPE_BINARY_BASE64) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBinary(stream, &val->binary); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 781: + case 783: + case 789: + case 791: + case 793: + case 795: + case 797: + case 799: + /* Element[CHARACTERS[DATETIME]] */ + if (val->type == EXI_DATATYPE_DATETIME) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeDateTime(stream, &val->datetime); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + deviantChars = 1; + } + } + break; + case 313: + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + if (val->type == EXI_DATATYPE_BINARY_HEX) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBinary(stream, &val->binary); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + case 49: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + if (val->type == EXI_DATATYPE_ENUMERATION) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 4, val->enumeration); + } + moveOnID = 4; + } else { + /* deviant characters */ + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + deviantChars = 1; + } + } + break; + + default: + errn = (EXI_ERROR_UNEXPECTED_CHARACTERS); + break; + } + + if(errn == 0) { + if (currentID < 0) { + /* TODO runtime rules */ + errn = EXI_ERROR_UNEXPECTED_CHARACTERS; + } else if (deviantChars) { + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + } else { + /* move on */ + state->grammarStack[state->stackIndex] = moveOnID; + } + } + + return (errn); +} + + +static int _encodeDeviantKnownAttribute(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, exi_value_t* val, + uint16_t cl1, uint32_t ec1, uint16_t cl2, uint32_t ec2, uint16_t cl3, uint32_t ec3) { + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; +} + + + +int exiv2gEncodeAttribute(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, + exi_value_t* val) { + int16_t moveOnID = 0; + int16_t currentID = state->grammarStack[state->stackIndex]; + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE; + + switch (currentID) { + case 35: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + switch(qnameID) { + case 191: + moveOnID = 36; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 3, 3, 3, 1, 0); + } + break; + } + break; + case 66: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + switch(qnameID) { + case 0: + moveOnID = 67; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 1, 1, 3, 4, 1, 0); + } + break; + } + break; + case 69: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + switch(qnameID) { + case 191: + moveOnID = 70; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 1, 1, 3, 4, 1, 0); + } + break; + } + break; + case 101: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + switch(qnameID) { + case 336: + moveOnID = 102; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 2, 3, 4, 1, 0); + } + break; + } + break; + case 112: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + switch(qnameID) { + case 336: + moveOnID = 113; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 1, 1, 3, 4, 1, 0); + } + break; + } + break; + case 116: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + switch(qnameID) { + case 336: + moveOnID = 117; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 1, 1, 3, 4, 1, 0); + } + break; + } + break; + case 120: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + switch(qnameID) { + case 191: + moveOnID = 121; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 1, 1, 3, 4, 1, 0); + } + break; + } + break; + case 169: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + switch(qnameID) { + case 336: + moveOnID = 170; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 2, 3, 4, 1, 0); + } + break; + } + break; + case 268: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 2: + moveOnID = 269; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 4, 10, 3, 4, 1, 0); + } + break; + } + break; + case 277: + /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(qnameID) { + case 5: + moveOnID = 278; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 4, 3, 3, 2, 0); + } + break; + case 6: + moveOnID = 279; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 4, 3, 3, 2, 1); + } + break; + } + break; + case 278: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + switch(qnameID) { + case 6: + moveOnID = 279; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 3, 2, 1, 1, 0); + } + break; + } + break; + case 281: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + switch(qnameID) { + case 0: + moveOnID = 282; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 1, 1, 3, 4, 1, 0); + } + break; + } + break; + case 300: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + switch(qnameID) { + case 2: + moveOnID = 301; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 2, 3, 4, 1, 0); + } + break; + } + break; + case 302: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(qnameID) { + case 2: + moveOnID = 303; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 5, 3, 4, 2, 0); + } + break; + case 5: + moveOnID = 304; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 5, 3, 4, 2, 1); + } + break; + case 6: + moveOnID = 305; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 5, 3, 4, 2, 2); + } + break; + } + break; + case 303: + /* StartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(qnameID) { + case 5: + moveOnID = 304; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 4, 3, 2, 2, 0); + } + break; + case 6: + moveOnID = 305; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 4, 3, 2, 2, 1); + } + break; + } + break; + case 304: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + switch(qnameID) { + case 6: + moveOnID = 305; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 3, 3, 2, 1, 0); + } + break; + } + break; + case 311: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + switch(qnameID) { + case 191: + moveOnID = 312; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 2, 3, 4, 1, 0); + } + break; + } + break; + case 321: + /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 1: + moveOnID = 322; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 6, 3, 3, 2, 0); + } + break; + case 2: + moveOnID = 323; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 6, 3, 3, 2, 1); + } + break; + case 3: + moveOnID = 67; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 6, 3, 3, 2, 2); + } + break; + } + break; + case 322: + /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 2: + moveOnID = 323; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 5, 2, 1, 2, 0); + } + break; + case 3: + moveOnID = 67; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 5, 2, 1, 2, 1); + } + break; + } + break; + case 323: + /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 3: + moveOnID = 67; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 3, 4, 2, 1, 1, 0); + } + break; + } + break; + case 410: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name)] */ + switch(qnameID) { + case 344: + moveOnID = 411; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 1, 1, 3, 4, 1, 0); + } + break; + } + break; + case 737: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + switch(qnameID) { + case 2: + moveOnID = 738; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 2, 3, 4, 1, 0); + } + break; + } + break; + case 739: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + switch(qnameID) { + case 2: + moveOnID = 740; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 2, 3, 4, 1, 0); + } + break; + } + break; + case 742: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + switch(qnameID) { + case 0: + moveOnID = 743; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 1, 1, 3, 4, 1, 0); + } + break; + } + break; + case 747: + /* FirstStartTag[ATTRIBUTE[STRING](Id), CHARACTERS[BINARY_BASE64]] */ + switch(qnameID) { + case 2: + moveOnID = 113; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 2, 3, 4, 1, 0); + } + break; + } + break; + case 751: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + switch(qnameID) { + case 2: + moveOnID = 752; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 2, 3, 4, 1, 0); + } + break; + } + break; + case 753: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Target)] */ + switch(qnameID) { + case 2: + moveOnID = 754; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 2, 3, 4, 2, 0); + } + break; + case 4: + moveOnID = 755; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 2, 2, 3, 4, 2, 1); + } + break; + } + break; + case 754: + /* StartTag[ATTRIBUTE[STRING](Target)] */ + switch(qnameID) { + case 4: + moveOnID = 755; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 1, 1, 3, 2, 1, 0); + } + break; + } + break; + case 773: + /* First(xsi:type)(xsi:nil)StartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit), START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + switch(qnameID) { + case 0: + moveOnID = 773; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 9, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 9, 257, 3, 3, 4, 0); + } + break; + case 1: + moveOnID = 773; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 9, 1); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 9, 257, 3, 3, 4, 1); + } + break; + case 2: + moveOnID = 773; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 9, 2); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 9, 257, 3, 3, 4, 2); + } + break; + case 191: + moveOnID = 773; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 9, 3); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 9, 257, 3, 3, 4, 3); + } + break; + case 336: + moveOnID = 773; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 9, 4); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 9, 257, 3, 3, 4, 4); + } + break; + case 3: + moveOnID = 773; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 9, 5); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 9, 257, 3, 3, 4, 5); + } + break; + case 344: + moveOnID = 773; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 9, 6); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 9, 257, 3, 3, 4, 6); + } + break; + case 4: + moveOnID = 773; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 9, 7); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 9, 257, 3, 3, 4, 7); + } + break; + case 5: + moveOnID = 773; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 9, 8); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 9, 257, 3, 3, 4, 8); + } + break; + case 6: + moveOnID = 773; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 9, 9); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 9, 257, 3, 3, 4, 9); + } + break; + } + break; + case 775: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm), ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), ATTRIBUTE[STRING](MimeType), ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name), ATTRIBUTE[STRING](Target), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), ATTRIBUTE_GENERIC, END_ELEMENT] */ + switch(qnameID) { + case 0: + moveOnID = 775; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 0); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 4, 12, 3, 3, 4, 0); + } + break; + case 1: + moveOnID = 775; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 1); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 4, 12, 3, 3, 4, 1); + } + break; + case 2: + moveOnID = 775; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 2); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 4, 12, 3, 3, 4, 2); + } + break; + case 191: + moveOnID = 775; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 3); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 4, 12, 3, 3, 4, 3); + } + break; + case 336: + moveOnID = 775; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 4); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 4, 12, 3, 3, 4, 4); + } + break; + case 3: + moveOnID = 775; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 5); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 4, 12, 3, 3, 4, 5); + } + break; + case 344: + moveOnID = 775; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 6); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 4, 12, 3, 3, 4, 6); + } + break; + case 4: + moveOnID = 775; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 7); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 4, 12, 3, 3, 4, 7); + } + break; + case 5: + moveOnID = 775; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 8); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 4, 12, 3, 3, 4, 8); + } + break; + case 6: + moveOnID = 775; + if (val->type == EXI_DATATYPE_STRING) { + errn = encodeNBitUnsignedInteger(stream, 4, 9); + if(errn == 0) { + errn = encodeStringValue(stream, state, qnameID, &val->str); + } + } else { + errn = _encodeDeviantKnownAttribute(stream, state, qnameID, val, 4, 12, 3, 3, 4, 9); + } + break; + } + break; + + } + + /* no expected attribute */ + if (currentID < 0) { + /* runtime element */ + errn = _encode2ndLevelAttribute(stream, state, qnameID, val); + } else { + if(moveOnID == 0) { + /* no action yet */ +#if EXI_OPTION_STRICT != 0 + /* no 2nd level events in strict mode for schema-informed grammars */ + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE; +#else /* EXI_v2gSTRICT != 0 */ + errn = _encode2ndLevelAttribute(stream, state, qnameID, val); +#endif /* EXI_v2gSTRICT != 0 */ + } else { + state->grammarStack[state->stackIndex] = moveOnID; + } + } + + return (errn); +} + + +int exiv2gEncodeAttributeNS(bitstream_t* stream, + exi_state_t* state, uint16_t namespaceUriID, + exi_string_ucs_t* localName, exi_value_t* val) { + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE_NS; + + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + + return (errn); +} + +int exiv2gEncodeAttributeGeneric(bitstream_t* stream, + exi_state_t* state, exi_string_ucs_t* namespaceUri, + exi_string_ucs_t* localName, exi_value_t* val) { + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + + errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE_GENERIC_UNDECLARED; + + return EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; + + return (errn); +} + + +int exiv2gEncodeAttributeXsiNil(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + + switch (state->grammarStack[state->stackIndex]) { + case 773: + errn = encodeNBitUnsignedInteger(stream, 9, 257); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + } + break; + + } + + if (errn == 0) { + errn = encodeBoolean(stream, val->boolean); + if (errn == 0 && val->boolean) { + /* handle xsi:nil == true */ + errn = exi_v2g_HandleXsiNilTrue(state); + } + } + + return (errn); +} + + + +int exiv2gEncodeAttributeXsiType(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + /* encode xsi:type event code */ + switch (state->grammarStack[state->stackIndex]) { + case 3: + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + } + break; + case 15: + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + } + break; + case 45: + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + } + break; + case 74: + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + } + break; + case 147: + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + } + break; + case 173: + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + } + break; + case 263: + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + } + break; + case 266: + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + } + break; + case 289: + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + } + break; + case 412: + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + } + break; + case 714: + errn = encodeNBitUnsignedInteger(stream, 1, 1); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + } + break; + case 773: + errn = encodeNBitUnsignedInteger(stream, 9, 257); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + } + break; + + default: + errn = (EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_TYPE); + break; + } + if (errn == 0) { + /* encode qname */ + errn = _encodeAttributeXsiTypeContent(stream, state, val); + } + + return (errn); +} + + + + +#endif + diff --git a/src/codec/v2gEXIEncoder.h b/src/codec/v2gEXIEncoder.h new file mode 100644 index 0000000..581c2cb --- /dev/null +++ b/src/codec/v2gEXIEncoder.h @@ -0,0 +1,274 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_v2g_ENCODER_H +#define EXI_v2g_ENCODER_H + +/** +* \file EXIEncoder.h +* \brief EXI Encoder +* +*/ + +#include "EXITypes.h" +#include "v2gEXIEncoder.h" + +/** + * \brief Initialize EXI encoder + * + * Resets & initializes the EXI encoder. + * + * \param stream Output Stream + * \param state Codec state + * \param runtimeTable Runtime name-tables + * \param stringTable String table + * \return Error-Code <> 0 + * + */ +int exiv2gInitEncoder(bitstream_t* stream, exi_state_t* state, + exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable); + +/** + * \brief Reports the beginning of a set of XML events + * + * see EXI StartDocument (SD) event + * + * \param stream Output Stream + * \param state Codec state + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeStartDocument(bitstream_t* stream, + exi_state_t* state); + +/** + * \brief Reports the end of a set of XML events + * + * see EXI EndDocument (ED) event + * + * \param stream Output Stream + * \param state Codec state + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeEndDocument(bitstream_t* stream, + exi_state_t* state); + +/** + * \brief Supplies the start of a known element + * + * Provides access to the namespace URI and local name of the start tag by providing qnameID. + * Note: Both, namespace URI and local name are known (schema-informed) or have been encoded before. + * see EXI StartElement (SE) event + * + * \param stream Output Stream + * \param state Codec state + * \param qnameID qualified name ID + * \return Error-Code <> 0 + * + */ +int +exiv2gEncodeStartElement(bitstream_t* stream, + exi_state_t* state, uint16_t qnameID); + +/** + * \brief Supplies the start of an element where the namespace is known + * + * Note: Namespace URI is known (schema-informed) or has been encoded before while local name is unknown. + * see EXI StartElement (SE) event + * + * \param stream Output Stream + * \param state Codec state + * \param namespaceUriID namespace URI ID + * \param localName local name as string + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeStartElementNS(bitstream_t* stream, + exi_state_t* state, uint16_t namespaceUriID, + exi_string_ucs_t* localName); + +/** + * \brief Supplies the start of an element where the namespace and the local name is unknown + * + * Note: Neither namespace URI nor local name is known. + * see EXI StartElement (SE) event + * + * \param stream Output Stream + * \param state Codec state + * \param namespaceUri namespace URI as string + * \param localName local name as string + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeStartElementGeneric(bitstream_t* stream, + exi_state_t* state, exi_string_ucs_t* namespaceUri, + exi_string_ucs_t* localName); + +/** + * \brief Supplies the end tag of an element + * + * see EXI EndElement (EE) event + * + * \param stream Output Stream + * \param state Codec state + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeEndElement(bitstream_t* stream, + exi_state_t* state); + +/** + * \brief Supplies characters value + * + * Note: Special handling for list value. + * see EXI Characters (CH) event + * + * \param stream Output Stream + * \param state Codec state + * \param val Characters value + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeCharacters(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + +/** + * \brief Supplies an attribute qname and value + * + * Note: Special handling for list value. + * see EXI Attribute (AT) event + * + * \param stream Output Stream + * \param state Codec state + * \param qnameID qualified name ID + * \param val Attribute value + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeAttribute(bitstream_t* stream, + exi_state_t* state, uint16_t qnameID, exi_value_t* val); + + + + +/** + * \brief Supplies an attribute qname and value where the namespace is known + * + * Note: Special handling for list value. + * see EXI Attribute (AT) event + * + * \param stream Output Stream + * \param state Codec state + * \param namespaceUriID Qualified namespace URI ID + * \param localName Qualified localname as String + * \param val Attribute value + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeAttributeNS(bitstream_t* stream, + exi_state_t* state, uint16_t namespaceUriID, + exi_string_ucs_t* localName, exi_value_t* val); + + +/** + * \brief Supplies an attribute qname and value where the namespace and the local name is unknown + * + * + * \param stream Output Stream + * \param state Codec state + * \param namespaceUri namespace URI as string + * \param localName local name as string + * \param val Attribute value + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeAttributeGeneric(bitstream_t* stream, + exi_state_t* state, exi_string_ucs_t* namespaceUri, + exi_string_ucs_t* localName, exi_value_t* val); + + + +/** + * \brief Supplies an xsi:nil attribute + * + * see EXI Attribute (AT) event + * + * \param stream Output Stream + * \param state Codec state + * \param val Attribute value + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeAttributeXsiNil(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + +/** + * \brief Supplies an xsi:type attribute + * + * see EXI Attribute (AT) event + * + * \param stream Output Stream + * \param state Codec state + * \param val Attribute value + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeAttributeXsiType(bitstream_t* stream, + exi_state_t* state, exi_value_t* val); + +/** + * \brief Supplies list value for characters and attribute event + * + * List values are special given that first the number and type of entry needs to be passed (element/attribute event) and then one by one the actual values. + * + * \param stream Output Stream + * \param state Codec state + * \param qnameID qualified name ID + * \param val one list value + * \param lt list type + * \return Error-Code <> 0 + * + */ +int exiv2gEncodeListValue(bitstream_t* stream, + exi_state_t* state, uint16_t qnameID, exi_value_t* val, exi_list_t lt); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/v2gNameTableEntries.c b/src/codec/v2gNameTableEntries.c new file mode 100644 index 0000000..42df1c6 --- /dev/null +++ b/src/codec/v2gNameTableEntries.c @@ -0,0 +1,204 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#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 + diff --git a/src/codec/v2gNameTableEntries.h b/src/codec/v2gNameTableEntries.h new file mode 100644 index 0000000..adce5c2 --- /dev/null +++ b/src/codec/v2gNameTableEntries.h @@ -0,0 +1,44 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_v2g_NAME_TABLE_ENTRIES_H +#define EXI_v2g_NAME_TABLE_ENTRIES_H + +#include "EXITypes.h" + +/* ==================================== */ +/* String Table Population */ + +extern exi_name_table_prepopulated_t exiv2gNameTablePrepopulated; + +#endif + diff --git a/src/codec/v2gQNameDefines.h b/src/codec/v2gQNameDefines.h new file mode 100644 index 0000000..3ea807d --- /dev/null +++ b/src/codec/v2gQNameDefines.h @@ -0,0 +1,54 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_v2g_QNAME_DEFINES_H +#define EXI_v2g_QNAME_DEFINES_H + +/** Number of pre-populated qnames */ +#define EXI_v2gNUMBER_OF_PREPOPULATED_QNAMES 448 + +/** Number of runtime qnames */ +#define EXI_v2gMAX_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) + + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/v2gQNames.c b/src/codec/v2gQNames.c new file mode 100644 index 0000000..3ae9a3b --- /dev/null +++ b/src/codec/v2gQNames.c @@ -0,0 +1,989 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#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; inextQNameID && 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 + diff --git a/src/codec/v2gQNames.h b/src/codec/v2gQNames.h new file mode 100644 index 0000000..113bd71 --- /dev/null +++ b/src/codec/v2gQNames.h @@ -0,0 +1,77 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer.com

+ *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#ifndef EXI_v2g_QNAMES_H +#define EXI_v2g_QNAMES_H + +#include "EXITypes.h" + +/** + * \brief Returns efficient qname (namespaceURI & localName) IDs for qnameID + * + * \param state Codec state + * \param qnameID Qualified name ID + * \param namespaceURI QName namespace URI ID + * \param localPart QName local name ID + * \return Error-Code <> 0 + * + */ +int exiv2gGetEQName(exi_state_t* state, uint16_t qnameID, uint16_t* namespaceURI, uint16_t* localPart); + + +/** + * \brief Returns qnameID for qname namespaceURI & localName + * + * \param state Codec state + * \param namespaceURI QName namespace URI ID + * \param localPart QName local name ID + * \param qnameID QName ID (out) + * \return Error-Code <> 0 + * + */ +int exiv2gGetQNameID(exi_state_t* state, uint16_t namespaceURI, uint16_t localPart, uint16_t* qnameID); + + +/** + * \brief Add efficient qname (namespaceURI & localName) IDs for qnameID + * + * \param state Codec state + * \param qnameID Qualified name ID + * \param namespaceURI QName namespace URI ID + * \param localPart QName local name ID + * \return Error-Code <> 0 + * + */ +int exiv2gAddEQName(exi_state_t* state, uint16_t* qnameID, uint16_t namespaceURI, uint16_t localPart); + +#endif + diff --git a/src/service/v2g_dataTypes.c b/src/service/v2g_dataTypes.c new file mode 100644 index 0000000..9486439 --- /dev/null +++ b/src/service/v2g_dataTypes.c @@ -0,0 +1,692 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + +#include "EXITypes.h" +#include "v2g_dataTypes.h" + + +static void init_sessionIDType(struct sessionIDType* type) +{ + type->arraylen.data=0; + +} + +static void init_faultMsgType(struct faultMsgType* type) +{ + type->arraylen.data=0; + +} + +static void init_NotificationType(struct NotificationType* type) +{ + type->isused.FaultMsg=0; + +} + +static void init_service_string(struct service_string* type) +{ + type->arraylen.data=0; + +} + +static void init_DigestValueType(struct DigestValueType* type) +{ + type->arraylen.data=0; + +} + +static void init_ReferenceType(struct ReferenceType* type) +{ + type->isused.attr_Id=0; + type->isused.attr_Type=0; + type->isused.attr_URI=0; + +} + +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; + +} + +static void init_SignatureValueType(struct SignatureValueType* type) +{ + type->isused.attr_Id=0; + +} + +static void init_SignatureType(struct SignatureType* type) +{ + type->isused.attr_Id=0; + init_SignedInfoType(&(type->SignedInfo)); + init_SignatureValueType(&(type->SignatureValue)); + +} + +static void init_MessageHeaderType(struct MessageHeaderType* type) +{ + init_NotificationType(&(type->Notification)); + type->isused.Notification=0; + type->isused.Signature=0; + +} + +static void init_evccIDType(struct evccIDType* type) +{ + type->arraylen.data=0; + +} + +static void init_evseIDType(struct evseIDType* type) +{ + type->arraylen.data=0; + +} + +static void init_SessionSetupResType(struct SessionSetupResType* type) +{ + type->isused.EVSETimeStamp=0; + +} + +static void init_serviceScopeType(struct serviceScopeType* type) +{ + type->arraylen.data=0; + +} + +static void init_ServiceDiscoveryReqType(struct ServiceDiscoveryReqType* type) +{ + type->isused.ServiceScope=0; + type->isused.ServiceCategory=0; + +} + +static void init_PaymentOptionListType(struct PaymentOptionListType* type) +{ + + + type->arraylen.PaymentOption=0; + +} + +static void init_serviceNameType(struct serviceNameType* type) +{ + type->arraylen.data=0; + +} + +static void init_SupportedEnergyTransferModeType(struct SupportedEnergyTransferModeType* type) +{ + + type->arraylen.EnergyTransferMode=0; + +} + +static void init_ChargeServiceType(struct ChargeServiceType* type) +{ + type->isused.ServiceName=0; + type->isused.ServiceScope=0; + init_SupportedEnergyTransferModeType(&(type->SupportedEnergyTransferMode)); + +} + +static void init_ServiceType(struct ServiceType* type) +{ + type->isused.ServiceName=0; + type->isused.ServiceScope=0; + +} + +static void init_ServiceListType(struct ServiceListType* type) +{ + int i_loop; + + for(i_loop=0; i_loop<8;i_loop++) + { + init_ServiceType(&(type->Service[i_loop])); + } + + type->arraylen.Service=0; + +} + +static void init_ServiceDiscoveryResType(struct ServiceDiscoveryResType* type) +{ + init_PaymentOptionListType(&(type->PaymentOptionList)); + init_ChargeServiceType(&(type->ChargeService)); + init_ServiceListType(&(type->ServiceList)); + type->isused.ServiceList=0; + +} + +static void init_ParameterType(struct ParameterType* 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; + +} + +static void init_ParameterSetType(struct ParameterSetType* type) +{ + int i_loop; + + for(i_loop=0; i_loop<8;i_loop++) + { + init_ParameterType(&(type->Parameter[i_loop])); + } + + type->arraylen.Parameter=0; + +} + +static void init_ServiceParameterListType(struct ServiceParameterListType* type) +{ + int i_loop; + + for(i_loop=0; i_loop<3;i_loop++) + { + init_ParameterSetType(&(type->ParameterSet[i_loop])); + } + + type->arraylen.ParameterSet=0; + +} + +static void init_ServiceDetailResType(struct ServiceDetailResType* type) +{ + init_ServiceParameterListType(&(type->ServiceParameterList)); + type->isused.ServiceParameterList=0; + +} + +static void init_SelectedServiceType(struct SelectedServiceType* type) +{ + type->isused.ParameterSetID=0; + +} + +static void init_SelectedServiceListType(struct SelectedServiceListType* type) +{ + int i_loop; + + for(i_loop=0; i_loop<16;i_loop++) + { + init_SelectedServiceType(&(type->SelectedService[i_loop])); + } + + type->arraylen.SelectedService=0; + +} + +static void init_PaymentServiceSelectionReqType(struct PaymentServiceSelectionReqType* type) +{ + init_SelectedServiceListType(&(type->SelectedServiceList)); + +} + +static void init_eMAIDType(struct eMAIDType* type) +{ + type->arraylen.data=0; + +} + +static void init_certificateType(struct certificateType* type) +{ + type->arraylen.data=0; + +} + +static void init_SubCertificatesType(struct SubCertificatesType* type) +{ + + + type->arraylen.Certificate=0; + +} + +static void init_CertificateChainType(struct CertificateChainType* type) +{ + type->isused.attr_Id=0; + init_SubCertificatesType(&(type->SubCertificates)); + type->isused.SubCertificates=0; + +} + +static void init_PaymentDetailsReqType(struct PaymentDetailsReqType* type) +{ + init_CertificateChainType(&(type->ContractSignatureCertChain)); + +} + +static void init_genChallengeType(struct genChallengeType* type) +{ + type->arraylen.data=0; + +} + +static void init_AuthorizationReqType(struct AuthorizationReqType* type) +{ + type->isused.attr_Id=0; + type->isused.GenChallenge=0; + +} + +static void init_AC_EVChargeParameterType(struct AC_EVChargeParameterType* type) +{ + type->isused.DepartureTime=0; + +} + +static void init_DC_EVChargeParameterType(struct DC_EVChargeParameterType* type) +{ + type->isused.DepartureTime=0; + type->isused.EVMaximumPowerLimit=0; + type->isused.EVEnergyCapacity=0; + type->isused.EVEnergyRequest=0; + type->isused.FullSOC=0; + type->isused.BulkSOC=0; + +} + +static void init_ChargeParameterDiscoveryReqType(struct ChargeParameterDiscoveryReqType* type) +{ + type->isused.MaxEntriesSAScheduleTuple=0; + type->isused.AC_EVChargeParameter=0; + type->isused.DC_EVChargeParameter=0; + +} + +static void init_RelativeTimeIntervalType(struct RelativeTimeIntervalType* type) +{ + type->isused.duration=0; + +} + +static void init_PMaxScheduleEntryType(struct PMaxScheduleEntryType* type) +{ + init_RelativeTimeIntervalType(&(type->RelativeTimeInterval)); + +} + +static void init_PMaxScheduleType(struct PMaxScheduleType* type) +{ + int i_loop; + + for(i_loop=0; i_loop<48;i_loop++) + { + init_PMaxScheduleEntryType(&(type->PMaxScheduleEntry[i_loop])); + } + + type->arraylen.PMaxScheduleEntry=0; + +} + +static void init_tariffDescriptionType(struct tariffDescriptionType* type) +{ + type->arraylen.data=0; + +} + +static void init_CostType(struct CostType* type) +{ + type->isused.amountMultiplier=0; + +} + +static void init_ConsumptionCostType(struct ConsumptionCostType* type) +{ + int i_loop; + + for(i_loop=0; i_loop<3;i_loop++) + { + init_CostType(&(type->Cost[i_loop])); + } + + type->arraylen.Cost=0; + +} + +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++) + { + init_ConsumptionCostType(&(type->ConsumptionCost[i_loop])); + } + + type->arraylen.ConsumptionCost=0; + type->isused.ConsumptionCost=0; + +} + +static void init_SalesTariffType(struct SalesTariffType* type) +{ + int i_loop; + + type->isused.attr_Id=0; + type->isused.SalesTariffDescription=0; + type->isused.NumEPriceLevels=0; + for(i_loop=0; i_loop<24;i_loop++) + { + init_SalesTariffEntryType(&(type->SalesTariffEntry[i_loop])); + } + + type->arraylen.SalesTariffEntry=0; + +} + +static void init_SAScheduleTupleType(struct SAScheduleTupleType* type) +{ + init_PMaxScheduleType(&(type->PMaxSchedule)); + type->isused.SalesTariff=0; + +} + +static void init_SAScheduleListType(struct SAScheduleListType* type) +{ + int i_loop; + + for(i_loop=0; i_loop<3;i_loop++) + { + init_SAScheduleTupleType(&(type->SAScheduleTuple[i_loop])); + } + + type->arraylen.SAScheduleTuple=0; + +} + +static void init_AC_EVSEChargeParameterType(struct AC_EVSEChargeParameterType* type) +{ + +} + +static void init_DC_EVSEStatusType(struct DC_EVSEStatusType* type) +{ + type->isused.EVSEIsolationStatus=0; + +} + +static void init_DC_EVSEChargeParameterType(struct DC_EVSEChargeParameterType* type) +{ + init_DC_EVSEStatusType(&(type->DC_EVSEStatus)); + type->isused.EVSECurrentRegulationTolerance=0; + type->isused.EVSEEnergyToBeDelivered=0; + +} + +static void init_ChargeParameterDiscoveryResType(struct ChargeParameterDiscoveryResType* type) +{ + type->isused.SAScheduleList=0; + 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) +{ + type->isused.BulkChargingComplete=0; + +} + +static void init_PowerDeliveryReqType(struct PowerDeliveryReqType* type) +{ + init_ChargingProfileType(&(type->ChargingProfile)); + type->isused.ChargingProfile=0; + type->isused.DC_EVPowerDeliveryParameter=0; + +} + +static void init_PowerDeliveryResType(struct PowerDeliveryResType* type) +{ + type->isused.AC_EVSEStatus=0; + type->isused.DC_EVSEStatus=0; + +} + +static void init_meterIDType(struct meterIDType* type) +{ + type->arraylen.data=0; + +} + +static void init_sigMeterReadingType(struct sigMeterReadingType* type) +{ + type->arraylen.data=0; + +} + +static void init_MeterInfoType(struct MeterInfoType* type) +{ + type->isused.MeterReading=0; + type->isused.SigMeterReading=0; + type->isused.MeterStatus=0; + type->isused.TMeter=0; + +} + +static void init_MeteringReceiptReqType(struct MeteringReceiptReqType* type) +{ + type->isused.attr_Id=0; + 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_ListOfRootCertificateIDsType(struct ListOfRootCertificateIDsType* type) +{ + + + type->arraylen.RootCertificateID=0; + +} + +static void init_CertificateUpdateReqType(struct CertificateUpdateReqType* type) +{ + init_CertificateChainType(&(type->ContractSignatureCertChain)); + init_ListOfRootCertificateIDsType(&(type->ListOfRootCertificateIDs)); + +} + +static void init_CertificateUpdateResType(struct CertificateUpdateResType* type) +{ + init_CertificateChainType(&(type->SAProvisioningCertificateChain)); + init_CertificateChainType(&(type->ContractSignatureCertChain)); + type->isused.RetryCounter=0; + +} + +static void init_CertificateInstallationReqType(struct CertificateInstallationReqType* type) +{ + init_ListOfRootCertificateIDsType(&(type->ListOfRootCertificateIDs)); + +} + +static void init_CertificateInstallationResType(struct CertificateInstallationResType* type) +{ + init_CertificateChainType(&(type->SAProvisioningCertificateChain)); + init_CertificateChainType(&(type->ContractSignatureCertChain)); + +} + +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_CableCheckReqType(struct CableCheckReqType* type) +{ + +} + +static void init_CableCheckResType(struct CableCheckResType* type) +{ + init_DC_EVSEStatusType(&(type->DC_EVSEStatus)); + +} + +static void init_PreChargeReqType(struct PreChargeReqType* type) +{ + +} + +static void init_PreChargeResType(struct PreChargeResType* type) +{ + init_DC_EVSEStatusType(&(type->DC_EVSEStatus)); + +} + +static void init_CurrentDemandReqType(struct CurrentDemandReqType* type) +{ + type->isused.EVMaximumVoltageLimit=0; + type->isused.EVMaximumCurrentLimit=0; + type->isused.EVMaximumPowerLimit=0; + type->isused.BulkChargingComplete=0; + type->isused.RemainingTimeToFullSoC=0; + type->isused.RemainingTimeToBulkSoC=0; + +} + +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; + +} + +static void init_WeldingDetectionReqType(struct WeldingDetectionReqType* type) +{ + +} + +static void init_WeldingDetectionResType(struct WeldingDetectionResType* type) +{ + init_DC_EVSEStatusType(&(type->DC_EVSEStatus)); + +} + +static void init_BodyType(struct BodyType* type) +{ + type->isused.SessionSetupReq=0; + type->isused.SessionSetupRes=0; + type->isused.ServiceDiscoveryReq=0; + type->isused.ServiceDiscoveryRes=0; + type->isused.ServiceDetailReq=0; + type->isused.ServiceDetailRes=0; + type->isused.PaymentServiceSelectionReq=0; + type->isused.PaymentServiceSelectionRes=0; + type->isused.PaymentDetailsReq=0; + type->isused.PaymentDetailsRes=0; + type->isused.AuthorizationReq=0; + type->isused.AuthorizationRes=0; + type->isused.ChargeParameterDiscoveryReq=0; + type->isused.ChargeParameterDiscoveryRes=0; + type->isused.PowerDeliveryReq=0; + type->isused.PowerDeliveryRes=0; + type->isused.MeteringReceiptReq=0; + type->isused.MeteringReceiptRes=0; + type->isused.SessionStopReq=0; + type->isused.SessionStopRes=0; + type->isused.CertificateUpdateReq=0; + 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; + type->isused.PreChargeRes=0; + type->isused.CurrentDemandReq=0; + type->isused.CurrentDemandRes=0; + type->isused.WeldingDetectionReq=0; + type->isused.WeldingDetectionRes=0; + +} + +static void init_AnonType_V2G_Message(struct AnonType_V2G_Message* type) +{ + init_BodyType(&(type->Body)); + +} + +static void init_EXIDocumentType(struct EXIDocumentType* type) +{ + init_AnonType_V2G_Message(&(type->V2G_Message)); +} diff --git a/src/service/v2g_dataTypes.h b/src/service/v2g_dataTypes.h new file mode 100644 index 0000000..155d95c --- /dev/null +++ b/src/service/v2g_dataTypes.h @@ -0,0 +1,1681 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SERVICEDATATYPES_H +#define SERVICEDATATYPES_H + +#include "EXITypes.h" +#include "string.h" + + + + +enum faultCodeType +{ + ParsingError_faultCodeType=0, + NoTLSRootCertificatAvailable_faultCodeType=1, + UnknownError_faultCodeType=2 + +}; + +enum responseCodeType +{ + OK_responseCodeType=0, + OK_NewSessionEstablished_responseCodeType=1, + OK_OldSessionJoined_responseCodeType=2, + OK_CertificateExpiresSoon_responseCodeType=3, + FAILED_responseCodeType=4, + FAILED_SequenceError_responseCodeType=5, + FAILED_ServiceIDInvalid_responseCodeType=6, + FAILED_UnknownSession_responseCodeType=7, + FAILED_ServiceSelectionInvalid_responseCodeType=8, + FAILED_PaymentSelectionInvalid_responseCodeType=9, + FAILED_CertificateExpired_responseCodeType=10, + FAILED_SignatureError_responseCodeType=11, + FAILED_NoCertificateAvailable_responseCodeType=12, + FAILED_CertChainError_responseCodeType=13, + FAILED_ChallengeInvalid_responseCodeType=14, + FAILED_ContractCanceled_responseCodeType=15, + FAILED_WrongChargeParameter_responseCodeType=16, + FAILED_PowerDeliveryNotApplied_responseCodeType=17, + FAILED_TariffSelectionInvalid_responseCodeType=18, + FAILED_ChargingProfileInvalid_responseCodeType=19, + FAILED_MeteringSignatureNotValid_responseCodeType=20, + FAILED_NoChargeServiceSelected_responseCodeType=21, + FAILED_WrongEnergyTransferMode_responseCodeType=22, + FAILED_ContactorError_responseCodeType=23, + FAILED_CertificateNotAllowedAtThisEVSE_responseCodeType=24, + FAILED_CertificateRevoked_responseCodeType=25 + +}; + +enum serviceCategoryType +{ + EVCharging_serviceCategoryType=0, + Internet_serviceCategoryType=1, + ContractCertificate_serviceCategoryType=2, + OtherCustom_serviceCategoryType=3 + +}; + +enum paymentOptionType +{ + Contract_paymentOptionType=0, + ExternalPayment_paymentOptionType=1 + +}; + +enum EnergyTransferModeType +{ + AC_single_phase_core_EnergyTransferModeType=0, + AC_three_phase_core_EnergyTransferModeType=1, + DC_core_EnergyTransferModeType=2, + DC_extended_EnergyTransferModeType=3, + DC_combo_core_EnergyTransferModeType=4, + DC_unique_EnergyTransferModeType=5 + +}; + +enum unitSymbolType +{ + h_unitSymbolType=0, + m_unitSymbolType=1, + s_unitSymbolType=2, + A_unitSymbolType=3, + V_unitSymbolType=4, + W_unitSymbolType=5, + Wh_unitSymbolType=6 + +}; + +enum EVSEProcessingType +{ + Finished_EVSEProcessingType=0, + Ongoing_EVSEProcessingType=1, + Ongoing_WaitingForCustomerInteraction_EVSEProcessingType=2 + +}; + +enum DC_EVErrorCodeType +{ + NO_ERROR_DC_EVErrorCodeType=0, + FAILED_RESSTemperatureInhibit_DC_EVErrorCodeType=1, + FAILED_EVShiftPosition_DC_EVErrorCodeType=2, + FAILED_ChargerConnectorLockFault_DC_EVErrorCodeType=3, + FAILED_EVRESSMalfunction_DC_EVErrorCodeType=4, + FAILED_ChargingCurrentdifferential_DC_EVErrorCodeType=5, + FAILED_ChargingVoltageOutOfRange_DC_EVErrorCodeType=6, + Reserved_A_DC_EVErrorCodeType=7, + Reserved_B_DC_EVErrorCodeType=8, + Reserved_C_DC_EVErrorCodeType=9, + FAILED_ChargingSystemIncompatibility_DC_EVErrorCodeType=10, + NoData_DC_EVErrorCodeType=11 + +}; + +enum costKindType +{ + relativePricePercentage_costKindType=0, + RenewableGenerationPercentage_costKindType=1, + CarbonDioxideEmission_costKindType=2 + +}; + +enum EVSENotificationType +{ + None_EVSENotificationType=0, + StopCharging_EVSENotificationType=1, + ReNegotiation_EVSENotificationType=2 + +}; + +enum isolationLevelType +{ + Invalid_isolationLevelType=0, + Valid_isolationLevelType=1, + Warning_isolationLevelType=2, + Fault_isolationLevelType=3, + No_IMD_isolationLevelType=4 + +}; + +enum DC_EVSEStatusCodeType +{ + EVSE_NotReady_DC_EVSEStatusCodeType=0, + EVSE_Ready_DC_EVSEStatusCodeType=1, + EVSE_Shutdown_DC_EVSEStatusCodeType=2, + EVSE_UtilityInterruptEvent_DC_EVSEStatusCodeType=3, + EVSE_IsolationMonitoringActive_DC_EVSEStatusCodeType=4, + EVSE_EmergencyShutdown_DC_EVSEStatusCodeType=5, + EVSE_Malfunction_DC_EVSEStatusCodeType=6, + Reserved_8_DC_EVSEStatusCodeType=7, + Reserved_9_DC_EVSEStatusCodeType=8, + Reserved_A_DC_EVSEStatusCodeType=9, + Reserved_B_DC_EVSEStatusCodeType=10, + Reserved_C_DC_EVSEStatusCodeType=11 + +}; + +enum chargeProgressType +{ + Start_chargeProgressType=0, + Stop_chargeProgressType=1, + Renegotiate_chargeProgressType=2 + +}; + +enum chargingSessionType +{ + Terminate_chargingSessionType=0, + Pause_chargingSessionType=1 + +}; + + + + +struct arraylen_sessionIDType +{ + size_t data; + + +}; + +struct sessionIDType +{ + uint8_t data[8]; + struct arraylen_sessionIDType arraylen; + +}; + +struct arraylen_faultMsgType +{ + size_t data; + + +}; + +struct faultMsgType +{ + uint32_t data[64]; + struct arraylen_faultMsgType arraylen; + +}; + +struct selection_NotificationType +{ + unsigned int FaultMsg:1; + + +}; + +struct NotificationType +{ + enum faultCodeType FaultCode; + struct faultMsgType FaultMsg; + struct selection_NotificationType isused; + +}; + +struct selection_MessageHeaderType +{ + unsigned int Notification:1; + unsigned int Signature:1; + + +}; + +struct arraylen_service_string +{ + size_t data; + + +}; + +struct service_string +{ + uint32_t data[16]; + struct arraylen_service_string arraylen; + +}; + +struct selection_SignatureType +{ + unsigned int attr_Id:1; + + +}; + +struct selection_SignedInfoType +{ + unsigned int attr_Id:1; + + +}; + +struct CanonicalizationMethodType +{ + struct service_string attr_Algorithm; + + +}; + +struct SignatureMethodType +{ + struct service_string attr_Algorithm; + + +}; + +struct selection_ReferenceType +{ + unsigned int attr_Id:1; + unsigned int attr_Type:1; + unsigned int attr_URI:1; + + +}; + +struct DigestMethodType +{ + struct service_string attr_Algorithm; + + +}; + +struct arraylen_DigestValueType +{ + size_t data; + + +}; + +struct DigestValueType +{ + uint8_t data[128]; + struct arraylen_DigestValueType arraylen; + +}; + +struct ReferenceType +{ + struct service_string attr_Id; + struct service_string attr_Type; + struct service_string attr_URI; + struct DigestMethodType DigestMethod; + struct DigestValueType DigestValue; + struct selection_ReferenceType isused; + +}; + +struct arraylen_SignedInfoType +{ + size_t Reference; + + +}; + +struct SignedInfoType +{ + struct service_string attr_Id; + struct CanonicalizationMethodType CanonicalizationMethod; + struct SignatureMethodType SignatureMethod; + struct ReferenceType Reference[2]; + struct selection_SignedInfoType isused; struct arraylen_SignedInfoType arraylen; + +}; + +struct selection_SignatureValueType +{ + unsigned int attr_Id:1; + + +}; + +struct arraylen_SignatureValueType +{ + size_t data; + + +}; + +struct SignatureValueType +{ + uint8_t data[128]; + struct arraylen_SignatureValueType arraylen; + struct service_string attr_Id; + struct selection_SignatureValueType isused; + +}; + +struct SignatureType +{ + struct service_string attr_Id; + struct SignedInfoType SignedInfo; + struct SignatureValueType SignatureValue; + struct selection_SignatureType isused; + +}; + +struct MessageHeaderType +{ + struct sessionIDType SessionID; + struct NotificationType Notification; + struct SignatureType* Signature; + struct selection_MessageHeaderType isused; + +}; + +struct arraylen_evccIDType +{ + size_t data; + + +}; + +struct evccIDType +{ + uint8_t data[6]; + struct arraylen_evccIDType arraylen; + +}; + +struct SessionSetupReqType +{ + struct evccIDType EVCCID; + + +}; + +struct selection_BodyType +{ + unsigned int SessionSetupReq:1; + unsigned int SessionSetupRes:1; + unsigned int ServiceDiscoveryReq:1; + unsigned int ServiceDiscoveryRes:1; + unsigned int ServiceDetailReq:1; + unsigned int ServiceDetailRes:1; + unsigned int PaymentServiceSelectionReq:1; + unsigned int PaymentServiceSelectionRes:1; + unsigned int PaymentDetailsReq:1; + unsigned int PaymentDetailsRes:1; + unsigned int AuthorizationReq:1; + unsigned int AuthorizationRes:1; + unsigned int ChargeParameterDiscoveryReq:1; + unsigned int ChargeParameterDiscoveryRes:1; + unsigned int PowerDeliveryReq:1; + unsigned int PowerDeliveryRes:1; + unsigned int MeteringReceiptReq:1; + unsigned int MeteringReceiptRes:1; + unsigned int SessionStopReq:1; + unsigned int SessionStopRes:1; + unsigned int CertificateUpdateReq:1; + unsigned int CertificateUpdateRes:1; + unsigned int CertificateInstallationReq:1; + unsigned int CertificateInstallationRes:1; + unsigned int ChargingStatusReq:1; + unsigned int ChargingStatusRes:1; + unsigned int CableCheckReq:1; + unsigned int CableCheckRes:1; + unsigned int PreChargeReq:1; + unsigned int PreChargeRes:1; + unsigned int CurrentDemandReq:1; + unsigned int CurrentDemandRes:1; + unsigned int WeldingDetectionReq:1; + unsigned int WeldingDetectionRes:1; + + +}; + +struct arraylen_evseIDType +{ + size_t data; + + +}; + +struct evseIDType +{ + uint32_t data[37]; + struct arraylen_evseIDType arraylen; + +}; + +struct selection_SessionSetupResType +{ + unsigned int EVSETimeStamp:1; + + +}; + +struct SessionSetupResType +{ + enum responseCodeType ResponseCode; + struct evseIDType EVSEID; + int64_t EVSETimeStamp; + struct selection_SessionSetupResType isused; + +}; + +struct arraylen_serviceScopeType +{ + size_t data; + + +}; + +struct serviceScopeType +{ + uint32_t data[64]; + struct arraylen_serviceScopeType arraylen; + +}; + +struct selection_ServiceDiscoveryReqType +{ + unsigned int ServiceScope:1; + unsigned int ServiceCategory:1; + + +}; + +struct ServiceDiscoveryReqType +{ + struct serviceScopeType ServiceScope; + enum serviceCategoryType ServiceCategory; + struct selection_ServiceDiscoveryReqType isused; + +}; + +struct arraylen_PaymentOptionListType +{ + size_t PaymentOption; + + +}; + +struct PaymentOptionListType +{ + enum paymentOptionType PaymentOption[2]; + struct arraylen_PaymentOptionListType arraylen; + +}; + +struct arraylen_serviceNameType +{ + size_t data; + + +}; + +struct serviceNameType +{ + uint32_t data[32]; + struct arraylen_serviceNameType arraylen; + +}; + +struct selection_ChargeServiceType +{ + unsigned int ServiceName:1; + unsigned int ServiceScope:1; + + +}; + +struct arraylen_SupportedEnergyTransferModeType +{ + size_t EnergyTransferMode; + + +}; + +struct SupportedEnergyTransferModeType +{ + enum EnergyTransferModeType EnergyTransferMode[6]; + struct arraylen_SupportedEnergyTransferModeType arraylen; + +}; + +struct ChargeServiceType +{ + uint16_t ServiceID; + struct serviceNameType ServiceName; + enum serviceCategoryType ServiceCategory; + struct serviceScopeType ServiceScope; + int FreeService; + struct SupportedEnergyTransferModeType SupportedEnergyTransferMode; + struct selection_ChargeServiceType isused; + +}; + +struct selection_ServiceType +{ + unsigned int ServiceName:1; + unsigned int ServiceScope:1; + + +}; + +struct ServiceType +{ + uint16_t ServiceID; + struct serviceNameType ServiceName; + enum serviceCategoryType ServiceCategory; + struct serviceScopeType ServiceScope; + int FreeService; + struct selection_ServiceType isused; + +}; + +struct arraylen_ServiceListType +{ + size_t Service; + + +}; + +struct ServiceListType +{ + struct ServiceType Service[8]; + struct arraylen_ServiceListType arraylen; + +}; + +struct selection_ServiceDiscoveryResType +{ + unsigned int ServiceList:1; + + +}; + +struct ServiceDiscoveryResType +{ + enum responseCodeType ResponseCode; + struct PaymentOptionListType PaymentOptionList; + struct ChargeServiceType ChargeService; + struct ServiceListType ServiceList; + struct selection_ServiceDiscoveryResType isused; + +}; + +struct ServiceDetailReqType +{ + uint16_t ServiceID; + + +}; + +struct selection_ParameterType +{ + unsigned int boolValue:1; + unsigned int byteValue:1; + unsigned int shortValue:1; + unsigned int intValue:1; + unsigned int physicalValue:1; + unsigned int stringValue:1; + + +}; + +struct PhysicalValueType +{ + int8_t Multiplier; + enum unitSymbolType Unit; + int16_t Value; + + +}; + +struct ParameterType +{ + + struct service_string attr_Name; + + int boolValue; + int8_t byteValue; + int16_t shortValue; + int32_t intValue; + struct PhysicalValueType physicalValue; + struct service_string stringValue; + + + struct selection_ParameterType isused; +}; + +struct arraylen_ParameterSetType +{ + size_t Parameter; + + +}; + +struct ParameterSetType +{ + int16_t ParameterSetID; + struct ParameterType Parameter[3]; /* memory restricted */ + struct arraylen_ParameterSetType arraylen; + +}; + +struct arraylen_ServiceParameterListType +{ + size_t ParameterSet; + + +}; + +struct ServiceParameterListType +{ + struct ParameterSetType ParameterSet[8]; /* memory restricted */ + struct arraylen_ServiceParameterListType arraylen; + +}; + +struct selection_ServiceDetailResType +{ + unsigned int ServiceParameterList:1; + + +}; + +struct ServiceDetailResType +{ + enum responseCodeType ResponseCode; + uint16_t ServiceID; + struct ServiceParameterListType ServiceParameterList; + struct selection_ServiceDetailResType isused; + +}; + +struct selection_SelectedServiceType +{ + unsigned int ParameterSetID:1; + + +}; + +struct SelectedServiceType +{ + uint16_t ServiceID; + int16_t ParameterSetID; + struct selection_SelectedServiceType isused; + +}; + +struct arraylen_SelectedServiceListType +{ + size_t SelectedService; + + +}; + +struct SelectedServiceListType +{ + struct SelectedServiceType SelectedService[16]; + struct arraylen_SelectedServiceListType arraylen; + +}; + +struct PaymentServiceSelectionReqType +{ + enum paymentOptionType SelectedPaymentOption; + struct SelectedServiceListType SelectedServiceList; + + +}; + +struct PaymentServiceSelectionResType +{ + enum responseCodeType ResponseCode; + + +}; + +struct arraylen_eMAIDType +{ + size_t data; + + +}; + +struct eMAIDType +{ + uint32_t data[15]; + struct arraylen_eMAIDType arraylen; + +}; + +struct selection_CertificateChainType +{ + unsigned int attr_Id:1; + unsigned int SubCertificates:1; + + +}; + +struct arraylen_certificateType +{ + size_t data; + + +}; + +struct certificateType +{ + uint8_t data[800]; + struct arraylen_certificateType arraylen; + +}; + +struct arraylen_SubCertificatesType +{ + size_t Certificate; + + +}; + +struct SubCertificatesType +{ + struct certificateType Certificate[4]; + struct arraylen_SubCertificatesType arraylen; + +}; + +struct CertificateChainType +{ + struct service_string attr_Id; + struct certificateType Certificate; + struct SubCertificatesType SubCertificates; + struct selection_CertificateChainType isused; + +}; + +struct PaymentDetailsReqType +{ + struct eMAIDType eMAID; + struct CertificateChainType ContractSignatureCertChain; + + +}; + +struct arraylen_genChallengeType +{ + size_t data; + + +}; + +struct genChallengeType +{ + uint8_t data[16]; + struct arraylen_genChallengeType arraylen; + +}; + +struct PaymentDetailsResType +{ + enum responseCodeType ResponseCode; + struct genChallengeType GenChallenge; + int64_t EVSETimeStamp; + + +}; + +struct selection_AuthorizationReqType +{ + unsigned int attr_Id:1; + unsigned int GenChallenge:1; + + +}; + +struct AuthorizationReqType +{ + struct service_string attr_Id; + struct genChallengeType GenChallenge; + struct selection_AuthorizationReqType isused; + +}; + +struct AuthorizationResType +{ + enum responseCodeType ResponseCode; + enum EVSEProcessingType EVSEProcessing; + + +}; + +struct selection_ChargeParameterDiscoveryReqType +{ + unsigned int MaxEntriesSAScheduleTuple:1; + unsigned int AC_EVChargeParameter:1; + unsigned int DC_EVChargeParameter:1; + + +}; + +struct selection_AC_EVChargeParameterType +{ + unsigned int DepartureTime:1; + + +}; + +struct AC_EVChargeParameterType +{ + uint32_t DepartureTime; + struct PhysicalValueType EAmount; + struct PhysicalValueType EVMaxVoltage; + struct PhysicalValueType EVMaxCurrent; + struct PhysicalValueType EVMinCurrent; + struct selection_AC_EVChargeParameterType isused; + +}; + +struct selection_DC_EVChargeParameterType +{ + unsigned int DepartureTime:1; + unsigned int EVMaximumPowerLimit:1; + unsigned int EVEnergyCapacity:1; + unsigned int EVEnergyRequest:1; + unsigned int FullSOC:1; + unsigned int BulkSOC:1; + + +}; + +struct DC_EVStatusType +{ + int EVReady; + enum DC_EVErrorCodeType EVErrorCode; + int8_t EVRESSSOC; + + +}; + +struct DC_EVChargeParameterType +{ + uint32_t DepartureTime; + struct DC_EVStatusType DC_EVStatus; + struct PhysicalValueType EVMaximumCurrentLimit; + struct PhysicalValueType EVMaximumPowerLimit; + struct PhysicalValueType EVMaximumVoltageLimit; + struct PhysicalValueType EVEnergyCapacity; + struct PhysicalValueType EVEnergyRequest; + int8_t FullSOC; + int8_t BulkSOC; + struct selection_DC_EVChargeParameterType isused; + +}; + +struct ChargeParameterDiscoveryReqType +{ + uint16_t MaxEntriesSAScheduleTuple; + enum EnergyTransferModeType RequestedEnergyTransferMode; + struct AC_EVChargeParameterType* AC_EVChargeParameter; + struct DC_EVChargeParameterType* DC_EVChargeParameter; + struct selection_ChargeParameterDiscoveryReqType isused; + +}; + +struct selection_RelativeTimeIntervalType +{ + unsigned int duration:1; + + +}; + +struct RelativeTimeIntervalType +{ + uint32_t start; + uint32_t duration; + struct selection_RelativeTimeIntervalType isused; + +}; + +struct PMaxScheduleEntryType +{ + struct RelativeTimeIntervalType RelativeTimeInterval; + struct PhysicalValueType PMax; + + +}; + +struct arraylen_PMaxScheduleType +{ + size_t PMaxScheduleEntry; + + +}; + +struct PMaxScheduleType +{ + struct PMaxScheduleEntryType PMaxScheduleEntry[48]; /* restricted */ + struct arraylen_PMaxScheduleType arraylen; + +}; + +struct selection_SalesTariffType +{ + unsigned int attr_Id:1; + unsigned int SalesTariffDescription:1; + unsigned int NumEPriceLevels:1; + + +}; + +struct arraylen_tariffDescriptionType +{ + size_t data; + + +}; + +struct tariffDescriptionType +{ + uint32_t data[32]; + struct arraylen_tariffDescriptionType arraylen; + +}; + +struct selection_SalesTariffEntryType +{ + unsigned int EPriceLevel:1; + unsigned int ConsumptionCost:1; + + +}; + +struct selection_CostType +{ + unsigned int amountMultiplier:1; + + +}; + +struct CostType +{ + enum costKindType costKind; + uint32_t amount; + int8_t amountMultiplier; + struct selection_CostType isused; + +}; + +struct arraylen_ConsumptionCostType +{ + size_t Cost; + + +}; + +struct ConsumptionCostType +{ + struct PhysicalValueType startValue; + struct CostType Cost[3]; + struct arraylen_ConsumptionCostType arraylen; + +}; + +struct arraylen_SalesTariffEntryType +{ + size_t ConsumptionCost; + + +}; + +struct SalesTariffEntryType +{ + struct RelativeTimeIntervalType RelativeTimeInterval; + uint8_t EPriceLevel; + struct ConsumptionCostType ConsumptionCost[3]; + struct selection_SalesTariffEntryType isused; struct arraylen_SalesTariffEntryType arraylen; + +}; + +struct arraylen_SalesTariffType +{ + size_t SalesTariffEntry; + + +}; + +struct SalesTariffType +{ + struct service_string attr_Id; + uint8_t SalesTariffID; + struct tariffDescriptionType SalesTariffDescription; + uint8_t NumEPriceLevels; + struct SalesTariffEntryType SalesTariffEntry[24]; /* restricted */ + struct selection_SalesTariffType isused; struct arraylen_SalesTariffType arraylen; + +}; + +struct selection_SAScheduleTupleType +{ + unsigned int SalesTariff:1; + + +}; + +struct SAScheduleTupleType +{ + uint8_t SAScheduleTupleID; + struct PMaxScheduleType PMaxSchedule; + struct SalesTariffType* SalesTariff; + struct selection_SAScheduleTupleType isused; + +}; + +struct arraylen_SAScheduleListType +{ + size_t SAScheduleTuple; + + +}; + +struct SAScheduleListType +{ + struct SAScheduleTupleType SAScheduleTuple[3]; + struct arraylen_SAScheduleListType arraylen; + +}; + +struct selection_ChargeParameterDiscoveryResType +{ + unsigned int SAScheduleList:1; + unsigned int AC_EVSEChargeParameter:1; + unsigned int DC_EVSEChargeParameter:1; + + +}; + +struct AC_EVSEStatusType +{ + uint16_t NotificationMaxDelay; + enum EVSENotificationType EVSENotification; + int RCD; + + +}; + +struct AC_EVSEChargeParameterType +{ + struct AC_EVSEStatusType AC_EVSEStatus; + struct PhysicalValueType EVSENominalVoltage; + struct PhysicalValueType EVSEMaxCurrent; + + +}; + +struct selection_DC_EVSEStatusType +{ + unsigned int EVSEIsolationStatus:1; + + +}; + +struct DC_EVSEStatusType +{ + uint16_t NotificationMaxDelay; + enum EVSENotificationType EVSENotification; + enum isolationLevelType EVSEIsolationStatus; + enum DC_EVSEStatusCodeType EVSEStatusCode; + struct selection_DC_EVSEStatusType isused; + +}; + +struct selection_DC_EVSEChargeParameterType +{ + unsigned int EVSECurrentRegulationTolerance:1; + unsigned int EVSEEnergyToBeDelivered:1; + + +}; + +struct DC_EVSEChargeParameterType +{ + struct DC_EVSEStatusType DC_EVSEStatus; + struct PhysicalValueType EVSEMaximumCurrentLimit; + struct PhysicalValueType EVSEMaximumPowerLimit; + struct PhysicalValueType EVSEMaximumVoltageLimit; + struct PhysicalValueType EVSEMinimumCurrentLimit; + struct PhysicalValueType EVSEMinimumVoltageLimit; + struct PhysicalValueType EVSECurrentRegulationTolerance; + struct PhysicalValueType EVSEPeakCurrentRipple; + struct PhysicalValueType EVSEEnergyToBeDelivered; + struct selection_DC_EVSEChargeParameterType isused; + +}; + +struct ChargeParameterDiscoveryResType +{ + enum responseCodeType ResponseCode; + enum EVSEProcessingType EVSEProcessing; + struct SAScheduleListType* SAScheduleList; + struct AC_EVSEChargeParameterType* AC_EVSEChargeParameter; + struct DC_EVSEChargeParameterType* DC_EVSEChargeParameter; + struct selection_ChargeParameterDiscoveryResType isused; + +}; + +struct selection_ProfileEntryType +{ + unsigned int ChargingProfileEntryMaxNumberOfPhasesInUse:1; + + +}; + +struct ProfileEntryType +{ + uint32_t ChargingProfileEntryStart; + struct PhysicalValueType ChargingProfileEntryMaxPower; + int8_t ChargingProfileEntryMaxNumberOfPhasesInUse; + struct selection_ProfileEntryType isused; + +}; + +struct arraylen_ChargingProfileType +{ + size_t ProfileEntry; + + +}; + +struct ChargingProfileType +{ + struct ProfileEntryType ProfileEntry[24]; + struct arraylen_ChargingProfileType arraylen; + +}; + +struct selection_PowerDeliveryReqType +{ + unsigned int ChargingProfile:1; + unsigned int DC_EVPowerDeliveryParameter:1; + + +}; + +struct selection_DC_EVPowerDeliveryParameterType +{ + unsigned int BulkChargingComplete:1; + + +}; + +struct DC_EVPowerDeliveryParameterType +{ + struct DC_EVStatusType DC_EVStatus; + int BulkChargingComplete; + int ChargingComplete; + struct selection_DC_EVPowerDeliveryParameterType isused; + +}; + +struct PowerDeliveryReqType +{ + enum chargeProgressType ChargeProgress; + uint8_t SAScheduleTupleID; + struct ChargingProfileType ChargingProfile; + struct DC_EVPowerDeliveryParameterType* DC_EVPowerDeliveryParameter; + struct selection_PowerDeliveryReqType isused; + +}; + +struct selection_PowerDeliveryResType +{ + unsigned int AC_EVSEStatus:1; + unsigned int DC_EVSEStatus:1; + + +}; + +struct PowerDeliveryResType +{ + enum responseCodeType ResponseCode; + struct AC_EVSEStatusType* AC_EVSEStatus; + struct DC_EVSEStatusType* DC_EVSEStatus; + struct selection_PowerDeliveryResType isused; + +}; + +struct selection_MeteringReceiptReqType +{ + unsigned int attr_Id:1; + unsigned int SAScheduleTupleID:1; + + +}; + +struct arraylen_meterIDType +{ + size_t data; + + +}; + +struct meterIDType +{ + uint32_t data[32]; + struct arraylen_meterIDType arraylen; + +}; + +struct selection_MeterInfoType +{ + unsigned int MeterReading:1; + unsigned int SigMeterReading:1; + unsigned int MeterStatus:1; + unsigned int TMeter:1; + + +}; + +struct arraylen_sigMeterReadingType +{ + size_t data; + + +}; + +struct sigMeterReadingType +{ + uint8_t data[64]; + struct arraylen_sigMeterReadingType arraylen; + +}; + +struct MeterInfoType +{ + struct meterIDType MeterID; + uint64_t MeterReading; + struct sigMeterReadingType SigMeterReading; + int16_t MeterStatus; + int64_t TMeter; + struct selection_MeterInfoType isused; + +}; + +struct MeteringReceiptReqType +{ + struct service_string attr_Id; + struct sessionIDType SessionID; + uint8_t SAScheduleTupleID; + struct MeterInfoType MeterInfo; + struct selection_MeteringReceiptReqType isused; + +}; + +struct selection_MeteringReceiptResType +{ + unsigned int AC_EVSEStatus:1; + unsigned int DC_EVSEStatus:1; + + +}; + +struct MeteringReceiptResType +{ + enum responseCodeType ResponseCode; + struct AC_EVSEStatusType* AC_EVSEStatus; + struct DC_EVSEStatusType* DC_EVSEStatus; + struct selection_MeteringReceiptResType isused; + +}; + +struct SessionStopReqType +{ + enum chargingSessionType ChargingSession; + + +}; + +struct SessionStopResType +{ + enum responseCodeType ResponseCode; + + +}; + +struct X509IssuerSerialType +{ + struct service_string X509IssuerName; + int64_t X509SerialNumber; + + +}; + +struct arraylen_ListOfRootCertificateIDsType +{ + size_t RootCertificateID; + + +}; + +struct ListOfRootCertificateIDsType +{ + struct X509IssuerSerialType RootCertificateID[20]; + struct arraylen_ListOfRootCertificateIDsType arraylen; + +}; + +struct CertificateUpdateReqType +{ + struct service_string attr_Id; + struct CertificateChainType ContractSignatureCertChain; + struct eMAIDType eMAID; + struct ListOfRootCertificateIDsType ListOfRootCertificateIDs; + + +}; + +struct arraylen_contractSignatureEncryptedPrivateKeyType +{ + size_t data; +}; + +struct ContractSignatureEncryptedPrivateKeyType +{ + struct service_string attr_Id; + uint8_t data[8]; + struct arraylen_contractSignatureEncryptedPrivateKeyType arraylen; + + +}; + +struct arraylen_diffieHellmanPublickeyType +{ + size_t data; +}; + +struct DiffieHellmanPublickeyType +{ + struct service_string attr_Id; + uint8_t data[8]; + struct arraylen_diffieHellmanPublickeyType arraylen; + + +}; + +struct EMAIDType +{ + struct service_string attr_Id; + uint32_t data[15]; + struct arraylen_eMAIDType arraylen; + +}; + +struct selection_CertificateUpdateResType +{ + unsigned int RetryCounter:1; + + +}; + +struct CertificateUpdateResType +{ + enum responseCodeType ResponseCode; + struct CertificateChainType SAProvisioningCertificateChain; + struct CertificateChainType ContractSignatureCertChain; + struct ContractSignatureEncryptedPrivateKeyType ContractSignatureEncryptedPrivateKey; + struct DiffieHellmanPublickeyType DHpublickey; + struct EMAIDType eMAID; + int16_t RetryCounter; + struct selection_CertificateUpdateResType isused; + +}; + +struct CertificateInstallationReqType +{ + struct service_string attr_Id; + struct certificateType OEMProvisioningCert; + struct ListOfRootCertificateIDsType ListOfRootCertificateIDs; + + +}; + +struct CertificateInstallationResType +{ + enum responseCodeType ResponseCode; + struct CertificateChainType SAProvisioningCertificateChain; + struct CertificateChainType ContractSignatureCertChain; + struct ContractSignatureEncryptedPrivateKeyType ContractSignatureEncryptedPrivateKey; + struct DiffieHellmanPublickeyType DHpublickey; + struct EMAIDType eMAID; + + +}; + +struct ChargingStatusReqType +{ + + + int NO_MEMBER:1; + +}; + +struct selection_ChargingStatusResType +{ + unsigned int EVSEMaxCurrent:1; + unsigned int MeterInfo:1; + unsigned int ReceiptRequired:1; + + +}; + +struct ChargingStatusResType +{ + enum responseCodeType ResponseCode; + struct evseIDType EVSEID; + uint8_t SAScheduleTupleID; + struct PhysicalValueType EVSEMaxCurrent; + struct MeterInfoType MeterInfo; + int ReceiptRequired; + struct AC_EVSEStatusType AC_EVSEStatus; + struct selection_ChargingStatusResType isused; + +}; + +struct CableCheckReqType +{ + struct DC_EVStatusType DC_EVStatus; + + +}; + +struct CableCheckResType +{ + enum responseCodeType ResponseCode; + struct DC_EVSEStatusType DC_EVSEStatus; + enum EVSEProcessingType EVSEProcessing; + + +}; + +struct PreChargeReqType +{ + struct DC_EVStatusType DC_EVStatus; + struct PhysicalValueType EVTargetVoltage; + struct PhysicalValueType EVTargetCurrent; + + +}; + +struct PreChargeResType +{ + enum responseCodeType ResponseCode; + struct DC_EVSEStatusType DC_EVSEStatus; + struct PhysicalValueType EVSEPresentVoltage; + + +}; + +struct selection_CurrentDemandReqType +{ + unsigned int EVMaximumVoltageLimit:1; + unsigned int EVMaximumCurrentLimit:1; + unsigned int EVMaximumPowerLimit:1; + unsigned int BulkChargingComplete:1; + unsigned int RemainingTimeToFullSoC:1; + unsigned int RemainingTimeToBulkSoC:1; + + +}; + +struct CurrentDemandReqType +{ + struct DC_EVStatusType DC_EVStatus; + struct PhysicalValueType EVTargetCurrent; + struct PhysicalValueType EVMaximumVoltageLimit; + struct PhysicalValueType EVMaximumCurrentLimit; + struct PhysicalValueType EVMaximumPowerLimit; + int BulkChargingComplete; + int ChargingComplete; + struct PhysicalValueType RemainingTimeToFullSoC; + struct PhysicalValueType RemainingTimeToBulkSoC; + struct PhysicalValueType EVTargetVoltage; + struct selection_CurrentDemandReqType isused; + +}; + +struct selection_CurrentDemandResType +{ + unsigned int EVSEMaximumVoltageLimit:1; + unsigned int EVSEMaximumCurrentLimit:1; + unsigned int EVSEMaximumPowerLimit:1; + unsigned int MeterInfo:1; + unsigned int ReceiptRequired:1; + + +}; + +struct CurrentDemandResType +{ + enum responseCodeType ResponseCode; + struct DC_EVSEStatusType DC_EVSEStatus; + struct PhysicalValueType EVSEPresentVoltage; + struct PhysicalValueType EVSEPresentCurrent; + int EVSECurrentLimitAchieved; + int EVSEVoltageLimitAchieved; + int EVSEPowerLimitAchieved; + struct PhysicalValueType EVSEMaximumVoltageLimit; + struct PhysicalValueType EVSEMaximumCurrentLimit; + struct PhysicalValueType EVSEMaximumPowerLimit; + struct evseIDType EVSEID; + uint8_t SAScheduleTupleID; + struct MeterInfoType MeterInfo; + int ReceiptRequired; + struct selection_CurrentDemandResType isused; + +}; + +struct WeldingDetectionReqType +{ + struct DC_EVStatusType DC_EVStatus; + + +}; + +struct WeldingDetectionResType +{ + enum responseCodeType ResponseCode; + struct DC_EVSEStatusType DC_EVSEStatus; + struct PhysicalValueType EVSEPresentVoltage; + + +}; + +struct BodyType +{ + + struct SessionSetupReqType* SessionSetupReq; + struct SessionSetupResType* SessionSetupRes; + struct ServiceDiscoveryReqType* ServiceDiscoveryReq; + struct ServiceDiscoveryResType* ServiceDiscoveryRes; + struct ServiceDetailReqType* ServiceDetailReq; + struct ServiceDetailResType* ServiceDetailRes; + struct PaymentServiceSelectionReqType* PaymentServiceSelectionReq; + struct PaymentServiceSelectionResType* PaymentServiceSelectionRes; + struct PaymentDetailsReqType* PaymentDetailsReq; + struct PaymentDetailsResType* PaymentDetailsRes; + struct AuthorizationReqType* AuthorizationReq; + struct AuthorizationResType* AuthorizationRes; + struct ChargeParameterDiscoveryReqType* ChargeParameterDiscoveryReq; + struct ChargeParameterDiscoveryResType* ChargeParameterDiscoveryRes; + struct PowerDeliveryReqType* PowerDeliveryReq; + struct PowerDeliveryResType* PowerDeliveryRes; + struct MeteringReceiptReqType* MeteringReceiptReq; + struct MeteringReceiptResType* MeteringReceiptRes; + struct SessionStopReqType* SessionStopReq; + struct SessionStopResType* SessionStopRes; + struct CertificateUpdateReqType* CertificateUpdateReq; + struct CertificateUpdateResType* CertificateUpdateRes; + struct CertificateInstallationReqType* CertificateInstallationReq; + struct CertificateInstallationResType* CertificateInstallationRes; + struct ChargingStatusReqType* ChargingStatusReq; + struct ChargingStatusResType* ChargingStatusRes; + struct CableCheckReqType* CableCheckReq; + struct CableCheckResType* CableCheckRes; + struct PreChargeReqType* PreChargeReq; + struct PreChargeResType* PreChargeRes; + struct CurrentDemandReqType* CurrentDemandReq; + struct CurrentDemandResType* CurrentDemandRes; + struct WeldingDetectionReqType* WeldingDetectionReq; + struct WeldingDetectionResType* WeldingDetectionRes; + + struct selection_BodyType isused; +}; + +struct AnonType_V2G_Message +{ + struct MessageHeaderType* Header; + struct BodyType Body; + + +}; + +struct EXIDocumentType +{ + struct AnonType_V2G_Message V2G_Message; + + +}; + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/src/service/v2g_service.h b/src/service/v2g_service.h new file mode 100644 index 0000000..b2e0317 --- /dev/null +++ b/src/service/v2g_service.h @@ -0,0 +1,83 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_SERVICE_H_ +#define EXI_SERVICE_H_ + +#include "v2g_dataTypes.h" +#include "EXITypes.h" + +struct uniqueIDPath +{ + int id[10]; + size_t pos; +}; + + +struct EXIService +{ + /* 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 exiMsg; + + /* unique id for ambiguous elements */ + struct uniqueIDPath idPath; + + /* error code */ + uint8_t errorCode; + + /* offset for transported header data */ + 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_SERVICE_H_ */ + +#ifdef __cplusplus +} +#endif diff --git a/src/service/v2g_serviceClientDataTransmitter.h b/src/service/v2g_serviceClientDataTransmitter.h new file mode 100644 index 0000000..2735b4d --- /dev/null +++ b/src/service/v2g_serviceClientDataTransmitter.h @@ -0,0 +1,44 @@ + +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef V2G_SERVICECLIENTDATATRANSMITTER_H_ +#define V2G_SERVICECLIENTDATATRANSMITTER_H_ + +#include "EXITypes.h" + +/* This method has to be implemented! + * This method sends EXI stream (outStream) to the EVSE and receives response stream (inStream)*/ +int serviceDataTransmitter(uint8_t* outStream, uint16_t outStreamLength, uint8_t* inStream); + +#endif /* V2G_SERVICECLIENTDATATRANSMITTER_H_ */ + +#ifdef __cplusplus +} +#endif diff --git a/src/service/v2g_serviceClientStubs.c b/src/service/v2g_serviceClientStubs.c new file mode 100644 index 0000000..9d7b289 --- /dev/null +++ b/src/service/v2g_serviceClientStubs.c @@ -0,0 +1,3571 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + + #include "v2g_dataTypes.h" + #include "v2g_dataTypes.c" + #include "v2g_serviceClientStubs.h" + #include "v2g_serviceDataSerialization.c" + #include "v2g_serviceClientDataTransmitter.h" + #include "EXITypes.h" + #include "v2gEXIDecoder.h" + #include "v2gEXIEncoder.h" + #include "v2gQNameDefines.h" + #include + + +uint16_t numberOfLocalStringsDecode[EXI_v2gMAX_NUMBER_OF_QNAMES]; +uint16_t numberOfLocalStringsEncode[EXI_v2gMAX_NUMBER_OF_QNAMES]; + + +static int deserializeMessage(struct EXIService* service); + + +static int _setUnsignedInt64Value(exi_integer_t* iv, uint64_t* int64) { + int errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + *int64 = iv->val.uint8; + break; + case EXI_UNSIGNED_INTEGER_16: + *int64 = iv->val.uint16; + break; + case EXI_UNSIGNED_INTEGER_32: + if (iv->val.uint32 <= 2147483647) { + *int64 = iv->val.uint32; + } else { + errn = -1; + } + break; + case EXI_UNSIGNED_INTEGER_64: + *int64 = iv->val.int32; + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + *int64 = iv->val.int8; + break; + case EXI_INTEGER_16: + *int64 = iv->val.int16; + break; + case EXI_INTEGER_32: + *int64 = iv->val.int32; + break; + case EXI_INTEGER_64: + *int64 = iv->val.int32; + break; + } + return errn; +} + + +static int _setUnsignedInt32Value(exi_integer_t* iv, uint32_t* int32) { + int errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + *int32 = iv->val.uint8; + break; + case EXI_UNSIGNED_INTEGER_16: + *int32 = iv->val.uint16; + break; + case EXI_UNSIGNED_INTEGER_32: + if (iv->val.uint32 <= 2147483647) { + *int32 = iv->val.uint32; + } else { + errn = -1; + } + break; + case EXI_UNSIGNED_INTEGER_64: + errn = -1; + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + *int32 = iv->val.int8; + break; + case EXI_INTEGER_16: + *int32 = iv->val.int16; + break; + case EXI_INTEGER_32: + *int32 = iv->val.int32; + break; + case EXI_INTEGER_64: + errn = -1; + break; + } + return errn; +} + +static int _setInt32Value(exi_integer_t* iv, int32_t* int32) { + int errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + *int32 = iv->val.uint8; + break; + case EXI_UNSIGNED_INTEGER_16: + *int32 = iv->val.uint16; + break; + case EXI_UNSIGNED_INTEGER_32: + if (iv->val.uint32 <= 2147483647) { + *int32 = iv->val.uint32; + } else { + errn = -1; + } + break; + case EXI_UNSIGNED_INTEGER_64: + errn = -1; + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + *int32 = iv->val.int8; + break; + case EXI_INTEGER_16: + *int32 = iv->val.int16; + break; + case EXI_INTEGER_32: + *int32 = iv->val.int32; + break; + case EXI_INTEGER_64: + errn = -1; + break; + } + return errn; +} + +static int _setUnsignedInt16Value(exi_integer_t* iv, uint16_t* uint16) { + int errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + *uint16 = iv->val.uint8; + break; + case EXI_UNSIGNED_INTEGER_16: + *uint16 = iv->val.uint16; + break; + case EXI_UNSIGNED_INTEGER_32: + if (iv->val.uint32 <= 2147483647) { + errn = -1; + } else { + errn = -1; + } + break; + case EXI_UNSIGNED_INTEGER_64: + errn = -1; + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + *uint16 = iv->val.int8; + break; + case EXI_INTEGER_16: + *uint16 = iv->val.int16; + break; + case EXI_INTEGER_32: + errn = -1; + break; + case EXI_INTEGER_64: + errn = -1; + } + return errn; +} + +static int _setInt16Value(exi_integer_t* iv, int16_t* int16) { + int errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + *int16 = iv->val.uint8; + break; + case EXI_UNSIGNED_INTEGER_16: + *int16 = iv->val.int16; + break; + case EXI_UNSIGNED_INTEGER_32: + errn = -1; + break; + case EXI_UNSIGNED_INTEGER_64: + errn = -1; + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + *int16 = iv->val.int8; + break; + case EXI_INTEGER_16: + *int16 = iv->val.int16; + break; + case EXI_INTEGER_32: + errn = -1;; + break; + case EXI_INTEGER_64: + errn = -1; + break; + } + return errn; +} + + + + + +/** + * \brief Prepares the remote sessionSetup call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct SessionSetupReqType* Request data for the server (has to be set up before) + * \param result struct SessionSetupResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_sessionSetup(struct EXIService* service, struct MessageHeaderType* header, struct SessionSetupReqType* params, struct SessionSetupResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.SessionSetupReq = params; + service->exiMsg.V2G_Message.Body.isused.SessionSetupReq=1; + + + service->exiMsg.V2G_Message.Body.SessionSetupRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote serviceDiscovery call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct ServiceDiscoveryReqType* Request data for the server (has to be set up before) + * \param result struct ServiceDiscoveryResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_serviceDiscovery(struct EXIService* service, struct MessageHeaderType* header, struct ServiceDiscoveryReqType* params, struct ServiceDiscoveryResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.ServiceDiscoveryReq = params; + service->exiMsg.V2G_Message.Body.isused.ServiceDiscoveryReq=1; + + + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote serviceDetail call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct ServiceDetailReqType* Request data for the server (has to be set up before) + * \param result struct ServiceDetailResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_serviceDetail(struct EXIService* service, struct MessageHeaderType* header, struct ServiceDetailReqType* params, struct ServiceDetailResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + init_ServiceDetailResType(result); + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.ServiceDetailReq = params; + service->exiMsg.V2G_Message.Body.isused.ServiceDetailReq=1; + + + service->exiMsg.V2G_Message.Body.ServiceDetailRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote paymentServiceSelection 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 + * \return 0 = 0K; -1 = ERROR */ + int prepare_paymentServiceSelection(struct EXIService* service, struct MessageHeaderType* header, struct PaymentServiceSelectionReqType* params, struct PaymentServiceSelectionResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.PaymentServiceSelectionReq = params; + service->exiMsg.V2G_Message.Body.isused.PaymentServiceSelectionReq=1; + + + service->exiMsg.V2G_Message.Body.PaymentServiceSelectionRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote paymentDetails call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct PaymentDetailsReqType* Request data for the server (has to be set up before) + * \param result struct PaymentDetailsResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_paymentDetails(struct EXIService* service, struct MessageHeaderType* header, struct PaymentDetailsReqType* params, struct PaymentDetailsResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.PaymentDetailsReq = params; + service->exiMsg.V2G_Message.Body.isused.PaymentDetailsReq=1; + + + service->exiMsg.V2G_Message.Body.PaymentDetailsRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote authorization 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 + * \return 0 = 0K; -1 = ERROR */ + int prepare_authorization(struct EXIService* service, struct MessageHeaderType* header, struct AuthorizationReqType* params, struct AuthorizationResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.AuthorizationReq = params; + service->exiMsg.V2G_Message.Body.isused.AuthorizationReq=1; + + + service->exiMsg.V2G_Message.Body.AuthorizationRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote chargeParameterDiscovery call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct ChargeParameterDiscoveryReqType* Request data for the server (has to be set up before) + * \param result struct ChargeParameterDiscoveryResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_chargeParameterDiscovery(struct EXIService* service, struct MessageHeaderType* header, struct ChargeParameterDiscoveryReqType* params, struct ChargeParameterDiscoveryResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq = params; + service->exiMsg.V2G_Message.Body.isused.ChargeParameterDiscoveryReq=1; + + + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote powerDelivery call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct PowerDeliveryReqType* Request data for the server (has to be set up before) + * \param result struct PowerDeliveryResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_powerDelivery(struct EXIService* service, struct MessageHeaderType* header, struct PowerDeliveryReqType* params, struct PowerDeliveryResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.PowerDeliveryReq = params; + service->exiMsg.V2G_Message.Body.isused.PowerDeliveryReq=1; + + + service->exiMsg.V2G_Message.Body.PowerDeliveryRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote chargingStatus call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param result struct ChargingStatusResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_chargingStatus(struct EXIService* service, struct MessageHeaderType* header, struct ChargingStatusResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.isused.ChargingStatusReq=1; + + + service->exiMsg.V2G_Message.Body.ChargingStatusRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote meteringReceipt call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct MeteringReceiptReqType* Request data for the server (has to be set up before) + * \param result struct MeteringReceiptResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_meteringReceipt(struct EXIService* service, struct MessageHeaderType* header, struct MeteringReceiptReqType* params, struct MeteringReceiptResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.MeteringReceiptReq = params; + service->exiMsg.V2G_Message.Body.isused.MeteringReceiptReq=1; + + + service->exiMsg.V2G_Message.Body.MeteringReceiptRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote certificateUpdate call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct CertificateUpdateReqType* Request data for the server (has to be set up before) + * \param result struct CertificateUpdateResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_certificateUpdate(struct EXIService* service, struct MessageHeaderType* header, struct CertificateUpdateReqType* params, struct CertificateUpdateResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.CertificateUpdateReq = params; + service->exiMsg.V2G_Message.Body.isused.CertificateUpdateReq=1; + + + service->exiMsg.V2G_Message.Body.CertificateUpdateRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote certificateInstallation call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct CertificateInstallationReqType* Request data for the server (has to be set up before) + * \param result struct CertificateInstallationResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_certificateInstallation(struct EXIService* service, struct MessageHeaderType* header, struct CertificateInstallationReqType* params, struct CertificateInstallationResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.CertificateInstallationReq = params; + service->exiMsg.V2G_Message.Body.isused.CertificateInstallationReq=1; + + + service->exiMsg.V2G_Message.Body.CertificateInstallationRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote cableCheck call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct CableCheckReqType* Request data for the server (has to be set up before) + * \param result struct CableCheckResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_cableCheck(struct EXIService* service, struct MessageHeaderType* header, struct CableCheckReqType* params, struct CableCheckResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.CableCheckReq = params; + service->exiMsg.V2G_Message.Body.isused.CableCheckReq=1; + + + service->exiMsg.V2G_Message.Body.CableCheckRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote preCharge call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct PreChargeReqType* Request data for the server (has to be set up before) + * \param result struct PreChargeResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_preCharge(struct EXIService* service, struct MessageHeaderType* header, struct PreChargeReqType* params, struct PreChargeResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.PreChargeReq = params; + service->exiMsg.V2G_Message.Body.isused.PreChargeReq=1; + + + service->exiMsg.V2G_Message.Body.PreChargeRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote currentDemand call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct CurrentDemandReqType* Request data for the server (has to be set up before) + * \param result struct CurrentDemandResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_currentDemand(struct EXIService* service, struct MessageHeaderType* header, struct CurrentDemandReqType* params, struct CurrentDemandResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.CurrentDemandReq = params; + service->exiMsg.V2G_Message.Body.isused.CurrentDemandReq=1; + + + service->exiMsg.V2G_Message.Body.CurrentDemandRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \brief Prepares the remote weldingDetection call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct WeldingDetectionReqType* Request data for the server (has to be set up before) + * \param result struct WeldingDetectionResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_weldingDetection(struct EXIService* service, struct MessageHeaderType* header, struct WeldingDetectionReqType* params, struct WeldingDetectionResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.WeldingDetectionReq = params; + service->exiMsg.V2G_Message.Body.isused.WeldingDetectionReq=1; + + + service->exiMsg.V2G_Message.Body.WeldingDetectionRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } +/** + * \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 + * \return 0 = 0K; -1 = ERROR */ + int prepare_sessionStop(struct EXIService* service, struct MessageHeaderType* header, struct SessionStopReqType* params, struct SessionStopResType* result) +{ + exi_name_table_runtime_t runtimeTableEncode; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* init uniqueID stack */ + service->idPath.pos=0; + + /* init outStream data structure */ + *(service->outStream.pos) = service->transportHeaderOffset; + service->outStream.buffer = 0; + service->outStream.capacity = 8; + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + + + + + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + + + /* assign data to service data structure */ + service->exiMsg.V2G_Message.Header = header; + service->exiMsg.V2G_Message.Body.SessionStopReq = params; + service->exiMsg.V2G_Message.Body.isused.SessionStopReq=1; + + + service->exiMsg.V2G_Message.Body.SessionStopRes = result; + + + + /* encode data to exi stream*/ + if(serialize_message(service)) + { + + service->errorCode = EXI_SERIALIZATION_FAILED; + return -1; + } + + *(service->outStream.pos) -= service->transportHeaderOffset; + + return 0; + } + + + + /** + * \brief Determines which response message was received + * \param service struct EXIService* Service data structure (has to be initialized before) + * \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; -1 = ERROR */ +int determineResponseMessage(struct EXIService* service, enum responseMessages* respMsg) +{ + + uint32_t posDecode; + exi_name_table_runtime_t runtimeTableDecode; + exi_value_table_t stringTableDecode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsDecode}; + + + /* init inStream data structure */ + posDecode = service->transportHeaderOffset; + service->inStream.pos = &posDecode; + service->inStream.buffer=0; + service->inStream.capacity=0; + + /* init decoder (read header, set initial state) */ + /* init runtime table */ + exiInitNameTableRuntime(&runtimeTableDecode); +/* exiv2gInitDecoder(&(service->inStream), &(service->stateDecode), runtimeTableDecode); */ + exiv2gInitDecoder(&(service->inStream), &(service->stateDecode), runtimeTableDecode,stringTableDecode); + + + + /* deserilize the response message */ + if(deserializeMessage(service)<0) + { + + service->errorCode = EXI_DESERIALIZATION_FAILED; + return -1; + } + + if(service->exiMsg.V2G_Message.Body.isused.SessionSetupRes) + *respMsg = SESSIONSETUPRES; + else if(service->exiMsg.V2G_Message.Body.isused.ServiceDiscoveryRes) + *respMsg = SERVICEDISCOVERYRES; + else if(service->exiMsg.V2G_Message.Body.isused.ServiceDetailRes) + *respMsg = SERVICEDETAILRES; + else if(service->exiMsg.V2G_Message.Body.isused.PaymentServiceSelectionRes) + *respMsg = PAYMENTSERVICESELECTIONRES; + else if(service->exiMsg.V2G_Message.Body.isused.PaymentDetailsRes) + *respMsg = PAYMENTDETAILSRES; + else if(service->exiMsg.V2G_Message.Body.isused.AuthorizationRes) + *respMsg = AUTHORIZATIONRES; + else if(service->exiMsg.V2G_Message.Body.isused.ChargeParameterDiscoveryRes) + *respMsg = CHARGEPARAMETERDISCOVERYRES; + else if(service->exiMsg.V2G_Message.Body.isused.PowerDeliveryRes) + *respMsg = POWERDELIVERYRES; + else if(service->exiMsg.V2G_Message.Body.isused.ChargingStatusRes) + *respMsg = CHARGINGSTATUSRES; + else if(service->exiMsg.V2G_Message.Body.isused.MeteringReceiptRes) + *respMsg = METERINGRECEIPTRES; + else if(service->exiMsg.V2G_Message.Body.isused.SessionStopRes) + *respMsg = SESSIONSTOPRES; + else if(service->exiMsg.V2G_Message.Body.isused.CertificateUpdateRes) + *respMsg = CERTIFICATEUPDATERES; + else if(service->exiMsg.V2G_Message.Body.isused.CertificateInstallationRes) + *respMsg = CERTIFICATEINSTALLATIONRES; + else if(service->exiMsg.V2G_Message.Body.isused.CableCheckRes) + *respMsg = CABLECHECKRES; + else if(service->exiMsg.V2G_Message.Body.isused.PreChargeRes) + *respMsg = PRECHARGERES; + else if(service->exiMsg.V2G_Message.Body.isused.CurrentDemandRes) + *respMsg = CURRENTDEMANDRES; + else if(service->exiMsg.V2G_Message.Body.isused.WeldingDetectionRes) + *respMsg = WELDINGDETECTIONRES; + + return 0; +} + + + /** + * Deserialize an element value of the EXI stream and assign it to the + * service data structure + */ +static int deserializeElementAttributeCharacter(struct EXIService* service) +{ + + switch(service->qnameID) { + case 332: /* FaultCode */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + service->exiMsg.V2G_Message.Header->Notification.FaultCode=service->val.enumeration; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 333: /* FaultMsg */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.V2G_Message.Header->Notification.FaultMsg.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Notification.FaultMsg.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Notification.isused.FaultMsg=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 0: /* attr_Algorithm */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if( service->idPath.id[4] == 59) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.CanonicalizationMethod.attr_Algorithm.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.CanonicalizationMethod.attr_Algorithm.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[4] == 102) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.SignatureMethod.attr_Algorithm.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.SignatureMethod.attr_Algorithm.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[4] == 93) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].DigestMethod.attr_Algorithm.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].DigestMethod.attr_Algorithm.arraylen.data = service->val.str.miss.len; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 2: /* attr_Id */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if(service->idPath.id[3] == 109) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignatureValue.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignatureValue.attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->SignatureValue.isused.attr_Id=1; + + } else if(service->idPath.id[4] == 93) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].isused.attr_Id=1; + + } if(service->idPath.id[3] == 111) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.isused.attr_Id=1; + + } else if( service->idPath.id[2] == 101) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->isused.attr_Id=1; + + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + + case 5: /* attr_Type */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_Type.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_Type.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].isused.attr_Type=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 6: /* attr_URI */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_URI.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_URI.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].isused.attr_URI=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 66: /* DigestValue */ + + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].DigestValue.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].DigestValue.arraylen.data = service->val.binary.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 447: /* SessionID */ + + if(service->val.type == EXI_DATATYPE_BINARY_HEX) + { + memcpy(service->exiMsg.V2G_Message.Header->SessionID.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Header->SessionID.arraylen.data = service->val.binary.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 221: /* ResponseCode */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + if( service->idPath.id[2] == 234) + { + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.ServiceDiscoveryRes=1; + } else if(service->idPath.id[2] == 207) + { + service->exiMsg.V2G_Message.Body.PaymentServiceSelectionRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.PaymentServiceSelectionRes=1; + } else if(service->idPath.id[2] == 211) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.PowerDeliveryRes=1; + } else if(service->idPath.id[2] == 197) + { + service->exiMsg.V2G_Message.Body.MeteringReceiptRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.MeteringReceiptRes=1; + } else if(service->idPath.id[2] == 247) + { + service->exiMsg.V2G_Message.Body.SessionStopRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.SessionStopRes=1; + } else if(service->idPath.id[2] == 144) + { + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.CertificateInstallationRes=1; + } else if(service->idPath.id[2] == 215) + { + service->exiMsg.V2G_Message.Body.PreChargeRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.PreChargeRes=1; + } else if(service->idPath.id[2] == 251) + { + service->exiMsg.V2G_Message.Body.WeldingDetectionRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.WeldingDetectionRes=1; + } else if(service->idPath.id[2] == 230) + { + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.ServiceDetailRes=1; + } else if(service->idPath.id[2] == 132) + { + service->exiMsg.V2G_Message.Body.AuthorizationRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.AuthorizationRes=1; + } else if(service->idPath.id[2] == 152) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.ChargeParameterDiscoveryRes=1; + } else if(service->idPath.id[2] == 148) + { + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.CertificateUpdateRes=1; + } else if(service->idPath.id[2] == 140) + { + service->exiMsg.V2G_Message.Body.CableCheckRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.CableCheckRes=1; + } else if(service->idPath.id[2] == 243) + { + service->exiMsg.V2G_Message.Body.SessionSetupRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.SessionSetupRes=1; + } else if(service->idPath.id[2] == 202) + { + service->exiMsg.V2G_Message.Body.PaymentDetailsRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.PaymentDetailsRes=1; + } else if(service->idPath.id[2] == 161) + { + service->exiMsg.V2G_Message.Body.ChargingStatusRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.ChargingStatusRes=1; + } else if(service->idPath.id[2] == 167) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->ResponseCode=service->val.enumeration; + service->exiMsg.V2G_Message.Body.isused.CurrentDemandRes=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 177: /* EVSEID */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if( service->idPath.id[2] == 243) + { + memcpy(service->exiMsg.V2G_Message.Body.SessionSetupRes->EVSEID.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.SessionSetupRes->EVSEID.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[2] == 161) + { + memcpy(service->exiMsg.V2G_Message.Body.ChargingStatusRes->EVSEID.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.ChargingStatusRes->EVSEID.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[2] == 167) + { + memcpy(service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEID.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEID.arraylen.data = service->val.str.miss.len; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 186: /* EVSETimeStamp */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + if( service->idPath.id[2] == 243) + { + service->exiMsg.V2G_Message.Body.SessionSetupRes->EVSETimeStamp=service->val.integer.val.int64; + service->exiMsg.V2G_Message.Body.SessionSetupRes->isused.EVSETimeStamp=1; + + } else if(service->idPath.id[2] == 202) + { + service->exiMsg.V2G_Message.Body.PaymentDetailsRes->EVSETimeStamp=service->val.integer.val.int64; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 358: /* PaymentOption */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->PaymentOptionList.PaymentOption[service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->PaymentOptionList.arraylen.PaymentOption]=service->val.enumeration; + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->PaymentOptionList.arraylen.PaymentOption++; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 328: /* EnergyTransferMode */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.SupportedEnergyTransferMode.EnergyTransferMode[service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.SupportedEnergyTransferMode.arraylen.EnergyTransferMode]=service->val.enumeration; + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.SupportedEnergyTransferMode.arraylen.EnergyTransferMode++; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 386: /* ServiceID */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if( service->idPath.id[3] == 155) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.ServiceID=service->val.integer.val.uint16; + } else if(service->idPath.id[3] == 237) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.Service[service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.arraylen.Service].ServiceID=service->val.integer.val.uint16; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 388: /* ServiceName */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if( service->idPath.id[3] == 155) + { + memcpy(service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.ServiceName.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.ServiceName.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.isused.ServiceName=1; + + } else if(service->idPath.id[3] == 237) + { + memcpy(service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.Service[service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.arraylen.Service].ServiceName.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.Service[service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.arraylen.Service].ServiceName.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.Service[service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.arraylen.Service].isused.ServiceName=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 385: /* ServiceCategory */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + if( service->idPath.id[3] == 155) + { + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.ServiceCategory=service->val.enumeration; + } else if(service->idPath.id[3] == 237) + { + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.Service[service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.arraylen.Service].ServiceCategory=service->val.enumeration; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 390: /* ServiceScope */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if( service->idPath.id[3] == 155) + { + memcpy(service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.ServiceScope.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.ServiceScope.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.isused.ServiceScope=1; + + } else if(service->idPath.id[3] == 237) + { + memcpy(service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.Service[service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.arraylen.Service].ServiceScope.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.Service[service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.arraylen.Service].ServiceScope.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.Service[service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.arraylen.Service].isused.ServiceScope=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 334: /* FreeService */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + if( service->idPath.id[3] == 155) + { + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ChargeService.FreeService=service->val.boolean; + } else if(service->idPath.id[3] == 237) + { + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.Service[service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.arraylen.Service].FreeService=service->val.boolean; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 343: /* Multiplier */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + if( service->idPath.id[2] == 161) + { + service->exiMsg.V2G_Message.Body.ChargingStatusRes->EVSEMaxCurrent.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 215) + { + service->exiMsg.V2G_Message.Body.PreChargeRes->EVSEPresentVoltage.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 167 && service->idPath.id[3] == 184) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEPresentVoltage.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[3] == 183) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEPresentCurrent.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[3] == 181) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEMaximumVoltageLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[3] == 179) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEMaximumCurrentLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[3] == 180) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEMaximumPowerLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 251) + { + service->exiMsg.V2G_Message.Body.WeldingDetectionRes->EVSEPresentVoltage.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 318) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->AC_EVSEChargeParameter->EVSENominalVoltage.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 312) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->AC_EVSEChargeParameter->EVSEMaxCurrent.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 313) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMaximumCurrentLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 314) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMaximumPowerLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 315) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMaximumVoltageLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 316) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMinimumCurrentLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 317) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMinimumVoltageLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 309) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSECurrentRegulationTolerance.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 321) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEPeakCurrentRipple.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 310) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEEnergyToBeDelivered.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[5] == 349) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.PMaxScheduleEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.arraylen.PMaxScheduleEntry].PMax.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[5] == 375) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].startValue.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 230) + { + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].physicalValue.Multiplier=service->val.integer.val.int8; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 399: /* Unit */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + if( service->idPath.id[2] == 161) + { + service->exiMsg.V2G_Message.Body.ChargingStatusRes->EVSEMaxCurrent.Unit=service->val.enumeration; + } else if(service->idPath.id[2] == 215) + { + service->exiMsg.V2G_Message.Body.PreChargeRes->EVSEPresentVoltage.Unit=service->val.enumeration; + } else if(service->idPath.id[2] == 167 && service->idPath.id[3] == 184) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEPresentVoltage.Unit=service->val.enumeration; + } else if(service->idPath.id[3] == 183) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEPresentCurrent.Unit=service->val.enumeration; + } else if(service->idPath.id[3] == 181) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEMaximumVoltageLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[3] == 179) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEMaximumCurrentLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[3] == 180) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEMaximumPowerLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[2] == 251) + { + service->exiMsg.V2G_Message.Body.WeldingDetectionRes->EVSEPresentVoltage.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 318) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->AC_EVSEChargeParameter->EVSENominalVoltage.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 312) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->AC_EVSEChargeParameter->EVSEMaxCurrent.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 313) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMaximumCurrentLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 314) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMaximumPowerLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 315) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMaximumVoltageLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 316) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMinimumCurrentLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 317) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMinimumVoltageLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 309) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSECurrentRegulationTolerance.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 321) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEPeakCurrentRipple.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 310) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEEnergyToBeDelivered.Unit=service->val.enumeration; + } else if(service->idPath.id[5] == 349) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.PMaxScheduleEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.arraylen.PMaxScheduleEntry].PMax.Unit=service->val.enumeration; + } else if(service->idPath.id[5] == 375) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].startValue.Unit=service->val.enumeration; + } else if(service->idPath.id[2] == 230) + { + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].physicalValue.Unit=service->val.enumeration; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 400: /* Value */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + if( service->idPath.id[2] == 161) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargingStatusRes->EVSEMaxCurrent.Value=service->val.integer.val.int16; + } else if(service->idPath.id[2] == 215) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.PreChargeRes->EVSEPresentVoltage.Value=service->val.integer.val.int16; + } else if(service->idPath.id[2] == 167 && service->idPath.id[3] == 184) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEPresentVoltage.Value=service->val.integer.val.int16; + } else if(service->idPath.id[3] == 183) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEPresentCurrent.Value=service->val.integer.val.int16; + } else if(service->idPath.id[3] == 181) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEMaximumVoltageLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[3] == 179) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEMaximumCurrentLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[3] == 180) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEMaximumPowerLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[2] == 251) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.WeldingDetectionRes->EVSEPresentVoltage.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 318) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->AC_EVSEChargeParameter->EVSENominalVoltage.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 312) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->AC_EVSEChargeParameter->EVSEMaxCurrent.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 313) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMaximumCurrentLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 314) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMaximumPowerLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 315) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMaximumVoltageLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 316) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMinimumCurrentLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 317) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEMinimumVoltageLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 309) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSECurrentRegulationTolerance.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 321) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEPeakCurrentRipple.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 310) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->EVSEEnergyToBeDelivered.Value=service->val.integer.val.int16; + } else if(service->idPath.id[5] == 349) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.PMaxScheduleEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.arraylen.PMaxScheduleEntry].PMax.Value=service->val.integer.val.int16; + } else if(service->idPath.id[5] == 375) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].startValue.Value=service->val.integer.val.int16; + } else if(service->idPath.id[2] == 230) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].physicalValue.Value=service->val.integer.val.int16; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 344: /* attr_Name */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].attr_Name.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].attr_Name.arraylen.data = service->val.str.miss.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 403: /* boolValue */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].boolValue=service->val.boolean; + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].isused.boolValue=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 404: /* byteValue */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].byteValue=service->val.integer.val.int8; + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].isused.byteValue=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 433: /* shortValue */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].shortValue=service->val.integer.val.int16; + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].isused.shortValue=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 418: /* intValue */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + if(_setInt32Value(&(service->val.integer),&(service->val.integer.val.int32))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].intValue=service->val.integer.val.int32; + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].isused.intValue=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 437: /* stringValue */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].stringValue.data , service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].stringValue.arraylen.data = service->val.str.miss.len; + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].isused.stringValue=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 355: /* ParameterSetID */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].ParameterSetID=service->val.integer.val.int16; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 236: /* ServiceID */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceID=service->val.integer.val.uint16; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 336: /* attr_Id */ + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + if(service->idPath.id[2] == 144 && service->idPath.id[3] == 164) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureEncryptedPrivateKey.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureEncryptedPrivateKey.arraylen.data = service->val.binary.len; + } + else if(service->idPath.id[2] == 144 && service->idPath.id[3] == 171) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->DHpublickey.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->DHpublickey.arraylen.data = service->val.binary.len; + + } + + + } else if(service->val.type == EXI_DATATYPE_STRING) + { + if( service->idPath.id[2] == 148 && service->idPath.id[3] == 223) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateRes->SAProvisioningCertificateChain.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->SAProvisioningCertificateChain.attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->SAProvisioningCertificateChain.isused.attr_Id=1; + + } else if(service->idPath.id[2] == 148 && service->idPath.id[3] == 163) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateRes->ContractSignatureCertChain.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->ContractSignatureCertChain.attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->ContractSignatureCertChain.isused.attr_Id=1; + + } else if(service->idPath.id[2] == 144 && service->idPath.id[3] == 223) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->SAProvisioningCertificateChain.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->SAProvisioningCertificateChain.attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->SAProvisioningCertificateChain.isused.attr_Id=1; + + } else if(service->idPath.id[2] == 144 && service->idPath.id[3] == 163) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureCertChain.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureCertChain.attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureCertChain.isused.attr_Id=1; + + } else if(service->idPath.id[2] == 144 && service->idPath.id[3] == 164) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureEncryptedPrivateKey.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureEncryptedPrivateKey.attr_Id.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[2] == 144 && service->idPath.id[3] == 171) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->DHpublickey.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->DHpublickey.attr_Id.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[2] == 144 && service->idPath.id[3] == 253) + { + if(service->event==EXI_EVENT_ATTRIBUTE) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->eMAID.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->eMAID.attr_Id.arraylen.data = service->val.str.miss.len; + } else + { + + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->eMAID.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->eMAID.arraylen.data = service->val.str.miss.len; + } + + } else if(service->idPath.id[2] == 148 && service->idPath.id[3] == 164) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateRes->ContractSignatureEncryptedPrivateKey.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->ContractSignatureEncryptedPrivateKey.attr_Id.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[2] == 148 && service->idPath.id[3] == 171) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateRes->DHpublickey.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->DHpublickey.attr_Id.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[2] == 148 && service->idPath.id[3] == 253) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateRes->eMAID.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->eMAID.attr_Id.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[2] == 200) + { + memcpy(service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.isused.attr_Id=1; + + } else if(service->idPath.id[2] == 152) + { + memcpy(service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->isused.attr_Id=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 262: /* Certificate */ + + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + if( service->idPath.id[2] == 148 && service->idPath.id[3] == 223) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateRes->SAProvisioningCertificateChain.Certificate.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->SAProvisioningCertificateChain.Certificate.arraylen.data = service->val.binary.len; + + } else if(service->idPath.id[2] == 148 && service->idPath.id[3] == 163) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateRes->ContractSignatureCertChain.Certificate.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->ContractSignatureCertChain.Certificate.arraylen.data = service->val.binary.len; + + } else if(service->idPath.id[2] == 144 && service->idPath.id[4] == 393 && service->idPath.id[3] == 223) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->SAProvisioningCertificateChain.SubCertificates.Certificate[service->exiMsg.V2G_Message.Body.CertificateInstallationRes->SAProvisioningCertificateChain.SubCertificates.arraylen.Certificate].data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->SAProvisioningCertificateChain.SubCertificates.Certificate[service->exiMsg.V2G_Message.Body.CertificateInstallationRes->SAProvisioningCertificateChain.SubCertificates.arraylen.Certificate++].arraylen.data = service->val.binary.len; + + } + + else if(service->idPath.id[2] == 144 && service->idPath.id[3] == 223) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->SAProvisioningCertificateChain.Certificate.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->SAProvisioningCertificateChain.Certificate.arraylen.data = service->val.binary.len; + + } else if(service->idPath.id[2] == 144 && service->idPath.id[4] == 393 && service->idPath.id[3] == 163) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureCertChain.SubCertificates.Certificate[service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureCertChain.SubCertificates.arraylen.Certificate].data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureCertChain.SubCertificates.Certificate[service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureCertChain.SubCertificates.arraylen.Certificate++].arraylen.data = service->val.binary.len; + + + } + else if(service->idPath.id[2] == 144 && service->idPath.id[3] == 163) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureCertChain.Certificate.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CertificateInstallationRes->ContractSignatureCertChain.Certificate.arraylen.data = service->val.binary.len; + + } else if(service->idPath.id[2] == 200) + { + memcpy(service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.Certificate.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.Certificate.arraylen.data = service->val.binary.len; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 190: /* GenChallenge */ + + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + memcpy(service->exiMsg.V2G_Message.Body.PaymentDetailsRes->GenChallenge.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.PaymentDetailsRes->GenChallenge.arraylen.data = service->val.binary.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 185: /* EVSEProcessing */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + if( service->idPath.id[2] == 132) + { + service->exiMsg.V2G_Message.Body.AuthorizationRes->EVSEProcessing=service->val.enumeration; + } else if(service->idPath.id[2] == 152) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->EVSEProcessing=service->val.enumeration; + } else if(service->idPath.id[2] == 140) + { + service->exiMsg.V2G_Message.Body.CableCheckRes->EVSEProcessing=service->val.enumeration; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 435: /* start */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if( service->idPath.id[5] == 375) + { + if(_setUnsignedInt32Value(&(service->val.integer),&(service->val.integer.val.uint32))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].RelativeTimeInterval.start=service->val.integer.val.uint32; + } else if(service->idPath.id[5] == 349) + { + if(_setUnsignedInt32Value(&(service->val.integer),&(service->val.integer.val.uint32))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.PMaxScheduleEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.arraylen.PMaxScheduleEntry].RelativeTimeInterval.start=service->val.integer.val.uint32; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 411: /* duration */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if( service->idPath.id[5] == 375) + { + if(_setUnsignedInt32Value(&(service->val.integer),&(service->val.integer.val.uint32))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].RelativeTimeInterval.duration=service->val.integer.val.uint32; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].RelativeTimeInterval.isused.duration=1; + + } else if(service->idPath.id[5] == 349) + { + if(_setUnsignedInt32Value(&(service->val.integer),&(service->val.integer.val.uint32))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.PMaxScheduleEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.arraylen.PMaxScheduleEntry].RelativeTimeInterval.duration=service->val.integer.val.uint32; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.PMaxScheduleEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.arraylen.PMaxScheduleEntry].RelativeTimeInterval.isused.duration=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 408: /* costKind */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].Cost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].arraylen.Cost].costKind=service->val.enumeration; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 401: /* amount */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if(_setUnsignedInt32Value(&(service->val.integer),&(service->val.integer.val.uint32))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].Cost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].arraylen.Cost].amount=service->val.integer.val.uint32; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 402: /* amountMultiplier */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].Cost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].arraylen.Cost].amountMultiplier=service->val.integer.val.int8; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].Cost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].arraylen.Cost].isused.amountMultiplier=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 291: /* EPriceLevel */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].EPriceLevel=service->val.integer.val.uint8; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].isused.EPriceLevel=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 379: /* SalesTariffID */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffID=service->val.integer.val.uint8; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 376: /* SalesTariffDescription */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffDescription.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffDescription.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->isused.SalesTariffDescription=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 347: /* NumEPriceLevels */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->NumEPriceLevels=service->val.integer.val.uint8; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->isused.NumEPriceLevels=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 371: /* SAScheduleTupleID */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SAScheduleTupleID=service->val.integer.val.uint8; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 345: /* NotificationMaxDelay */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if( service->idPath.id[2] == 211 && service->idPath.id[3] == 258) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.PowerDeliveryRes->AC_EVSEStatus->NotificationMaxDelay=service->val.integer.val.uint16; + } else if(service->idPath.id[2] == 197 && service->idPath.id[3] == 258) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.MeteringReceiptRes->AC_EVSEStatus->NotificationMaxDelay=service->val.integer.val.uint16; + } else if(service->idPath.id[2] == 161) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargingStatusRes->AC_EVSEStatus.NotificationMaxDelay=service->val.integer.val.uint16; + } else if(service->idPath.id[2] == 211 && service->idPath.id[3] == 282) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.PowerDeliveryRes->DC_EVSEStatus->NotificationMaxDelay=service->val.integer.val.uint16; + } else if(service->idPath.id[2] == 197 && service->idPath.id[3] == 282) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.MeteringReceiptRes->DC_EVSEStatus->NotificationMaxDelay=service->val.integer.val.uint16; + } else if(service->idPath.id[2] == 140) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CableCheckRes->DC_EVSEStatus.NotificationMaxDelay=service->val.integer.val.uint16; + } else if(service->idPath.id[2] == 215) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.PreChargeRes->DC_EVSEStatus.NotificationMaxDelay=service->val.integer.val.uint16; + } else if(service->idPath.id[2] == 167) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandRes->DC_EVSEStatus.NotificationMaxDelay=service->val.integer.val.uint16; + } else if(service->idPath.id[2] == 251) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.WeldingDetectionRes->DC_EVSEStatus.NotificationMaxDelay=service->val.integer.val.uint16; + } else if(service->idPath.id[3] == 256) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->AC_EVSEChargeParameter->AC_EVSEStatus.NotificationMaxDelay=service->val.integer.val.uint16; + } else if(service->idPath.id[3] == 280) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->DC_EVSEStatus.NotificationMaxDelay=service->val.integer.val.uint16; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 319: /* EVSENotification */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + if( service->idPath.id[2] == 211 && service->idPath.id[3] == 258) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryRes->AC_EVSEStatus->EVSENotification=service->val.enumeration; + } else if(service->idPath.id[2] == 197 && service->idPath.id[3] == 258) + { + service->exiMsg.V2G_Message.Body.MeteringReceiptRes->AC_EVSEStatus->EVSENotification=service->val.enumeration; + } else if(service->idPath.id[2] == 161) + { + service->exiMsg.V2G_Message.Body.ChargingStatusRes->AC_EVSEStatus.EVSENotification=service->val.enumeration; + } else if(service->idPath.id[2] == 211 && service->idPath.id[3] == 282) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryRes->DC_EVSEStatus->EVSENotification=service->val.enumeration; + } else if(service->idPath.id[2] == 197 && service->idPath.id[3] == 282) + { + service->exiMsg.V2G_Message.Body.MeteringReceiptRes->DC_EVSEStatus->EVSENotification=service->val.enumeration; + } else if(service->idPath.id[2] == 140) + { + service->exiMsg.V2G_Message.Body.CableCheckRes->DC_EVSEStatus.EVSENotification=service->val.enumeration; + } else if(service->idPath.id[2] == 215) + { + service->exiMsg.V2G_Message.Body.PreChargeRes->DC_EVSEStatus.EVSENotification=service->val.enumeration; + } else if(service->idPath.id[2] == 167) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->DC_EVSEStatus.EVSENotification=service->val.enumeration; + } else if(service->idPath.id[2] == 251) + { + service->exiMsg.V2G_Message.Body.WeldingDetectionRes->DC_EVSEStatus.EVSENotification=service->val.enumeration; + } else if(service->idPath.id[3] == 256) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->AC_EVSEChargeParameter->AC_EVSEStatus.EVSENotification=service->val.enumeration; + } else if(service->idPath.id[3] == 280) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->DC_EVSEStatus.EVSENotification=service->val.enumeration; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 363: /* RCD */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + if( service->idPath.id[2] == 211) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryRes->AC_EVSEStatus->RCD=service->val.boolean; + } else if(service->idPath.id[2] == 197) + { + service->exiMsg.V2G_Message.Body.MeteringReceiptRes->AC_EVSEStatus->RCD=service->val.boolean; + } else if(service->idPath.id[2] == 161) + { + service->exiMsg.V2G_Message.Body.ChargingStatusRes->AC_EVSEStatus.RCD=service->val.boolean; + } else if(service->idPath.id[2] == 152) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->AC_EVSEChargeParameter->AC_EVSEStatus.RCD=service->val.boolean; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 311: /* EVSEIsolationStatus */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + if( service->idPath.id[2] == 211) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryRes->DC_EVSEStatus->EVSEIsolationStatus=service->val.enumeration; + service->exiMsg.V2G_Message.Body.PowerDeliveryRes->DC_EVSEStatus->isused.EVSEIsolationStatus=1; + + } else if(service->idPath.id[2] == 197) + { + service->exiMsg.V2G_Message.Body.MeteringReceiptRes->DC_EVSEStatus->EVSEIsolationStatus=service->val.enumeration; + service->exiMsg.V2G_Message.Body.MeteringReceiptRes->DC_EVSEStatus->isused.EVSEIsolationStatus=1; + + } else if(service->idPath.id[2] == 140) + { + service->exiMsg.V2G_Message.Body.CableCheckRes->DC_EVSEStatus.EVSEIsolationStatus=service->val.enumeration; + service->exiMsg.V2G_Message.Body.CableCheckRes->DC_EVSEStatus.isused.EVSEIsolationStatus=1; + + } else if(service->idPath.id[2] == 215) + { + service->exiMsg.V2G_Message.Body.PreChargeRes->DC_EVSEStatus.EVSEIsolationStatus=service->val.enumeration; + service->exiMsg.V2G_Message.Body.PreChargeRes->DC_EVSEStatus.isused.EVSEIsolationStatus=1; + + } else if(service->idPath.id[2] == 167) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->DC_EVSEStatus.EVSEIsolationStatus=service->val.enumeration; + service->exiMsg.V2G_Message.Body.CurrentDemandRes->DC_EVSEStatus.isused.EVSEIsolationStatus=1; + + } else if(service->idPath.id[2] == 251) + { + service->exiMsg.V2G_Message.Body.WeldingDetectionRes->DC_EVSEStatus.EVSEIsolationStatus=service->val.enumeration; + service->exiMsg.V2G_Message.Body.WeldingDetectionRes->DC_EVSEStatus.isused.EVSEIsolationStatus=1; + + } else if(service->idPath.id[2] == 152) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->DC_EVSEStatus.EVSEIsolationStatus=service->val.enumeration; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->DC_EVSEStatus.isused.EVSEIsolationStatus=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 324: /* EVSEStatusCode */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + if( service->idPath.id[2] == 211) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryRes->DC_EVSEStatus->EVSEStatusCode=service->val.enumeration; + } else if(service->idPath.id[2] == 197) + { + service->exiMsg.V2G_Message.Body.MeteringReceiptRes->DC_EVSEStatus->EVSEStatusCode=service->val.enumeration; + } else if(service->idPath.id[2] == 140) + { + service->exiMsg.V2G_Message.Body.CableCheckRes->DC_EVSEStatus.EVSEStatusCode=service->val.enumeration; + } else if(service->idPath.id[2] == 215) + { + service->exiMsg.V2G_Message.Body.PreChargeRes->DC_EVSEStatus.EVSEStatusCode=service->val.enumeration; + } else if(service->idPath.id[2] == 167) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->DC_EVSEStatus.EVSEStatusCode=service->val.enumeration; + } else if(service->idPath.id[2] == 251) + { + service->exiMsg.V2G_Message.Body.WeldingDetectionRes->DC_EVSEStatus.EVSEStatusCode=service->val.enumeration; + } else if(service->idPath.id[2] == 152) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->DC_EVSEStatus.EVSEStatusCode=service->val.enumeration; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 339: /* MeterID */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if( service->idPath.id[2] == 161) + { + memcpy(service->exiMsg.V2G_Message.Body.ChargingStatusRes->MeterInfo.MeterID.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.ChargingStatusRes->MeterInfo.MeterID.arraylen.data = service->val.str.miss.len; + service->exiMsg.V2G_Message.Body.ChargingStatusRes->isused.MeterInfo=1; + + } else if(service->idPath.id[2] == 167) + { + memcpy(service->exiMsg.V2G_Message.Body.CurrentDemandRes->MeterInfo.MeterID.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CurrentDemandRes->MeterInfo.MeterID.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[2] == 195) + { + memcpy(service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.MeterID.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.MeterID.arraylen.data = service->val.str.miss.len; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 341: /* MeterReading */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + _setUnsignedInt64Value(&(service->val.integer),&(service->val.integer.val.uint64)); + + if( service->idPath.id[2] == 161) + { + service->exiMsg.V2G_Message.Body.ChargingStatusRes->MeterInfo.MeterReading=service->val.integer.val.uint64; + service->exiMsg.V2G_Message.Body.ChargingStatusRes->MeterInfo.isused.MeterReading=1; + + } else if(service->idPath.id[2] == 167) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->MeterInfo.MeterReading=service->val.integer.val.uint64; + service->exiMsg.V2G_Message.Body.CurrentDemandRes->MeterInfo.isused.MeterReading=1; + + } else if(service->idPath.id[2] == 195) + { + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.MeterReading=service->val.integer.val.uint64; + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.isused.MeterReading=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 392: /* SigMeterReading */ + + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + if( service->idPath.id[2] == 161) + { + memcpy(service->exiMsg.V2G_Message.Body.ChargingStatusRes->MeterInfo.SigMeterReading.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.ChargingStatusRes->MeterInfo.SigMeterReading.arraylen.data = service->val.binary.len; + + service->exiMsg.V2G_Message.Body.ChargingStatusRes->MeterInfo.isused.SigMeterReading=1; + + } else if(service->idPath.id[2] == 167) + { + memcpy(service->exiMsg.V2G_Message.Body.CurrentDemandRes->MeterInfo.SigMeterReading.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CurrentDemandRes->MeterInfo.SigMeterReading.arraylen.data = service->val.binary.len; + + service->exiMsg.V2G_Message.Body.CurrentDemandRes->MeterInfo.isused.SigMeterReading=1; + + } else if(service->idPath.id[2] == 195) + { + memcpy(service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.SigMeterReading.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.SigMeterReading.arraylen.data = service->val.binary.len; + + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.isused.SigMeterReading=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 342: /* MeterStatus */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + if( service->idPath.id[2] == 161) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargingStatusRes->MeterInfo.MeterStatus=service->val.integer.val.int16; + service->exiMsg.V2G_Message.Body.ChargingStatusRes->MeterInfo.isused.MeterStatus=1; + + } else if(service->idPath.id[2] == 167) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandRes->MeterInfo.MeterStatus=service->val.integer.val.int16; + service->exiMsg.V2G_Message.Body.CurrentDemandRes->MeterInfo.isused.MeterStatus=1; + + } else if(service->idPath.id[2] == 195) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.MeterStatus=service->val.integer.val.int16; + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.isused.MeterStatus=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 397: /* TMeter */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + if( service->idPath.id[2] == 161) + { + service->exiMsg.V2G_Message.Body.ChargingStatusRes->MeterInfo.TMeter=service->val.integer.val.int64; + service->exiMsg.V2G_Message.Body.ChargingStatusRes->MeterInfo.isused.TMeter=1; + + } else if(service->idPath.id[2] == 167) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->MeterInfo.TMeter=service->val.integer.val.int64; + service->exiMsg.V2G_Message.Body.CurrentDemandRes->MeterInfo.isused.TMeter=1; + + } else if(service->idPath.id[2] == 195) + { + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.TMeter=service->val.integer.val.int64; + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.isused.TMeter=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 222: /* RetryCounter */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->RetryCounter=service->val.integer.val.int16; + service->exiMsg.V2G_Message.Body.CertificateUpdateRes->isused.RetryCounter=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 224: /* SAScheduleTupleID */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + if( service->idPath.id[2] == 161) + { + service->exiMsg.V2G_Message.Body.ChargingStatusRes->SAScheduleTupleID=service->val.integer.val.uint8; + } else if(service->idPath.id[2] == 167) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->SAScheduleTupleID=service->val.integer.val.uint8; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 217: /* ReceiptRequired */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + if( service->idPath.id[2] == 161) + { + service->exiMsg.V2G_Message.Body.ChargingStatusRes->ReceiptRequired=service->val.boolean; + service->exiMsg.V2G_Message.Body.ChargingStatusRes->isused.ReceiptRequired=1; + + } else if(service->idPath.id[2] == 167) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->ReceiptRequired=service->val.boolean; + service->exiMsg.V2G_Message.Body.CurrentDemandRes->isused.ReceiptRequired=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 176: /* EVSECurrentLimitAchieved */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSECurrentLimitAchieved=service->val.boolean; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 187: /* EVSEVoltageLimitAchieved */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEVoltageLimitAchieved=service->val.boolean; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 182: /* EVSEPowerLimitAchieved */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + service->exiMsg.V2G_Message.Body.CurrentDemandRes->EVSEPowerLimitAchieved=service->val.boolean; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 109: /* SignatureValue */ + + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignatureValue.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Header->Signature->SignatureValue.arraylen.data = service->val.binary.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + + } + return 0; +} + + +/** + * Deserialize an element of the EXI stream + * @return 0 = 0K; -1 = ERROR + */ +static int deserializeElement(struct EXIService* service) +{ + switch(service->qnameID) { + case 93: /* Reference */ + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference++; + + break; + case 446: /* Notification */ + service->exiMsg.V2G_Message.Header->isused.Notification=1; + + break; + case 101: /* Signature */ + service->exiMsg.V2G_Message.Header->isused.Signature=1; + + break; + case 384: /* Service */ + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->ServiceList.arraylen.Service++; + + break; + case 237: /* ServiceList */ + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes->isused.ServiceList=1; + + break; + case 425: /* physicalValue */ + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].isused.physicalValue=1; + + break; + case 353: /* Parameter */ + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter++; + + break; + case 354: /* ParameterSet */ + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet++; + + break; + case 238: /* ServiceParameterList */ + service->exiMsg.V2G_Message.Body.ServiceDetailRes->isused.ServiceParameterList=1; + + break; + case 393: /* SubCertificates */ + + break; + case 350: /* PMaxScheduleEntry */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].PMaxSchedule.arraylen.PMaxScheduleEntry++; + + break; + case 273: /* Cost */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].ConsumptionCost[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost].arraylen.Cost++; + + break; + case 270: /* ConsumptionCost */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].isused.ConsumptionCost=1; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->SalesTariffEntry[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry].arraylen.ConsumptionCost++; + + break; + case 377: /* SalesTariffEntry */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].SalesTariff->arraylen.SalesTariffEntry++; + + break; + case 375: /* SalesTariff */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->SAScheduleTuple[service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple].isused.SalesTariff=1; + + break; + case 370: /* SAScheduleTuple */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->SAScheduleList->arraylen.SAScheduleTuple++; + + break; + case 309: /* EVSECurrentRegulationTolerance */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->isused.EVSECurrentRegulationTolerance=1; + + break; + case 310: /* EVSEEnergyToBeDelivered */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->DC_EVSEChargeParameter->isused.EVSEEnergyToBeDelivered=1; + + break; + case 368: /* SAScheduleList */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->isused.SAScheduleList=1; + + break; + case 256: /* AC_EVSEChargeParameter */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->isused.AC_EVSEChargeParameter=1; + + break; + case 280: /* DC_EVSEChargeParameter */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes->isused.DC_EVSEChargeParameter=1; + + break; + case 258: /* AC_EVSEStatus */ + + break; + case 282: /* DC_EVSEStatus */ + + break; + case 178: /* EVSEMaxCurrent */ + service->exiMsg.V2G_Message.Body.ChargingStatusRes->isused.EVSEMaxCurrent=1; + + break; + case 194: /* MeterInfo */ + + break; + case 181: /* EVSEMaximumVoltageLimit */ + service->exiMsg.V2G_Message.Body.CurrentDemandRes->isused.EVSEMaximumVoltageLimit=1; + + break; + case 179: /* EVSEMaximumCurrentLimit */ + service->exiMsg.V2G_Message.Body.CurrentDemandRes->isused.EVSEMaximumCurrentLimit=1; + + break; + case 180: /* EVSEMaximumPowerLimit */ + service->exiMsg.V2G_Message.Body.CurrentDemandRes->isused.EVSEMaximumPowerLimit=1; + + break; + + } + return 0; +} + + + + + /** + * Deserialize the EXI stream + * @return 0 = 0K; -1 = ERROR + */ +static int deserializeMessage(struct EXIService* service) +{ + int noEndOfDocument = 1; /* true */ + int returnCode=0; + int eventCounter = 0; + int derivationCounter = 0; + + + do { + exiv2gDecodeNextEvent(&(service->inStream), &(service->stateDecode), &(service->event)); + if (returnCode < 0) { + return returnCode; + } + + switch (service->event) { + case EXI_EVENT_START_DOCUMENT: + + returnCode = exiv2gDecodeStartDocument(&(service->inStream), &(service->stateDecode)); + + break; + case EXI_EVENT_END_DOCUMENT: + + returnCode = exiv2gDecodeEndDocument(&(service->inStream), &(service->stateDecode)); + noEndOfDocument = 0; /* false */ + break; + case EXI_EVENT_START_ELEMENT_GENERIC: + case EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED: + derivationCounter++; + case EXI_EVENT_START_ELEMENT: + returnCode = exiv2gDecodeStartElement(&(service->inStream), &(service->stateDecode), &(service->qnameID)); + service->idPath.id[service->idPath.pos++]=service->qnameID; + + break; + case EXI_EVENT_END_ELEMENT_UNDECLARED: + case EXI_EVENT_END_ELEMENT: + + returnCode = exiv2gDecodeEndElement(&(service->inStream), &(service->stateDecode), &(service->qnameID)); + service->idPath.pos--; + + if(derivationCounter==0) + returnCode = deserializeElement(service); + + if(derivationCounter>0) + derivationCounter--; + + break; + case EXI_EVENT_CHARACTERS_GENERIC: + case EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED: + case EXI_EVENT_CHARACTERS: + /* decode */ + returnCode = exiv2gDecodeCharacters(&(service->inStream), &(service->stateDecode), &(service->val)); + + /* assign character data to the v2g message structure */ + if(derivationCounter==0) + returnCode = deserializeElementAttributeCharacter(service); + break; + case EXI_EVENT_ATTRIBUTE_GENERIC: + case EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED: + case EXI_EVENT_ATTRIBUTE_INVALID_VALUE: + case EXI_EVENT_ATTRIBUTE: + /* decode */ + returnCode = exiv2gDecodeAttribute(&(service->inStream), &(service->stateDecode), &(service->qnameID), &(service->val)); + + if(derivationCounter==0) + returnCode = deserializeElementAttributeCharacter(service); + + break; + + case EXI_EVENT_ATTRIBUTE_ANY_INVALID_VALUE: + break; + default: + /* ERROR */ + return -1; + } + + + if(eventCounter++>500) { + + service->errorCode=EXI_DESERIALIZATION_FAILED; + return -1; + } + + + } while (noEndOfDocument); + + return 0; +} + +/** + * \brief Initialize the v2g client + * \param service struct EXIService* Service data structure + * \param service_bytes exi_bytes_t Reserved for byte handling + * \param service_string exi_string_ucs_t Reserved for string handling + * \param inStream uint8_t* Instream buffer + * \param max_inStream_size size_t Max size for an instream message + * \param outStream uint8_t* Outstream buffer + * \param max_outStream_size size_t Max size for an outstream message + * \param transportHeaderOffset uint16_t Transport protocol offset + * \return 0 = 0K; -1 = ERROR + */ +int init_v2gServiceClient(struct EXIService* service, exi_bytes_t service_bytes, exi_string_ucs_t service_string, uint8_t* inStream, size_t max_inStream_size, uint8_t* outStream, size_t max_outStream_size,uint32_t* outPayloadLength, uint16_t transportHeaderOffset) + { + + /* init byte array */ + service->val.binary = service_bytes; + + /* init string array */ + service->val.str.miss = service_string; + + /* init input / output stream */ + service->inStream.data=inStream; + service->inStream.size=max_inStream_size; + + service->outStream.data=outStream; + service->outStream.size=max_outStream_size; + service->outStream.pos=outPayloadLength; + + + /* init offset for transport protocol */ + service->transportHeaderOffset=transportHeaderOffset; + + return 0; +} diff --git a/src/service/v2g_serviceClientStubs.h b/src/service/v2g_serviceClientStubs.h new file mode 100644 index 0000000..5f3cfa6 --- /dev/null +++ b/src/service/v2g_serviceClientStubs.h @@ -0,0 +1,322 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + + + #ifdef __cplusplus +extern "C" { +#endif + +#ifndef SERVICECLIENTSTUBS_H +#define SERVICECLIENTSTUBS_H + + #include "v2g_service.h" + #include "v2g_dataTypes.h" + #include "v2g_serviceClientStubs.h" + + +enum responseMessages +{ + SESSIONSETUPRES, + + SERVICEDISCOVERYRES, + + SERVICEDETAILRES, + + PAYMENTSERVICESELECTIONRES, + + PAYMENTDETAILSRES, + + AUTHORIZATIONRES, + + CHARGEPARAMETERDISCOVERYRES, + + POWERDELIVERYRES, + + CHARGINGSTATUSRES, + + METERINGRECEIPTRES, + + CERTIFICATEUPDATERES, + + CERTIFICATEINSTALLATIONRES, + + CABLECHECKRES, + + PRECHARGERES, + + CURRENTDEMANDRES, + + WELDINGDETECTIONRES, + + SESSIONSTOPRES + +}; + +/** + * \brief Prepares the remote sessionSetup call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct SessionSetupReqType* Request data for the server (has to be set up before) + * \param result struct SessionSetupResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_sessionSetup(struct EXIService* service, struct MessageHeaderType* header, struct SessionSetupReqType* params, struct SessionSetupResType* result); + + + + +/** + * \brief Prepares the remote serviceDiscovery call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct ServiceDiscoveryReqType* Request data for the server (has to be set up before) + * \param result struct ServiceDiscoveryResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_serviceDiscovery(struct EXIService* service, struct MessageHeaderType* header, struct ServiceDiscoveryReqType* params, struct ServiceDiscoveryResType* result); + + + + +/** + * \brief Prepares the remote serviceDetail call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct ServiceDetailReqType* Request data for the server (has to be set up before) + * \param result struct ServiceDetailResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_serviceDetail(struct EXIService* service, struct MessageHeaderType* header, struct ServiceDetailReqType* params, struct ServiceDetailResType* result); + + + + +/** + * \brief Prepares the remote paymentServiceSelection 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 + * \return 0 = 0K; -1 = ERROR */ + int prepare_paymentServiceSelection(struct EXIService* service, struct MessageHeaderType* header, struct PaymentServiceSelectionReqType* params, struct PaymentServiceSelectionResType* result); + + + + +/** + * \brief Prepares the remote paymentDetails call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct PaymentDetailsReqType* Request data for the server (has to be set up before) + * \param result struct PaymentDetailsResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_paymentDetails(struct EXIService* service, struct MessageHeaderType* header, struct PaymentDetailsReqType* params, struct PaymentDetailsResType* result); + + + + +/** + * \brief Prepares the remote authorization 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 + * \return 0 = 0K; -1 = ERROR */ + int prepare_authorization(struct EXIService* service, struct MessageHeaderType* header, struct AuthorizationReqType* params, struct AuthorizationResType* result); + + + + +/** + * \brief Prepares the remote chargeParameterDiscovery call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct ChargeParameterDiscoveryReqType* Request data for the server (has to be set up before) + * \param result struct ChargeParameterDiscoveryResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_chargeParameterDiscovery(struct EXIService* service, struct MessageHeaderType* header, struct ChargeParameterDiscoveryReqType* params, struct ChargeParameterDiscoveryResType* result); + + + + +/** + * \brief Prepares the remote powerDelivery call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct PowerDeliveryReqType* Request data for the server (has to be set up before) + * \param result struct PowerDeliveryResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_powerDelivery(struct EXIService* service, struct MessageHeaderType* header, struct PowerDeliveryReqType* params, struct PowerDeliveryResType* result); + + + + +/** + * \brief Prepares the remote chargingStatus call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param result struct ChargingStatusResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_chargingStatus(struct EXIService* service, struct MessageHeaderType* header, struct ChargingStatusResType* result); + + + + +/** + * \brief Prepares the remote meteringReceipt call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct MeteringReceiptReqType* Request data for the server (has to be set up before) + * \param result struct MeteringReceiptResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_meteringReceipt(struct EXIService* service, struct MessageHeaderType* header, struct MeteringReceiptReqType* params, struct MeteringReceiptResType* result); + + + + +/** + * \brief Prepares the remote certificateUpdate call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct CertificateUpdateReqType* Request data for the server (has to be set up before) + * \param result struct CertificateUpdateResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_certificateUpdate(struct EXIService* service, struct MessageHeaderType* header, struct CertificateUpdateReqType* params, struct CertificateUpdateResType* result); + + + + +/** + * \brief Prepares the remote certificateInstallation call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct CertificateInstallationReqType* Request data for the server (has to be set up before) + * \param result struct CertificateInstallationResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_certificateInstallation(struct EXIService* service, struct MessageHeaderType* header, struct CertificateInstallationReqType* params, struct CertificateInstallationResType* result); + + + + +/** + * \brief Prepares the remote cableCheck call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct CableCheckReqType* Request data for the server (has to be set up before) + * \param result struct CableCheckResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_cableCheck(struct EXIService* service, struct MessageHeaderType* header, struct CableCheckReqType* params, struct CableCheckResType* result); + + + + +/** + * \brief Prepares the remote preCharge call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct PreChargeReqType* Request data for the server (has to be set up before) + * \param result struct PreChargeResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_preCharge(struct EXIService* service, struct MessageHeaderType* header, struct PreChargeReqType* params, struct PreChargeResType* result); + + + + +/** + * \brief Prepares the remote currentDemand call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct CurrentDemandReqType* Request data for the server (has to be set up before) + * \param result struct CurrentDemandResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_currentDemand(struct EXIService* service, struct MessageHeaderType* header, struct CurrentDemandReqType* params, struct CurrentDemandResType* result); + + + + +/** + * \brief Prepares the remote weldingDetection call + * \param service struct EXIService* Service data structure (has to be initialized before) + * \param header struct MessageHeaderType* Header data structure + * \param params struct WeldingDetectionReqType* Request data for the server (has to be set up before) + * \param result struct WeldingDetectionResType* Contains the response data from the server + * \return 0 = 0K; -1 = ERROR */ + int prepare_weldingDetection(struct EXIService* service, struct MessageHeaderType* header, struct WeldingDetectionReqType* params, struct WeldingDetectionResType* result); + + + + +/** + * \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 + * \return 0 = 0K; -1 = ERROR */ + int prepare_sessionStop(struct EXIService* service, struct MessageHeaderType* header, struct SessionStopReqType* params, struct SessionStopResType* result); + + + + + + + /** + * \brief Determines which response message was received + * \param service struct EXIService* Service data structure (has to be initialized before) + * \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); + + + +/** + * \brief Initialize the v2g client + * \param service struct EXIService* Service data structure + * \param service_bytes exi_bytes_t Reserved for byte handling + * \param service_string exi_string_ucs_t Reserved for string handling + * \param inStream uint8_t* Instream buffer + * \param max_inStream_size size_t Max size for an instream message + * \param outStream uint8_t* Outstream buffer + * \param outPayloadLength uint32_t* Provides the length of the encoded request EXI message + * \param max_outStream_size size_t Max size for an outstream message + * \param transportHeaderOffset uint16_t Transport protocol offset + * \return 0 = 0K; -1 = ERROR + */ +int init_v2gServiceClient(struct EXIService* service, exi_bytes_t service_bytes, exi_string_ucs_t service_string, uint8_t* inStream, size_t max_inStream_size, uint8_t* outStream, size_t max_outStream_size,uint32_t* outPayloadLength, uint16_t transportHeaderOffset); + + + + + + + + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/src/service/v2g_serviceDataSerialization.c b/src/service/v2g_serviceDataSerialization.c new file mode 100644 index 0000000..64add70 --- /dev/null +++ b/src/service/v2g_serviceDataSerialization.c @@ -0,0 +1,7504 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + +#include "v2g_service.h" +#include "v2g_dataTypes.h" +#include "EXITypes.h" +#include "v2gEXIEncoder.h" +#include "v2gQNameDefines.h" +#include "StringNameTable.h" +#include + + uint16_t numberOfLocalStringsEncode[EXI_v2gMAX_NUMBER_OF_QNAMES]; + + + + + + + +static int serialize_NotificationType(struct NotificationType* type, +struct EXIService* service) +{ + + + + /* encode start element FaultCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 332)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->FaultCode; + + + /* encode character FaultCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of FaultCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.FaultMsg) + { + + + + /* encode start element FaultMsg */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 333)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->FaultMsg.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->FaultMsg.data,type->FaultMsg.arraylen.data*sizeof(uint32_t)); + + + + /* encode character FaultMsg */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of FaultMsg */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_CanonicalizationMethodType(struct CanonicalizationMethodType* type, +struct EXIService* service) +{ + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Algorithm.arraylen.data; + service->val.str.miss.codepoints= type->attr_Algorithm.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 0,&(service->val))) + { + return -1; + } + + + return 0; +} + + +static int serialize_SignatureMethodType(struct SignatureMethodType* type, +struct EXIService* service) +{ + + uint32_t temp[1]; + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Algorithm.arraylen.data; + service->val.str.miss.codepoints= type->attr_Algorithm.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 0,&(service->val))) + { + return -1; + } + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = 0; + + temp[0]='\0'; + memcpy(service->val.str.miss.codepoints, temp,0); + + + + /* encode character + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));*/ + + + return 0; +} + + +static int serialize_DigestMethodType(struct DigestMethodType* type, +struct EXIService* service) +{ + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Algorithm.arraylen.data; + service->val.str.miss.codepoints= type->attr_Algorithm.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 0,&(service->val))) + { + return -1; + } + + + return 0; +} + + +static int serialize_ReferenceType(struct ReferenceType* type, +struct EXIService* service) +{ + + if(type->isused.attr_Id) + { + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 2,&(service->val))) + { + return -1; + } + } + + if(type->isused.attr_Type) + { + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Type.arraylen.data; + service->val.str.miss.codepoints= type->attr_Type.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 5,&(service->val))) + { + return -1; + } + } + + if(type->isused.attr_URI) + { + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_URI.arraylen.data; + service->val.str.miss.codepoints= type->attr_URI.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 6,&(service->val))) + { + return -1; + } + } + + + + /* encode start element DigestMethod */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 64)) + { + return -1; + } + + /* encode children of DigestMethod */ + if(serialize_DigestMethodType( &(type->DigestMethod),service)) + { + return -1; + } + + + + /* encode end element of DigestMethod */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element DigestValue */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 66)) + { + return -1; + } + service->val.type = EXI_DATATYPE_BINARY_BASE64; + service->val.binary.len = type->DigestValue.arraylen.data; + memcpy(service->val.binary.data, type->DigestValue.data,type->DigestValue.arraylen.data); + + + + + /* encode character DigestValue */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + + /* encode end element of DigestValue */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_SignedInfoType(struct SignedInfoType* type, +struct EXIService* service) +{ + + size_t i_loop; + + if(type->isused.attr_Id) + { + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 2,&(service->val))) + { + return -1; + } + } + + + + /* encode start element CanonicalizationMethod */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 59)) + { + return -1; + } + + /* encode children of CanonicalizationMethod */ + if(serialize_CanonicalizationMethodType( &(type->CanonicalizationMethod),service)) + { + return -1; + } + + + + /* encode end element of CanonicalizationMethod */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element SignatureMethod */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 102)) + { + return -1; + } + + /* encode children of SignatureMethod */ + if(serialize_SignatureMethodType( &(type->SignatureMethod),service)) + { + return -1; + } + + + + /* encode end element of SignatureMethod */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + for(i_loop=0;i_loop < type->arraylen.Reference;i_loop++) + { + + + + /* encode start element Reference */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 93)) + { + return -1; + } + + /* encode children of Reference */ + if(serialize_ReferenceType(&(type->Reference[i_loop]),service)) + { + return -1; + } + + + /* encode end element of Reference */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + + + + +static int serialize_SignatureType(struct SignatureType* type, +struct EXIService* service) +{ + + if(type->isused.attr_Id) + { + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 2,&(service->val))) + { + return -1; + } + } + + + + /* encode start element SignedInfo */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 111)) + { + return -1; + } + + /* encode children of SignedInfo */ + if(serialize_SignedInfoType( &(type->SignedInfo),service)) + { + return -1; + } + + + + /* encode end element of SignedInfo */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element SignatureValue */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 109)) + { + return -1; + } + + + service->val.type = EXI_DATATYPE_BINARY_BASE64; + service->val.binary.len = type->SignatureValue.arraylen.data; + service->val.binary.data= type->SignatureValue.data; + + /* encode character */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + + /* encode end element of SignatureValue */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_MessageHeaderType(struct MessageHeaderType* type, +struct EXIService* service) +{ + + + + /* encode start element SessionID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 447)) + { + return -1; + } + service->val.type = EXI_DATATYPE_BINARY_HEX; + service->val.binary.len = type->SessionID.arraylen.data; + memcpy(service->val.binary.data, type->SessionID.data,type->SessionID.arraylen.data); + + + + + /* encode character SessionID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + + /* encode end element of SessionID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.Notification) + { + + + + /* encode start element Notification */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 446)) + { + return -1; + } + + /* encode children of Notification */ + if(serialize_NotificationType( &(type->Notification),service)) + { + return -1; + } + + + + /* encode end element of Notification */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.Signature) + { + + + + /* encode start element Signature */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 101)) + { + return -1; + } + + /* encode children of Signature */ + if(serialize_SignatureType( (type->Signature),service)) + { + return -1; + } + + + + /* encode end element of Signature */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_SessionSetupReqType(struct SessionSetupReqType* type, +struct EXIService* service) +{ + + + + /* encode start element EVCCID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 172)) + { + return -1; + } + service->val.type = EXI_DATATYPE_BINARY_HEX; + service->val.binary.len = type->EVCCID.arraylen.data; + memcpy(service->val.binary.data, type->EVCCID.data,type->EVCCID.arraylen.data); + + + + + /* encode character EVCCID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + + /* encode end element of EVCCID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_SessionSetupResType(struct SessionSetupResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 177)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->EVSEID.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->EVSEID.data,type->EVSEID.arraylen.data*sizeof(uint32_t)); + + + + /* encode character EVSEID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSEID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.EVSETimeStamp) + { + + + + /* encode start element EVSETimeStamp */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 186)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_INTEGER; + service->val.integer.val.int64=type->EVSETimeStamp; + + service->val.integer.type = EXI_INTEGER_64; + + /* encode character EVSETimeStamp */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSETimeStamp */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ServiceDiscoveryReqType(struct ServiceDiscoveryReqType* type, +struct EXIService* service) +{ + + if(type->isused.ServiceScope) + { + + + + /* encode start element ServiceScope */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 239)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->ServiceScope.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->ServiceScope.data,type->ServiceScope.arraylen.data*sizeof(uint32_t)); + + + + /* encode character ServiceScope */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceScope */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ServiceCategory) + { + + + + /* encode start element ServiceCategory */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 227)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ServiceCategory; + + + /* encode character ServiceCategory */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceCategory */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_PaymentOptionListType(struct PaymentOptionListType* type, +struct EXIService* service) +{ + + size_t i_loop; + + for(i_loop=0;i_loop < type->arraylen.PaymentOption;i_loop++) + { + + + + /* encode start element PaymentOption */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 358)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->PaymentOption[i_loop]; + + /* encode character PaymentOption */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of PaymentOption */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_SupportedEnergyTransferModeType(struct SupportedEnergyTransferModeType* type, +struct EXIService* service) +{ + + size_t i_loop; + + for(i_loop=0;i_loop < type->arraylen.EnergyTransferMode;i_loop++) + { + + + + /* encode start element EnergyTransferMode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 328)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->EnergyTransferMode[i_loop]; + + /* encode character EnergyTransferMode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EnergyTransferMode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ChargeServiceType(struct ChargeServiceType* type, +struct EXIService* service) +{ + + + + /* encode start element ServiceID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 386)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint16=type->ServiceID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_16; + + /* encode character ServiceID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.ServiceName) + { + + + + /* encode start element ServiceName */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 388)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->ServiceName.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->ServiceName.data,type->ServiceName.arraylen.data*sizeof(uint32_t)); + + + + /* encode character ServiceName */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceName */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element ServiceCategory */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 385)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ServiceCategory; + + + /* encode character ServiceCategory */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceCategory */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.ServiceScope) + { + + + + /* encode start element ServiceScope */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 390)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->ServiceScope.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->ServiceScope.data,type->ServiceScope.arraylen.data*sizeof(uint32_t)); + + + + /* encode character ServiceScope */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceScope */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element FreeService */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 334)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->FreeService; + + + /* encode character FreeService */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of FreeService */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element SupportedEnergyTransferMode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 395)) + { + return -1; + } + + /* encode children of SupportedEnergyTransferMode */ + if(serialize_SupportedEnergyTransferModeType( &(type->SupportedEnergyTransferMode),service)) + { + return -1; + } + + + + /* encode end element of SupportedEnergyTransferMode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_ServiceType(struct ServiceType* type, +struct EXIService* service) +{ + + + + /* encode start element ServiceID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 386)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint16=type->ServiceID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_16; + + /* encode character ServiceID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.ServiceName) + { + + + + /* encode start element ServiceName */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 388)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->ServiceName.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->ServiceName.data,type->ServiceName.arraylen.data*sizeof(uint32_t)); + + + + /* encode character ServiceName */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceName */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element ServiceCategory */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 385)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ServiceCategory; + + + /* encode character ServiceCategory */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceCategory */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.ServiceScope) + { + + + + /* encode start element ServiceScope */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 390)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->ServiceScope.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->ServiceScope.data,type->ServiceScope.arraylen.data*sizeof(uint32_t)); + + + + /* encode character ServiceScope */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceScope */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element FreeService */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 334)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->FreeService; + + + /* encode character FreeService */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of FreeService */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_ServiceListType(struct ServiceListType* type, +struct EXIService* service) +{ + + size_t i_loop; + + for(i_loop=0;i_loop < type->arraylen.Service;i_loop++) + { + + + + /* encode start element Service */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 384)) + { + return -1; + } + + /* encode children of Service */ + if(serialize_ServiceType(&(type->Service[i_loop]),service)) + { + return -1; + } + + + /* encode end element of Service */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ServiceDiscoveryResType(struct ServiceDiscoveryResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element PaymentOptionList */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 204)) + { + return -1; + } + + /* encode children of PaymentOptionList */ + if(serialize_PaymentOptionListType( &(type->PaymentOptionList),service)) + { + return -1; + } + + + + /* encode end element of PaymentOptionList */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element ChargeService */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 155)) + { + return -1; + } + + /* encode children of ChargeService */ + if(serialize_ChargeServiceType( &(type->ChargeService),service)) + { + return -1; + } + + + + /* encode end element of ChargeService */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.ServiceList) + { + + + + /* encode start element ServiceList */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 237)) + { + return -1; + } + + /* encode children of ServiceList */ + if(serialize_ServiceListType( &(type->ServiceList),service)) + { + return -1; + } + + + + /* encode end element of ServiceList */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ServiceDetailReqType(struct ServiceDetailReqType* type, +struct EXIService* service) +{ + + + + /* encode start element ServiceID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 236)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint16=type->ServiceID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_16; + + /* encode character ServiceID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_PhysicalValueType(struct PhysicalValueType* type, +struct EXIService* service) +{ + + + + /* encode start element Multiplier */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 343)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.int8=type->Multiplier; + + service->val.integer.type = EXI_INTEGER_8; + + /* encode character Multiplier */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of Multiplier */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element Unit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 399)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->Unit; + + + /* encode character Unit */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of Unit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element Value */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 400)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_INTEGER; + service->val.integer.val.int16=type->Value; + + service->val.integer.type = EXI_INTEGER_16; + + /* encode character Value */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of Value */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_ParameterType(struct ParameterType* type, +struct EXIService* service) +{ + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Name.arraylen.data; + service->val.str.miss.codepoints= type->attr_Name.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 344,&(service->val))) + { + return -1; + } + + if(type->isused.boolValue) + { + + + + /* encode start element boolValue */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 403)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->boolValue; + + + /* encode character boolValue */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of boolValue */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.byteValue) + { + + + + /* encode start element byteValue */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 404)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.int8=type->byteValue; + + service->val.integer.type = EXI_INTEGER_8; + + /* encode character byteValue */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of byteValue */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.shortValue) + { + + + + /* encode start element shortValue */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 433)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_INTEGER; + service->val.integer.val.int16=type->shortValue; + + service->val.integer.type = EXI_INTEGER_16; + + /* encode character shortValue */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of shortValue */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.intValue) + { + + + + /* encode start element intValue */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 418)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_INTEGER; + service->val.integer.val.int32=type->intValue; + + service->val.integer.type = EXI_INTEGER_32; + + /* encode character intValue */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of intValue */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.physicalValue) + { + + + + /* encode start element physicalValue */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 425)) + { + return -1; + } + + /* encode children of physicalValue */ + if(serialize_PhysicalValueType( &(type->physicalValue),service)) + { + return -1; + } + + + + /* encode end element of physicalValue */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.stringValue) + { + + + + /* encode start element stringValue */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 437)) + { + return -1; + } + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->stringValue.arraylen.data; + service->val.str.miss.codepoints= type->stringValue.data; + + /* encode character stringValue */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of stringValue */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ParameterSetType(struct ParameterSetType* type, +struct EXIService* service) +{ + + size_t i_loop; + + + + /* encode start element ParameterSetID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 355)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_INTEGER; + service->val.integer.val.int16=type->ParameterSetID; + + service->val.integer.type = EXI_INTEGER_16; + + /* encode character ParameterSetID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ParameterSetID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + for(i_loop=0;i_loop < type->arraylen.Parameter;i_loop++) + { + + + + /* encode start element Parameter */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 353)) + { + return -1; + } + + /* encode children of Parameter */ + if(serialize_ParameterType(&(type->Parameter[i_loop]),service)) + { + return -1; + } + + + /* encode end element of Parameter */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ServiceParameterListType(struct ServiceParameterListType* type, +struct EXIService* service) +{ + + size_t i_loop; + + for(i_loop=0;i_loop < type->arraylen.ParameterSet;i_loop++) + { + + + + /* encode start element ParameterSet */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 354)) + { + return -1; + } + + /* encode children of ParameterSet */ + if(serialize_ParameterSetType(&(type->ParameterSet[i_loop]),service)) + { + return -1; + } + + + /* encode end element of ParameterSet */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ServiceDetailResType(struct ServiceDetailResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element ServiceID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 236)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint16=type->ServiceID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_16; + + /* encode character ServiceID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.ServiceParameterList) + { + + + + /* encode start element ServiceParameterList */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 238)) + { + return -1; + } + + /* encode children of ServiceParameterList */ + if(serialize_ServiceParameterListType( &(type->ServiceParameterList),service)) + { + return -1; + } + + + + /* encode end element of ServiceParameterList */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_SelectedServiceType(struct SelectedServiceType* type, +struct EXIService* service) +{ + + + + /* encode start element ServiceID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 386)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint16=type->ServiceID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_16; + + /* encode character ServiceID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ServiceID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.ParameterSetID) + { + + + + /* encode start element ParameterSetID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 355)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_INTEGER; + service->val.integer.val.int16=type->ParameterSetID; + + service->val.integer.type = EXI_INTEGER_16; + + /* encode character ParameterSetID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ParameterSetID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_SelectedServiceListType(struct SelectedServiceListType* type, +struct EXIService* service) +{ + + size_t i_loop; + + for(i_loop=0;i_loop < type->arraylen.SelectedService;i_loop++) + { + + + + /* encode start element SelectedService */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 381)) + { + return -1; + } + + /* encode children of SelectedService */ + if(serialize_SelectedServiceType(&(type->SelectedService[i_loop]),service)) + { + return -1; + } + + + /* encode end element of SelectedService */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_PaymentServiceSelectionReqType(struct PaymentServiceSelectionReqType* type, +struct EXIService* service) +{ + + + + /* encode start element SelectedPaymentOption */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 225)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->SelectedPaymentOption; + + + /* encode character SelectedPaymentOption */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of SelectedPaymentOption */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element SelectedServiceList */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 226)) + { + return -1; + } + + /* encode children of SelectedServiceList */ + if(serialize_SelectedServiceListType( &(type->SelectedServiceList),service)) + { + return -1; + } + + + + /* encode end element of SelectedServiceList */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_PaymentServiceSelectionResType(struct PaymentServiceSelectionResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_SubCertificatesType(struct SubCertificatesType* type, +struct EXIService* service) +{ + + size_t i_loop; + + for(i_loop=0;i_loop < type->arraylen.Certificate;i_loop++) + { + + + + /* encode start element Certificate */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 262)) + { + return -1; + } + service->val.type = EXI_DATATYPE_BINARY_BASE64; + service->val.binary.len = type->Certificate[i_loop].arraylen.data; + memcpy(service->val.binary.data, type->Certificate[i_loop].data,type->Certificate[i_loop].arraylen.data); + + + + /* encode character Certificate */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + + /* encode end element of Certificate */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_CertificateChainType(struct CertificateChainType* type, +struct EXIService* service) +{ + + if(type->isused.attr_Id) + { + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 336,&(service->val))) + { + return -1; + } + } + + + + /* encode start element Certificate */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 262)) + { + return -1; + } + service->val.type = EXI_DATATYPE_BINARY_BASE64; + service->val.binary.len = type->Certificate.arraylen.data; + memcpy(service->val.binary.data, type->Certificate.data,type->Certificate.arraylen.data); + + + + + /* encode character Certificate */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + + /* encode end element of Certificate */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.SubCertificates) + { + + + + /* encode start element SubCertificates */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 393)) + { + return -1; + } + + /* encode children of SubCertificates */ + if(serialize_SubCertificatesType( &(type->SubCertificates),service)) + { + return -1; + } + + + + /* encode end element of SubCertificates */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_PaymentDetailsReqType(struct PaymentDetailsReqType* type, +struct EXIService* service) +{ + + + + /* encode start element eMAID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 253)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->eMAID.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->eMAID.data,type->eMAID.arraylen.data*sizeof(uint32_t)); + + + + + + + /* encode character eMAID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of eMAID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element ContractSignatureCertChain */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 163)) + { + return -1; + } + + /* encode children of ContractSignatureCertChain */ + if(serialize_CertificateChainType( &(type->ContractSignatureCertChain),service)) + { + return -1; + } + + + + /* encode end element of ContractSignatureCertChain */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_PaymentDetailsResType(struct PaymentDetailsResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element GenChallenge */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 190)) + { + return -1; + } + service->val.type = EXI_DATATYPE_BINARY_BASE64; + service->val.binary.len = type->GenChallenge.arraylen.data; + memcpy(service->val.binary.data, type->GenChallenge.data,type->GenChallenge.arraylen.data); + + + + + /* encode character GenChallenge */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + + /* encode end element of GenChallenge */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSETimeStamp */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 186)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_INTEGER; + service->val.integer.val.int64=type->EVSETimeStamp; + + service->val.integer.type = EXI_INTEGER_64; + + /* encode character EVSETimeStamp */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSETimeStamp */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_AuthorizationReqType(struct AuthorizationReqType* type, +struct EXIService* service) +{ + + if(type->isused.attr_Id) + { + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 191,&(service->val))) + { + return -1; + } + } + + if(type->isused.GenChallenge) + { + + + + /* encode start element GenChallenge */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 190)) + { + return -1; + } + service->val.type = EXI_DATATYPE_BINARY_BASE64; + service->val.binary.len = type->GenChallenge.arraylen.data; + memcpy(service->val.binary.data, type->GenChallenge.data,type->GenChallenge.arraylen.data); + + + + + /* encode character GenChallenge */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + + /* encode end element of GenChallenge */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_AuthorizationResType(struct AuthorizationResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEProcessing */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 185)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->EVSEProcessing; + + + /* encode character EVSEProcessing */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSEProcessing */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_AC_EVChargeParameterType(struct AC_EVChargeParameterType* type, +struct EXIService* service) +{ + + if(type->isused.DepartureTime) + { + + + + /* encode start element DepartureTime */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 287)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint32=type->DepartureTime; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_32; + + /* encode character DepartureTime */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of DepartureTime */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element EAmount */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 289)) + { + return -1; + } + + /* encode children of EAmount */ + if(serialize_PhysicalValueType( &(type->EAmount),service)) + { + return -1; + } + + + + /* encode end element of EAmount */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVMaxVoltage */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 298)) + { + return -1; + } + + /* encode children of EVMaxVoltage */ + if(serialize_PhysicalValueType( &(type->EVMaxVoltage),service)) + { + return -1; + } + + + + /* encode end element of EVMaxVoltage */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVMaxCurrent */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 297)) + { + return -1; + } + + /* encode children of EVMaxCurrent */ + if(serialize_PhysicalValueType( &(type->EVMaxCurrent),service)) + { + return -1; + } + + + + /* encode end element of EVMaxCurrent */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVMinCurrent */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 302)) + { + return -1; + } + + /* encode children of EVMinCurrent */ + if(serialize_PhysicalValueType( &(type->EVMinCurrent),service)) + { + return -1; + } + + + + /* encode end element of EVMinCurrent */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_DC_EVStatusType(struct DC_EVStatusType* type, +struct EXIService* service) +{ + + + + /* encode start element EVReady */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 306)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->EVReady; + + + /* encode character EVReady */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVReady */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVErrorCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 296)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->EVErrorCode; + + + /* encode character EVErrorCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVErrorCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVRESSSOC */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 305)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.int8=type->EVRESSSOC; + + service->val.integer.type = EXI_INTEGER_8; + + /* encode character EVRESSSOC */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVRESSSOC */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_DC_EVChargeParameterType(struct DC_EVChargeParameterType* type, +struct EXIService* service) +{ + + if(type->isused.DepartureTime) + { + + + + /* encode start element DepartureTime */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 287)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint32=type->DepartureTime; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_32; + + /* encode character DepartureTime */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of DepartureTime */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element DC_EVStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 285)) + { + return -1; + } + + /* encode children of DC_EVStatus */ + if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVMaximumCurrentLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 299)) + { + return -1; + } + + /* encode children of EVMaximumCurrentLimit */ + if(serialize_PhysicalValueType( &(type->EVMaximumCurrentLimit),service)) + { + return -1; + } + + + + /* encode end element of EVMaximumCurrentLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.EVMaximumPowerLimit) + { + + + + /* encode start element EVMaximumPowerLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 300)) + { + return -1; + } + + /* encode children of EVMaximumPowerLimit */ + if(serialize_PhysicalValueType( &(type->EVMaximumPowerLimit),service)) + { + return -1; + } + + + + /* encode end element of EVMaximumPowerLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element EVMaximumVoltageLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 301)) + { + return -1; + } + + /* encode children of EVMaximumVoltageLimit */ + if(serialize_PhysicalValueType( &(type->EVMaximumVoltageLimit),service)) + { + return -1; + } + + + + /* encode end element of EVMaximumVoltageLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.EVEnergyCapacity) + { + + + + /* encode start element EVEnergyCapacity */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 294)) + { + return -1; + } + + /* encode children of EVEnergyCapacity */ + if(serialize_PhysicalValueType( &(type->EVEnergyCapacity),service)) + { + return -1; + } + + + + /* encode end element of EVEnergyCapacity */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.EVEnergyRequest) + { + + + + /* encode start element EVEnergyRequest */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 295)) + { + return -1; + } + + /* encode children of EVEnergyRequest */ + if(serialize_PhysicalValueType( &(type->EVEnergyRequest),service)) + { + return -1; + } + + + + /* encode end element of EVEnergyRequest */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.FullSOC) + { + + + + /* encode start element FullSOC */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 335)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.int8=type->FullSOC; + + service->val.integer.type = EXI_INTEGER_8; + + /* encode character FullSOC */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of FullSOC */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.BulkSOC) + { + + + + /* encode start element BulkSOC */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 261)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.int8=type->BulkSOC; + + service->val.integer.type = EXI_INTEGER_8; + + /* encode character BulkSOC */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of BulkSOC */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ChargeParameterDiscoveryReqType(struct ChargeParameterDiscoveryReqType* type, +struct EXIService* service) +{ + + if(type->isused.MaxEntriesSAScheduleTuple) + { + + + + /* encode start element MaxEntriesSAScheduleTuple */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 193)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint16=type->MaxEntriesSAScheduleTuple; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_16; + + /* encode character MaxEntriesSAScheduleTuple */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of MaxEntriesSAScheduleTuple */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element RequestedEnergyTransferMode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 220)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->RequestedEnergyTransferMode; + + + /* encode character RequestedEnergyTransferMode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of RequestedEnergyTransferMode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.AC_EVChargeParameter) + { + + + + /* encode start element AC_EVChargeParameter */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 254)) + { + return -1; + } + + /* encode children of AC_EVChargeParameter */ + if(serialize_AC_EVChargeParameterType( (type->AC_EVChargeParameter),service)) + { + return -1; + } + + + + /* encode end element of AC_EVChargeParameter */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.DC_EVChargeParameter) + { + + + + /* encode start element DC_EVChargeParameter */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 275)) + { + return -1; + } + + /* encode children of DC_EVChargeParameter */ + if(serialize_DC_EVChargeParameterType( (type->DC_EVChargeParameter),service)) + { + return -1; + } + + + + /* encode end element of DC_EVChargeParameter */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_RelativeTimeIntervalType(struct RelativeTimeIntervalType* type, +struct EXIService* service) +{ + + + + /* encode start element start */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 435)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint32=type->start; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_32; + + /* encode character start */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of start */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.duration) + { + + + + /* encode start element duration */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 411)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint32=type->duration; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_32; + + /* encode character duration */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of duration */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_PMaxScheduleEntryType(struct PMaxScheduleEntryType* type, +struct EXIService* service) +{ + + + + /* encode start element RelativeTimeInterval */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 364)) + { + return -1; + } + + /* encode children of RelativeTimeInterval */ + if(serialize_RelativeTimeIntervalType( &(type->RelativeTimeInterval),service)) + { + return -1; + } + + + + /* encode end element of RelativeTimeInterval */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element PMax */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 348)) + { + return -1; + } + + /* encode children of PMax */ + if(serialize_PhysicalValueType( &(type->PMax),service)) + { + return -1; + } + + + + /* encode end element of PMax */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_PMaxScheduleType(struct PMaxScheduleType* type, +struct EXIService* service) +{ + + size_t i_loop; + + for(i_loop=0;i_loop < type->arraylen.PMaxScheduleEntry;i_loop++) + { + + + + /* encode start element PMaxScheduleEntry */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 350)) + { + return -1; + } + + /* encode children of PMaxScheduleEntry */ + if(serialize_PMaxScheduleEntryType(&(type->PMaxScheduleEntry[i_loop]),service)) + { + return -1; + } + + + /* encode end element of PMaxScheduleEntry */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_CostType(struct CostType* type, +struct EXIService* service) +{ + + + + /* encode start element costKind */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 408)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->costKind; + + + /* encode character costKind */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of costKind */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element amount */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 401)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint32=type->amount; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_32; + + /* encode character amount */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of amount */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.amountMultiplier) + { + + + + /* encode start element amountMultiplier */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 402)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.int8=type->amountMultiplier; + + service->val.integer.type = EXI_INTEGER_8; + + /* encode character amountMultiplier */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of amountMultiplier */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ConsumptionCostType(struct ConsumptionCostType* type, +struct EXIService* service) +{ + + size_t i_loop; + + + + /* encode start element startValue */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 436)) + { + return -1; + } + + /* encode children of startValue */ + if(serialize_PhysicalValueType( &(type->startValue),service)) + { + return -1; + } + + + + /* encode end element of startValue */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + for(i_loop=0;i_loop < type->arraylen.Cost;i_loop++) + { + + + + /* encode start element Cost */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 273)) + { + return -1; + } + + /* encode children of Cost */ + if(serialize_CostType(&(type->Cost[i_loop]),service)) + { + return -1; + } + + + /* encode end element of Cost */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_SalesTariffEntryType(struct SalesTariffEntryType* type, +struct EXIService* service) +{ + + size_t i_loop; + + + + /* encode start element RelativeTimeInterval */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 364)) + { + return -1; + } + + /* encode children of RelativeTimeInterval */ + if(serialize_RelativeTimeIntervalType( &(type->RelativeTimeInterval),service)) + { + return -1; + } + + + + /* encode end element of RelativeTimeInterval */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.EPriceLevel) + { + + + + /* encode start element EPriceLevel */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 291)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.uint8=type->EPriceLevel; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_8; + + /* encode character EPriceLevel */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EPriceLevel */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ConsumptionCost) + { + + for(i_loop=0;i_loop < type->arraylen.ConsumptionCost;i_loop++) + { + + + + /* encode start element ConsumptionCost */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 270)) + { + return -1; + } + + /* encode children of ConsumptionCost */ + if(serialize_ConsumptionCostType(&(type->ConsumptionCost[i_loop]),service)) + { + return -1; + } + + + /* encode end element of ConsumptionCost */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + } + + + return 0; +} + + +static int serialize_SalesTariffType(struct SalesTariffType* type, +struct EXIService* service) +{ + + size_t i_loop; + + if(type->isused.attr_Id) + { + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 336,&(service->val))) + { + return -1; + } + } + + + + /* encode start element SalesTariffID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 379)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.uint8=type->SalesTariffID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_8; + + /* encode character SalesTariffID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of SalesTariffID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.SalesTariffDescription) + { + + + + /* encode start element SalesTariffDescription */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 376)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->SalesTariffDescription.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->SalesTariffDescription.data,type->SalesTariffDescription.arraylen.data*sizeof(uint32_t)); + + + + /* encode character SalesTariffDescription */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of SalesTariffDescription */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.NumEPriceLevels) + { + + + + /* encode start element NumEPriceLevels */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 347)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.uint8=type->NumEPriceLevels; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_8; + + /* encode character NumEPriceLevels */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of NumEPriceLevels */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + for(i_loop=0;i_loop < type->arraylen.SalesTariffEntry;i_loop++) + { + + + + /* encode start element SalesTariffEntry */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 377)) + { + return -1; + } + + /* encode children of SalesTariffEntry */ + if(serialize_SalesTariffEntryType(&(type->SalesTariffEntry[i_loop]),service)) + { + return -1; + } + + + /* encode end element of SalesTariffEntry */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_SAScheduleTupleType(struct SAScheduleTupleType* type, +struct EXIService* service) +{ + + + + /* encode start element SAScheduleTupleID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 371)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.uint8=type->SAScheduleTupleID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_8; + + /* encode character SAScheduleTupleID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of SAScheduleTupleID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element PMaxSchedule */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 349)) + { + return -1; + } + + /* encode children of PMaxSchedule */ + if(serialize_PMaxScheduleType( &(type->PMaxSchedule),service)) + { + return -1; + } + + + + /* encode end element of PMaxSchedule */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.SalesTariff) + { + + + + /* encode start element SalesTariff */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 375)) + { + return -1; + } + + /* encode children of SalesTariff */ + if(serialize_SalesTariffType( (type->SalesTariff),service)) + { + return -1; + } + + + + /* encode end element of SalesTariff */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_SAScheduleListType(struct SAScheduleListType* type, +struct EXIService* service) +{ + + size_t i_loop; + + for(i_loop=0;i_loop < type->arraylen.SAScheduleTuple;i_loop++) + { + + + + /* encode start element SAScheduleTuple */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 370)) + { + return -1; + } + + /* encode children of SAScheduleTuple */ + if(serialize_SAScheduleTupleType(&(type->SAScheduleTuple[i_loop]),service)) + { + return -1; + } + + + /* encode end element of SAScheduleTuple */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_AC_EVSEStatusType(struct AC_EVSEStatusType* type, +struct EXIService* service) +{ + + + + /* encode start element NotificationMaxDelay */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 345)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint16=type->NotificationMaxDelay; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_16; + + /* encode character NotificationMaxDelay */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of NotificationMaxDelay */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSENotification */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 319)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->EVSENotification; + + + /* encode character EVSENotification */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSENotification */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element RCD */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 363)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->RCD; + + + /* encode character RCD */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of RCD */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_AC_EVSEChargeParameterType(struct AC_EVSEChargeParameterType* type, +struct EXIService* service) +{ + + + + /* encode start element AC_EVSEStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 258)) + { + return -1; + } + + /* encode children of AC_EVSEStatus */ + if(serialize_AC_EVSEStatusType( &(type->AC_EVSEStatus),service)) + { + return -1; + } + + + + /* encode end element of AC_EVSEStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSENominalVoltage */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 318)) + { + return -1; + } + + /* encode children of EVSENominalVoltage */ + if(serialize_PhysicalValueType( &(type->EVSENominalVoltage),service)) + { + return -1; + } + + + + /* encode end element of EVSENominalVoltage */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEMaxCurrent */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 312)) + { + return -1; + } + + /* encode children of EVSEMaxCurrent */ + if(serialize_PhysicalValueType( &(type->EVSEMaxCurrent),service)) + { + return -1; + } + + + + /* encode end element of EVSEMaxCurrent */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_DC_EVSEStatusType(struct DC_EVSEStatusType* type, +struct EXIService* service) +{ + + + + /* encode start element NotificationMaxDelay */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 345)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint16=type->NotificationMaxDelay; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_16; + + /* encode character NotificationMaxDelay */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of NotificationMaxDelay */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSENotification */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 319)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->EVSENotification; + + + /* encode character EVSENotification */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSENotification */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.EVSEIsolationStatus) + { + + + + /* encode start element EVSEIsolationStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 311)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->EVSEIsolationStatus; + + + /* encode character EVSEIsolationStatus */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSEIsolationStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element EVSEStatusCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 324)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->EVSEStatusCode; + + + /* encode character EVSEStatusCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSEStatusCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_DC_EVSEChargeParameterType(struct DC_EVSEChargeParameterType* type, +struct EXIService* service) +{ + + + + /* encode start element DC_EVSEStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 282)) + { + return -1; + } + + /* encode children of DC_EVSEStatus */ + if(serialize_DC_EVSEStatusType( &(type->DC_EVSEStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVSEStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEMaximumCurrentLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 313)) + { + return -1; + } + + /* encode children of EVSEMaximumCurrentLimit */ + if(serialize_PhysicalValueType( &(type->EVSEMaximumCurrentLimit),service)) + { + return -1; + } + + + + /* encode end element of EVSEMaximumCurrentLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEMaximumPowerLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 314)) + { + return -1; + } + + /* encode children of EVSEMaximumPowerLimit */ + if(serialize_PhysicalValueType( &(type->EVSEMaximumPowerLimit),service)) + { + return -1; + } + + + + /* encode end element of EVSEMaximumPowerLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEMaximumVoltageLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 315)) + { + return -1; + } + + /* encode children of EVSEMaximumVoltageLimit */ + if(serialize_PhysicalValueType( &(type->EVSEMaximumVoltageLimit),service)) + { + return -1; + } + + + + /* encode end element of EVSEMaximumVoltageLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEMinimumCurrentLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 316)) + { + return -1; + } + + /* encode children of EVSEMinimumCurrentLimit */ + if(serialize_PhysicalValueType( &(type->EVSEMinimumCurrentLimit),service)) + { + return -1; + } + + + + /* encode end element of EVSEMinimumCurrentLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEMinimumVoltageLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 317)) + { + return -1; + } + + /* encode children of EVSEMinimumVoltageLimit */ + if(serialize_PhysicalValueType( &(type->EVSEMinimumVoltageLimit),service)) + { + return -1; + } + + + + /* encode end element of EVSEMinimumVoltageLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.EVSECurrentRegulationTolerance) + { + + + + /* encode start element EVSECurrentRegulationTolerance */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 309)) + { + return -1; + } + + /* encode children of EVSECurrentRegulationTolerance */ + if(serialize_PhysicalValueType( &(type->EVSECurrentRegulationTolerance),service)) + { + return -1; + } + + + + /* encode end element of EVSECurrentRegulationTolerance */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element EVSEPeakCurrentRipple */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 321)) + { + return -1; + } + + /* encode children of EVSEPeakCurrentRipple */ + if(serialize_PhysicalValueType( &(type->EVSEPeakCurrentRipple),service)) + { + return -1; + } + + + + /* encode end element of EVSEPeakCurrentRipple */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.EVSEEnergyToBeDelivered) + { + + + + /* encode start element EVSEEnergyToBeDelivered */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 310)) + { + return -1; + } + + /* encode children of EVSEEnergyToBeDelivered */ + if(serialize_PhysicalValueType( &(type->EVSEEnergyToBeDelivered),service)) + { + return -1; + } + + + + /* encode end element of EVSEEnergyToBeDelivered */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ChargeParameterDiscoveryResType(struct ChargeParameterDiscoveryResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEProcessing */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 185)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->EVSEProcessing; + + + /* encode character EVSEProcessing */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSEProcessing */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.SAScheduleList) + { + + + + /* encode start element SAScheduleList */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 368)) + { + return -1; + } + + /* encode children of SAScheduleList */ + if(serialize_SAScheduleListType( (type->SAScheduleList),service)) + { + return -1; + } + + + + /* encode end element of SAScheduleList */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.AC_EVSEChargeParameter) + { + + + + /* encode start element AC_EVSEChargeParameter */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 256)) + { + return -1; + } + + /* encode children of AC_EVSEChargeParameter */ + if(serialize_AC_EVSEChargeParameterType( (type->AC_EVSEChargeParameter),service)) + { + return -1; + } + + + + /* encode end element of AC_EVSEChargeParameter */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.DC_EVSEChargeParameter) + { + + + + /* encode start element DC_EVSEChargeParameter */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 280)) + { + return -1; + } + + /* encode children of DC_EVSEChargeParameter */ + if(serialize_DC_EVSEChargeParameterType( (type->DC_EVSEChargeParameter),service)) + { + return -1; + } + + + + /* encode end element of DC_EVSEChargeParameter */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ProfileEntryType(struct ProfileEntryType* type, +struct EXIService* service) +{ + + + + /* encode start element ChargingProfileEntryStart */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 268)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint32=type->ChargingProfileEntryStart; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_32; + + /* encode character ChargingProfileEntryStart */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ChargingProfileEntryStart */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element ChargingProfileEntryMaxPower */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 267)) + { + return -1; + } + + /* encode children of ChargingProfileEntryMaxPower */ + if(serialize_PhysicalValueType( &(type->ChargingProfileEntryMaxPower),service)) + { + return -1; + } + + + + /* encode end element of ChargingProfileEntryMaxPower */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.ChargingProfileEntryMaxNumberOfPhasesInUse) + { + + + + /* encode start element ChargingProfileEntryMaxNumberOfPhasesInUse */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 266)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.int8=type->ChargingProfileEntryMaxNumberOfPhasesInUse; + + service->val.integer.type = EXI_INTEGER_8; + + /* encode character ChargingProfileEntryMaxNumberOfPhasesInUse */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ChargingProfileEntryMaxNumberOfPhasesInUse */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_ChargingProfileType(struct ChargingProfileType* type, +struct EXIService* service) +{ + + size_t i_loop; + + for(i_loop=0;i_loop < type->arraylen.ProfileEntry;i_loop++) + { + + + + /* encode start element ProfileEntry */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 361)) + { + return -1; + } + + /* encode children of ProfileEntry */ + if(serialize_ProfileEntryType(&(type->ProfileEntry[i_loop]),service)) + { + return -1; + } + + + /* encode end element of ProfileEntry */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_DC_EVPowerDeliveryParameterType(struct DC_EVPowerDeliveryParameterType* type, +struct EXIService* service) +{ + + + + /* encode start element DC_EVStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 285)) + { + return -1; + } + + /* encode children of DC_EVStatus */ + if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.BulkChargingComplete) + { + + + + /* encode start element BulkChargingComplete */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 260)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->BulkChargingComplete; + + + /* encode character BulkChargingComplete */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of BulkChargingComplete */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element ChargingComplete */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 265)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->ChargingComplete; + + + /* encode character ChargingComplete */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ChargingComplete */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_PowerDeliveryReqType(struct PowerDeliveryReqType* type, +struct EXIService* service) +{ + + + + /* encode start element ChargeProgress */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 154)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ChargeProgress; + + + /* encode character ChargeProgress */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ChargeProgress */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element SAScheduleTupleID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 224)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.uint8=type->SAScheduleTupleID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_8; + + /* encode character SAScheduleTupleID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of SAScheduleTupleID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.ChargingProfile) + { + + + + /* encode start element ChargingProfile */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 157)) + { + return -1; + } + + /* encode children of ChargingProfile */ + if(serialize_ChargingProfileType( &(type->ChargingProfile),service)) + { + return -1; + } + + + + /* encode end element of ChargingProfile */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.DC_EVPowerDeliveryParameter) + { + + + + /* encode start element DC_EVPowerDeliveryParameter */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 278)) + { + return -1; + } + + /* encode children of DC_EVPowerDeliveryParameter */ + if(serialize_DC_EVPowerDeliveryParameterType( (type->DC_EVPowerDeliveryParameter),service)) + { + return -1; + } + + + + /* encode end element of DC_EVPowerDeliveryParameter */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_PowerDeliveryResType(struct PowerDeliveryResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.AC_EVSEStatus) + { + + + + /* encode start element AC_EVSEStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 258)) + { + return -1; + } + + /* encode children of AC_EVSEStatus */ + if(serialize_AC_EVSEStatusType( (type->AC_EVSEStatus),service)) + { + return -1; + } + + + + /* encode end element of AC_EVSEStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.DC_EVSEStatus) + { + + + + /* encode start element DC_EVSEStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 282)) + { + return -1; + } + + /* encode children of DC_EVSEStatus */ + if(serialize_DC_EVSEStatusType( (type->DC_EVSEStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVSEStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_MeterInfoType(struct MeterInfoType* type, +struct EXIService* service) +{ + + + + /* encode start element MeterID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 339)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->MeterID.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->MeterID.data,type->MeterID.arraylen.data*sizeof(uint32_t)); + + + + /* encode character MeterID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of MeterID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.MeterReading) + { + + + + /* encode start element MeterReading */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 341)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER; + service->val.integer.val.uint64=type->MeterReading; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_64; + + /* encode character MeterReading */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of MeterReading */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.SigMeterReading) + { + + + + /* encode start element SigMeterReading */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 392)) + { + return -1; + } + service->val.type = EXI_DATATYPE_BINARY_BASE64; + service->val.binary.len = type->SigMeterReading.arraylen.data; + memcpy(service->val.binary.data, type->SigMeterReading.data,type->SigMeterReading.arraylen.data); + + + + + /* encode character SigMeterReading */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + + /* encode end element of SigMeterReading */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.MeterStatus) + { + + + + /* encode start element MeterStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 342)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_INTEGER; + service->val.integer.val.int16=type->MeterStatus; + + service->val.integer.type = EXI_INTEGER_16; + + /* encode character MeterStatus */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of MeterStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.TMeter) + { + + + + /* encode start element TMeter */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 397)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_INTEGER; + service->val.integer.val.int64=type->TMeter; + + service->val.integer.type = EXI_INTEGER_64; + + /* encode character TMeter */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of TMeter */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_MeteringReceiptReqType(struct MeteringReceiptReqType* type, +struct EXIService* service) +{ + + if(type->isused.attr_Id) + { + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 191,&(service->val))) + { + return -1; + } + } + + + + /* encode start element SessionID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 240)) + { + return -1; + } + service->val.type = EXI_DATATYPE_BINARY_HEX; + service->val.binary.len = type->SessionID.arraylen.data; + memcpy(service->val.binary.data, type->SessionID.data,type->SessionID.arraylen.data); + + + + + /* encode character SessionID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + + /* encode end element of SessionID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.SAScheduleTupleID) + { + + + + /* encode start element SAScheduleTupleID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 224)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.uint8=type->SAScheduleTupleID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_8; + + /* encode character SAScheduleTupleID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of SAScheduleTupleID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element MeterInfo */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 194)) + { + return -1; + } + + /* encode children of MeterInfo */ + if(serialize_MeterInfoType( &(type->MeterInfo),service)) + { + return -1; + } + + + + /* encode end element of MeterInfo */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_MeteringReceiptResType(struct MeteringReceiptResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.AC_EVSEStatus) + { + + + + /* encode start element AC_EVSEStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 258)) + { + return -1; + } + + /* encode children of AC_EVSEStatus */ + if(serialize_AC_EVSEStatusType( (type->AC_EVSEStatus),service)) + { + return -1; + } + + + + /* encode end element of AC_EVSEStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.DC_EVSEStatus) + { + + + + /* encode start element DC_EVSEStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 282)) + { + return -1; + } + + /* encode children of DC_EVSEStatus */ + if(serialize_DC_EVSEStatusType( (type->DC_EVSEStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVSEStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_SessionStopReqType(struct SessionStopReqType* type, +struct EXIService* service) +{ + + + + /* encode start element ChargingSession */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 158)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ChargingSession; + + + /* encode character ChargingSession */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ChargingSession */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_SessionStopResType(struct SessionStopResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + + +static int serialize_X509IssuerSerialType(struct X509IssuerSerialType* type, +struct EXIService* service) +{ + + + + /* encode start element X509IssuerName */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 121)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->X509IssuerName.arraylen.data; + service->val.str.miss.codepoints= type->X509IssuerName.data; + + + /* encode character X509IssuerName */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of X509IssuerName */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element X509SerialNumber */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 125)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_INTEGER; + service->val.integer.val.int64=type->X509SerialNumber; + + service->val.integer.type = EXI_INTEGER_64; + + /* encode character X509SerialNumber */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of X509SerialNumber */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + + +static int serialize_ListOfRootCertificateIDsType(struct ListOfRootCertificateIDsType* type, +struct EXIService* service) +{ + + size_t i_loop; + + for(i_loop=0;i_loop < type->arraylen.RootCertificateID;i_loop++) + { + + + + /* encode start element RootCertificateID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 366)) + { + return -1; + } + + /* encode children of RootCertificateID */ + if(serialize_X509IssuerSerialType(&(type->RootCertificateID[i_loop]),service)) + { + return -1; + } + + + /* encode end element of RootCertificateID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_CertificateUpdateReqType(struct CertificateUpdateReqType* type, +struct EXIService* service) +{ + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 191,&(service->val))) + { + return -1; + } + + + + /* encode start element ContractSignatureCertChain */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 163)) + { + return -1; + } + + /* encode children of ContractSignatureCertChain */ + if(serialize_CertificateChainType( &(type->ContractSignatureCertChain),service)) + { + return -1; + } + + + + /* encode end element of ContractSignatureCertChain */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element eMAID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 253)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->eMAID.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->eMAID.data,type->eMAID.arraylen.data*sizeof(uint32_t)); + + + + + + + /* encode character eMAID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of eMAID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element ListOfRootCertificateIDs */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 192)) + { + return -1; + } + + /* encode children of ListOfRootCertificateIDs */ + if(serialize_ListOfRootCertificateIDsType( &(type->ListOfRootCertificateIDs),service)) + { + return -1; + } + + + + /* encode end element of ListOfRootCertificateIDs */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_ContractSignatureEncryptedPrivateKeyType(struct ContractSignatureEncryptedPrivateKeyType* type, +struct EXIService* service) +{ + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 336,&(service->val))) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BINARY_BASE64; + service->val.binary.len = type->arraylen.data; + memcpy(service->val.binary.data, type->data,type->arraylen.data); + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + return 0; +} + + +static int serialize_DiffieHellmanPublickeyType(struct DiffieHellmanPublickeyType* type, +struct EXIService* service) +{ + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 336,&(service->val))) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BINARY_BASE64; + service->val.binary.len = type->arraylen.data; + memcpy(service->val.binary.data, type->data,type->arraylen.data); + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + return 0; +} + + +static int serialize_EMAIDType(struct EMAIDType* type, +struct EXIService* service) +{ + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 336,&(service->val))) + { + return -1; + }; + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->arraylen.data; + service->val.str.miss.codepoints= type->data; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + return 0; +} + + +static int serialize_CertificateUpdateResType(struct CertificateUpdateResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element SAProvisioningCertificateChain */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 223)) + { + return -1; + } + + /* encode children of SAProvisioningCertificateChain */ + if(serialize_CertificateChainType( &(type->SAProvisioningCertificateChain),service)) + { + return -1; + } + + + + /* encode end element of SAProvisioningCertificateChain */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element ContractSignatureCertChain */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 163)) + { + return -1; + } + + /* encode children of ContractSignatureCertChain */ + if(serialize_CertificateChainType( &(type->ContractSignatureCertChain),service)) + { + return -1; + } + + + + /* encode end element of ContractSignatureCertChain */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element ContractSignatureEncryptedPrivateKey */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 164)) + { + return -1; + } + + /* encode children of ContractSignatureEncryptedPrivateKey */ + if(serialize_ContractSignatureEncryptedPrivateKeyType( &(type->ContractSignatureEncryptedPrivateKey),service)) + { + return -1; + } + + + + /* encode end element of ContractSignatureEncryptedPrivateKey */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element DHpublickey */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 171)) + { + return -1; + } + + /* encode children of DHpublickey */ + if(serialize_DiffieHellmanPublickeyType( &(type->DHpublickey),service)) + { + return -1; + } + + + + /* encode end element of DHpublickey */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element eMAID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 253)) + { + return -1; + } + + /* encode children of eMAID */ + if(serialize_EMAIDType( &(type->eMAID),service)) + { + return -1; + } + + + + /* encode end element of eMAID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.RetryCounter) + { + + + + /* encode start element RetryCounter */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 222)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_INTEGER; + service->val.integer.val.int16=type->RetryCounter; + + service->val.integer.type = EXI_INTEGER_16; + + /* encode character RetryCounter */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of RetryCounter */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_CertificateInstallationReqType(struct CertificateInstallationReqType* type, +struct EXIService* service) +{ + + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->attr_Id.arraylen.data; + service->val.str.miss.codepoints= type->attr_Id.data; + if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 191,&(service->val))) + { + return -1; + } + + + + /* encode start element OEMProvisioningCert */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 199)) + { + return -1; + } + service->val.type = EXI_DATATYPE_BINARY_BASE64; + service->val.binary.len = type->OEMProvisioningCert.arraylen.data; + memcpy(service->val.binary.data, type->OEMProvisioningCert.data,type->OEMProvisioningCert.arraylen.data); + + + + + /* encode character OEMProvisioningCert */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + + /* encode end element of OEMProvisioningCert */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element ListOfRootCertificateIDs */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 192)) + { + return -1; + } + + /* encode children of ListOfRootCertificateIDs */ + if(serialize_ListOfRootCertificateIDsType( &(type->ListOfRootCertificateIDs),service)) + { + return -1; + } + + + + /* encode end element of ListOfRootCertificateIDs */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_CertificateInstallationResType(struct CertificateInstallationResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element SAProvisioningCertificateChain */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 223)) + { + return -1; + } + + /* encode children of SAProvisioningCertificateChain */ + if(serialize_CertificateChainType( &(type->SAProvisioningCertificateChain),service)) + { + return -1; + } + + + + /* encode end element of SAProvisioningCertificateChain */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element ContractSignatureCertChain */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 163)) + { + return -1; + } + + /* encode children of ContractSignatureCertChain */ + if(serialize_CertificateChainType( &(type->ContractSignatureCertChain),service)) + { + return -1; + } + + + + /* encode end element of ContractSignatureCertChain */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element ContractSignatureEncryptedPrivateKey */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 164)) + { + return -1; + } + + /* encode children of ContractSignatureEncryptedPrivateKey */ + if(serialize_ContractSignatureEncryptedPrivateKeyType( &(type->ContractSignatureEncryptedPrivateKey),service)) + { + return -1; + } + + + + /* encode end element of ContractSignatureEncryptedPrivateKey */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element DHpublickey */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 171)) + { + return -1; + } + + /* encode children of DHpublickey */ + if(serialize_DiffieHellmanPublickeyType( &(type->DHpublickey),service)) + { + return -1; + } + + + + /* encode end element of DHpublickey */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element eMAID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 253)) + { + return -1; + } + + + + + + /* encode children of eMAID */ + if(serialize_EMAIDType( &(type->eMAID),service)) + { + return -1; + } + + + + /* encode end element of eMAID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_ChargingStatusReqType(struct ChargingStatusReqType* type, +struct EXIService* service) +{ + + + return 0; +} + + +static int serialize_ChargingStatusResType(struct ChargingStatusResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 177)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->EVSEID.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->EVSEID.data,type->EVSEID.arraylen.data*sizeof(uint32_t)); + + + + /* encode character EVSEID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSEID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element SAScheduleTupleID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 224)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.uint8=type->SAScheduleTupleID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_8; + + /* encode character SAScheduleTupleID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of SAScheduleTupleID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.EVSEMaxCurrent) + { + + + + /* encode start element EVSEMaxCurrent */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 178)) + { + return -1; + } + + /* encode children of EVSEMaxCurrent */ + if(serialize_PhysicalValueType( &(type->EVSEMaxCurrent),service)) + { + return -1; + } + + + + /* encode end element of EVSEMaxCurrent */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.MeterInfo) + { + + + + /* encode start element MeterInfo */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 194)) + { + return -1; + } + + /* encode children of MeterInfo */ + if(serialize_MeterInfoType( &(type->MeterInfo),service)) + { + return -1; + } + + + + /* encode end element of MeterInfo */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ReceiptRequired) + { + + + + /* encode start element ReceiptRequired */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 217)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->ReceiptRequired; + + + /* encode character ReceiptRequired */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ReceiptRequired */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element AC_EVSEStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 129)) + { + return -1; + } + + /* encode children of AC_EVSEStatus */ + if(serialize_AC_EVSEStatusType( &(type->AC_EVSEStatus),service)) + { + return -1; + } + + + + /* encode end element of AC_EVSEStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_CableCheckReqType(struct CableCheckReqType* type, +struct EXIService* service) +{ + + + + /* encode start element DC_EVStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 170)) + { + return -1; + } + + /* encode children of DC_EVStatus */ + if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_CableCheckResType(struct CableCheckResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element DC_EVSEStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 169)) + { + return -1; + } + + /* encode children of DC_EVSEStatus */ + if(serialize_DC_EVSEStatusType( &(type->DC_EVSEStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVSEStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEProcessing */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 185)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->EVSEProcessing; + + + /* encode character EVSEProcessing */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSEProcessing */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_PreChargeReqType(struct PreChargeReqType* type, +struct EXIService* service) +{ + + + + /* encode start element DC_EVStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 170)) + { + return -1; + } + + /* encode children of DC_EVStatus */ + if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVTargetVoltage */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 189)) + { + return -1; + } + + /* encode children of EVTargetVoltage */ + if(serialize_PhysicalValueType( &(type->EVTargetVoltage),service)) + { + return -1; + } + + + + /* encode end element of EVTargetVoltage */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVTargetCurrent */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 188)) + { + return -1; + } + + /* encode children of EVTargetCurrent */ + if(serialize_PhysicalValueType( &(type->EVTargetCurrent),service)) + { + return -1; + } + + + + /* encode end element of EVTargetCurrent */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_PreChargeResType(struct PreChargeResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element DC_EVSEStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 169)) + { + return -1; + } + + /* encode children of DC_EVSEStatus */ + if(serialize_DC_EVSEStatusType( &(type->DC_EVSEStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVSEStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEPresentVoltage */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 184)) + { + return -1; + } + + /* encode children of EVSEPresentVoltage */ + if(serialize_PhysicalValueType( &(type->EVSEPresentVoltage),service)) + { + return -1; + } + + + + /* encode end element of EVSEPresentVoltage */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_CurrentDemandReqType(struct CurrentDemandReqType* type, +struct EXIService* service) +{ + + + + /* encode start element DC_EVStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 170)) + { + return -1; + } + + /* encode children of DC_EVStatus */ + if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVTargetCurrent */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 188)) + { + return -1; + } + + /* encode children of EVTargetCurrent */ + if(serialize_PhysicalValueType( &(type->EVTargetCurrent),service)) + { + return -1; + } + + + + /* encode end element of EVTargetCurrent */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.EVMaximumVoltageLimit) + { + + + + /* encode start element EVMaximumVoltageLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 175)) + { + return -1; + } + + /* encode children of EVMaximumVoltageLimit */ + if(serialize_PhysicalValueType( &(type->EVMaximumVoltageLimit),service)) + { + return -1; + } + + + + /* encode end element of EVMaximumVoltageLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.EVMaximumCurrentLimit) + { + + + + /* encode start element EVMaximumCurrentLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 173)) + { + return -1; + } + + /* encode children of EVMaximumCurrentLimit */ + if(serialize_PhysicalValueType( &(type->EVMaximumCurrentLimit),service)) + { + return -1; + } + + + + /* encode end element of EVMaximumCurrentLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.EVMaximumPowerLimit) + { + + + + /* encode start element EVMaximumPowerLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 174)) + { + return -1; + } + + /* encode children of EVMaximumPowerLimit */ + if(serialize_PhysicalValueType( &(type->EVMaximumPowerLimit),service)) + { + return -1; + } + + + + /* encode end element of EVMaximumPowerLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.BulkChargingComplete) + { + + + + /* encode start element BulkChargingComplete */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 137)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->BulkChargingComplete; + + + /* encode character BulkChargingComplete */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of BulkChargingComplete */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element ChargingComplete */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 156)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->ChargingComplete; + + + /* encode character ChargingComplete */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ChargingComplete */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.RemainingTimeToFullSoC) + { + + + + /* encode start element RemainingTimeToFullSoC */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 219)) + { + return -1; + } + + /* encode children of RemainingTimeToFullSoC */ + if(serialize_PhysicalValueType( &(type->RemainingTimeToFullSoC),service)) + { + return -1; + } + + + + /* encode end element of RemainingTimeToFullSoC */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.RemainingTimeToBulkSoC) + { + + + + /* encode start element RemainingTimeToBulkSoC */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 218)) + { + return -1; + } + + /* encode children of RemainingTimeToBulkSoC */ + if(serialize_PhysicalValueType( &(type->RemainingTimeToBulkSoC),service)) + { + return -1; + } + + + + /* encode end element of RemainingTimeToBulkSoC */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element EVTargetVoltage */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 189)) + { + return -1; + } + + /* encode children of EVTargetVoltage */ + if(serialize_PhysicalValueType( &(type->EVTargetVoltage),service)) + { + return -1; + } + + + + /* encode end element of EVTargetVoltage */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_CurrentDemandResType(struct CurrentDemandResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element DC_EVSEStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 169)) + { + return -1; + } + + /* encode children of DC_EVSEStatus */ + if(serialize_DC_EVSEStatusType( &(type->DC_EVSEStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVSEStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEPresentVoltage */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 184)) + { + return -1; + } + + /* encode children of EVSEPresentVoltage */ + if(serialize_PhysicalValueType( &(type->EVSEPresentVoltage),service)) + { + return -1; + } + + + + /* encode end element of EVSEPresentVoltage */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEPresentCurrent */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 183)) + { + return -1; + } + + /* encode children of EVSEPresentCurrent */ + if(serialize_PhysicalValueType( &(type->EVSEPresentCurrent),service)) + { + return -1; + } + + + + /* encode end element of EVSEPresentCurrent */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSECurrentLimitAchieved */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 176)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->EVSECurrentLimitAchieved; + + + /* encode character EVSECurrentLimitAchieved */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSECurrentLimitAchieved */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEVoltageLimitAchieved */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 187)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->EVSEVoltageLimitAchieved; + + + /* encode character EVSEVoltageLimitAchieved */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSEVoltageLimitAchieved */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEPowerLimitAchieved */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 182)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->EVSEPowerLimitAchieved; + + + /* encode character EVSEPowerLimitAchieved */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSEPowerLimitAchieved */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.EVSEMaximumVoltageLimit) + { + + + + /* encode start element EVSEMaximumVoltageLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 181)) + { + return -1; + } + + /* encode children of EVSEMaximumVoltageLimit */ + if(serialize_PhysicalValueType( &(type->EVSEMaximumVoltageLimit),service)) + { + return -1; + } + + + + /* encode end element of EVSEMaximumVoltageLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.EVSEMaximumCurrentLimit) + { + + + + /* encode start element EVSEMaximumCurrentLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 179)) + { + return -1; + } + + /* encode children of EVSEMaximumCurrentLimit */ + if(serialize_PhysicalValueType( &(type->EVSEMaximumCurrentLimit),service)) + { + return -1; + } + + + + /* encode end element of EVSEMaximumCurrentLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.EVSEMaximumPowerLimit) + { + + + + /* encode start element EVSEMaximumPowerLimit */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 180)) + { + return -1; + } + + /* encode children of EVSEMaximumPowerLimit */ + if(serialize_PhysicalValueType( &(type->EVSEMaximumPowerLimit),service)) + { + return -1; + } + + + + /* encode end element of EVSEMaximumPowerLimit */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + + /* encode start element EVSEID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 177)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_STRING; + service->val.str.type = EXI_STRING_VALUE_MISS; + service->val.str.miss.len = type->EVSEID.arraylen.data; + memcpy(service->val.str.miss.codepoints, type->EVSEID.data,type->EVSEID.arraylen.data*sizeof(uint32_t)); + + + + /* encode character EVSEID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of EVSEID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element SAScheduleTupleID */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 224)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER; + service->val.integer.val.uint8=type->SAScheduleTupleID; + + service->val.integer.type = EXI_UNSIGNED_INTEGER_8; + + /* encode character SAScheduleTupleID */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of SAScheduleTupleID */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + if(type->isused.MeterInfo) + { + + + + /* encode start element MeterInfo */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 194)) + { + return -1; + } + + /* encode children of MeterInfo */ + if(serialize_MeterInfoType( &(type->MeterInfo),service)) + { + return -1; + } + + + + /* encode end element of MeterInfo */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ReceiptRequired) + { + + + + /* encode start element ReceiptRequired */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 217)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_BOOLEAN; + service->val.boolean=type->ReceiptRequired; + + + /* encode character ReceiptRequired */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ReceiptRequired */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_WeldingDetectionReqType(struct WeldingDetectionReqType* type, +struct EXIService* service) +{ + + + + /* encode start element DC_EVStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 170)) + { + return -1; + } + + /* encode children of DC_EVStatus */ + if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_WeldingDetectionResType(struct WeldingDetectionResType* type, +struct EXIService* service) +{ + + + + /* encode start element ResponseCode */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221)) + { + return -1; + } + + service->val.type = EXI_DATATYPE_ENUMERATION; + service->val.enumeration=type->ResponseCode; + + + /* encode character ResponseCode */ + if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val))) + { + + return -1; + } + + + /* encode end element of ResponseCode */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element DC_EVSEStatus */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 169)) + { + return -1; + } + + /* encode children of DC_EVSEStatus */ + if(serialize_DC_EVSEStatusType( &(type->DC_EVSEStatus),service)) + { + return -1; + } + + + + /* encode end element of DC_EVSEStatus */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element EVSEPresentVoltage */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 184)) + { + return -1; + } + + /* encode children of EVSEPresentVoltage */ + if(serialize_PhysicalValueType( &(type->EVSEPresentVoltage),service)) + { + return -1; + } + + + + /* encode end element of EVSEPresentVoltage */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_BodyType(struct BodyType* type, +struct EXIService* service) +{ + + if(type->isused.SessionSetupReq) + { + + + + /* encode start element SessionSetupReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 241)) + { + return -1; + } + + /* encode children of SessionSetupReq */ + if(serialize_SessionSetupReqType( (type->SessionSetupReq),service)) + { + return -1; + } + + + + /* encode end element of SessionSetupReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.SessionSetupRes) + { + + + + /* encode start element SessionSetupRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 243)) + { + return -1; + } + + /* encode children of SessionSetupRes */ + if(serialize_SessionSetupResType( (type->SessionSetupRes),service)) + { + return -1; + } + + + + /* encode end element of SessionSetupRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ServiceDiscoveryReq) + { + + + + /* encode start element ServiceDiscoveryReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 232)) + { + return -1; + } + + /* encode children of ServiceDiscoveryReq */ + if(serialize_ServiceDiscoveryReqType( (type->ServiceDiscoveryReq),service)) + { + return -1; + } + + + + /* encode end element of ServiceDiscoveryReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ServiceDiscoveryRes) + { + + + + /* encode start element ServiceDiscoveryRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 234)) + { + return -1; + } + + /* encode children of ServiceDiscoveryRes */ + if(serialize_ServiceDiscoveryResType( (type->ServiceDiscoveryRes),service)) + { + return -1; + } + + + + /* encode end element of ServiceDiscoveryRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ServiceDetailReq) + { + + + + /* encode start element ServiceDetailReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 228)) + { + return -1; + } + + /* encode children of ServiceDetailReq */ + if(serialize_ServiceDetailReqType( (type->ServiceDetailReq),service)) + { + return -1; + } + + + + /* encode end element of ServiceDetailReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ServiceDetailRes) + { + + + + /* encode start element ServiceDetailRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 230)) + { + return -1; + } + + /* encode children of ServiceDetailRes */ + if(serialize_ServiceDetailResType( (type->ServiceDetailRes),service)) + { + return -1; + } + + + + /* encode end element of ServiceDetailRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.PaymentServiceSelectionReq) + { + + + + /* encode start element PaymentServiceSelectionReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 205)) + { + return -1; + } + + /* encode children of PaymentServiceSelectionReq */ + if(serialize_PaymentServiceSelectionReqType( (type->PaymentServiceSelectionReq),service)) + { + return -1; + } + + + + /* encode end element of PaymentServiceSelectionReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.PaymentServiceSelectionRes) + { + + + + /* encode start element PaymentServiceSelectionRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 207)) + { + return -1; + } + + /* encode children of PaymentServiceSelectionRes */ + if(serialize_PaymentServiceSelectionResType( (type->PaymentServiceSelectionRes),service)) + { + return -1; + } + + + + /* encode end element of PaymentServiceSelectionRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.PaymentDetailsReq) + { + + + + /* encode start element PaymentDetailsReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 200)) + { + return -1; + } + + /* encode children of PaymentDetailsReq */ + if(serialize_PaymentDetailsReqType( (type->PaymentDetailsReq),service)) + { + return -1; + } + + + + /* encode end element of PaymentDetailsReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.PaymentDetailsRes) + { + + + + /* encode start element PaymentDetailsRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 202)) + { + return -1; + } + + /* encode children of PaymentDetailsRes */ + if(serialize_PaymentDetailsResType( (type->PaymentDetailsRes),service)) + { + return -1; + } + + + + /* encode end element of PaymentDetailsRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.AuthorizationReq) + { + + + + /* encode start element AuthorizationReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 130)) + { + return -1; + } + + /* encode children of AuthorizationReq */ + if(serialize_AuthorizationReqType( (type->AuthorizationReq),service)) + { + return -1; + } + + + + /* encode end element of AuthorizationReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.AuthorizationRes) + { + + + + /* encode start element AuthorizationRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 132)) + { + return -1; + } + + /* encode children of AuthorizationRes */ + if(serialize_AuthorizationResType( (type->AuthorizationRes),service)) + { + return -1; + } + + + + /* encode end element of AuthorizationRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ChargeParameterDiscoveryReq) + { + + + + /* encode start element ChargeParameterDiscoveryReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 150)) + { + return -1; + } + + /* encode children of ChargeParameterDiscoveryReq */ + if(serialize_ChargeParameterDiscoveryReqType( (type->ChargeParameterDiscoveryReq),service)) + { + return -1; + } + + + + /* encode end element of ChargeParameterDiscoveryReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ChargeParameterDiscoveryRes) + { + + + + /* encode start element ChargeParameterDiscoveryRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 152)) + { + return -1; + } + + /* encode children of ChargeParameterDiscoveryRes */ + if(serialize_ChargeParameterDiscoveryResType( (type->ChargeParameterDiscoveryRes),service)) + { + return -1; + } + + + + /* encode end element of ChargeParameterDiscoveryRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.PowerDeliveryReq) + { + + + + /* encode start element PowerDeliveryReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 209)) + { + return -1; + } + + /* encode children of PowerDeliveryReq */ + if(serialize_PowerDeliveryReqType( (type->PowerDeliveryReq),service)) + { + return -1; + } + + + + /* encode end element of PowerDeliveryReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.PowerDeliveryRes) + { + + + + /* encode start element PowerDeliveryRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 211)) + { + return -1; + } + + /* encode children of PowerDeliveryRes */ + if(serialize_PowerDeliveryResType( (type->PowerDeliveryRes),service)) + { + return -1; + } + + + + /* encode end element of PowerDeliveryRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.MeteringReceiptReq) + { + + + + /* encode start element MeteringReceiptReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 195)) + { + return -1; + } + + /* encode children of MeteringReceiptReq */ + if(serialize_MeteringReceiptReqType( (type->MeteringReceiptReq),service)) + { + return -1; + } + + + + /* encode end element of MeteringReceiptReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.MeteringReceiptRes) + { + + + + /* encode start element MeteringReceiptRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 197)) + { + return -1; + } + + /* encode children of MeteringReceiptRes */ + if(serialize_MeteringReceiptResType( (type->MeteringReceiptRes),service)) + { + return -1; + } + + + + /* encode end element of MeteringReceiptRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.SessionStopReq) + { + + + + /* encode start element SessionStopReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 245)) + { + return -1; + } + + /* encode children of SessionStopReq */ + if(serialize_SessionStopReqType( (type->SessionStopReq),service)) + { + return -1; + } + + + + /* encode end element of SessionStopReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.SessionStopRes) + { + + + + /* encode start element SessionStopRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 247)) + { + return -1; + } + + /* encode children of SessionStopRes */ + if(serialize_SessionStopResType( (type->SessionStopRes),service)) + { + return -1; + } + + + + /* encode end element of SessionStopRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.CertificateUpdateReq) + { + + + + /* encode start element CertificateUpdateReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 146)) + { + return -1; + } + + /* encode children of CertificateUpdateReq */ + if(serialize_CertificateUpdateReqType( (type->CertificateUpdateReq),service)) + { + return -1; + } + + + + /* encode end element of CertificateUpdateReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.CertificateUpdateRes) + { + + + + /* encode start element CertificateUpdateRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 148)) + { + return -1; + } + + /* encode children of CertificateUpdateRes */ + if(serialize_CertificateUpdateResType( (type->CertificateUpdateRes),service)) + { + return -1; + } + + + + /* encode end element of CertificateUpdateRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.CertificateInstallationReq) + { + + + + /* encode start element CertificateInstallationReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 142)) + { + return -1; + } + + /* encode children of CertificateInstallationReq */ + if(serialize_CertificateInstallationReqType( (type->CertificateInstallationReq),service)) + { + return -1; + } + + + + /* encode end element of CertificateInstallationReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.CertificateInstallationRes) + { + + + + /* encode start element CertificateInstallationRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 144)) + { + return -1; + } + + /* encode children of CertificateInstallationRes */ + if(serialize_CertificateInstallationResType( (type->CertificateInstallationRes),service)) + { + return -1; + } + + + + /* encode end element of CertificateInstallationRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ChargingStatusReq) + { + + + + /* encode start element ChargingStatusReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 159)) + { + return -1; + } + + /* encode children of ChargingStatusReq */ + if(serialize_ChargingStatusReqType( (type->ChargingStatusReq),service)) + { + return -1; + } + + + + /* encode end element of ChargingStatusReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.ChargingStatusRes) + { + + + + /* encode start element ChargingStatusRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 161)) + { + return -1; + } + + /* encode children of ChargingStatusRes */ + if(serialize_ChargingStatusResType( (type->ChargingStatusRes),service)) + { + return -1; + } + + + + /* encode end element of ChargingStatusRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.CableCheckReq) + { + + + + /* encode start element CableCheckReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 138)) + { + return -1; + } + + /* encode children of CableCheckReq */ + if(serialize_CableCheckReqType( (type->CableCheckReq),service)) + { + return -1; + } + + + + /* encode end element of CableCheckReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.CableCheckRes) + { + + + + /* encode start element CableCheckRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 140)) + { + return -1; + } + + /* encode children of CableCheckRes */ + if(serialize_CableCheckResType( (type->CableCheckRes),service)) + { + return -1; + } + + + + /* encode end element of CableCheckRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.PreChargeReq) + { + + + + /* encode start element PreChargeReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 213)) + { + return -1; + } + + /* encode children of PreChargeReq */ + if(serialize_PreChargeReqType( (type->PreChargeReq),service)) + { + return -1; + } + + + + /* encode end element of PreChargeReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.PreChargeRes) + { + + + + /* encode start element PreChargeRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 215)) + { + return -1; + } + + /* encode children of PreChargeRes */ + if(serialize_PreChargeResType( (type->PreChargeRes),service)) + { + return -1; + } + + + + /* encode end element of PreChargeRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.CurrentDemandReq) + { + + + + /* encode start element CurrentDemandReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 165)) + { + return -1; + } + + /* encode children of CurrentDemandReq */ + if(serialize_CurrentDemandReqType( (type->CurrentDemandReq),service)) + { + return -1; + } + + + + /* encode end element of CurrentDemandReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.CurrentDemandRes) + { + + + + /* encode start element CurrentDemandRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 167)) + { + return -1; + } + + /* encode children of CurrentDemandRes */ + if(serialize_CurrentDemandResType( (type->CurrentDemandRes),service)) + { + return -1; + } + + + + /* encode end element of CurrentDemandRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.WeldingDetectionReq) + { + + + + /* encode start element WeldingDetectionReq */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 249)) + { + return -1; + } + + /* encode children of WeldingDetectionReq */ + if(serialize_WeldingDetectionReqType( (type->WeldingDetectionReq),service)) + { + return -1; + } + + + + /* encode end element of WeldingDetectionReq */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + if(type->isused.WeldingDetectionRes) + { + + + + /* encode start element WeldingDetectionRes */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 251)) + { + return -1; + } + + /* encode children of WeldingDetectionRes */ + if(serialize_WeldingDetectionResType( (type->WeldingDetectionRes),service)) + { + return -1; + } + + + + /* encode end element of WeldingDetectionRes */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + } + + + return 0; +} + + +static int serialize_AnonType_V2G_Message(struct AnonType_V2G_Message* type, +struct EXIService* service) +{ + + + + /* encode start element Header */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 443)) + { + return -1; + } + + /* encode children of Header */ + if(serialize_MessageHeaderType( (type->Header),service)) + { + return -1; + } + + + + /* encode end element of Header */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + + /* encode start element Body */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 442)) + { + return -1; + } + + /* encode children of Body */ + if(serialize_BodyType( &(type->Body),service)) + { + return -1; + } + + + + /* encode end element of Body */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + +static int serialize_EXIDocumentType(struct EXIDocumentType* type, +struct EXIService* service) +{ + + + + /* encode start element V2G_Message */ + if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 444)) + { + return -1; + } + + /* encode children of V2G_Message */ + if(serialize_AnonType_V2G_Message( &(type->V2G_Message),service)) + { + return -1; + } + + + + /* encode end element of V2G_Message */ + exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode)); + + + + return 0; +} + + + + + + /* serialize data to EXI stream */ +static int serialize_message(struct EXIService* service) +{ + + /* encode start document */ + if (exiv2gEncodeStartDocument(&(service->outStream), &(service->stateEncode)) ) + { + + return -1; + } + + + /* encode root element of V2G_Message */ + if (serialize_EXIDocumentType(&(service->exiMsg), service)) + + + { + + return -1; + } + + + /* encode end document */ + if (exiv2gEncodeEndDocument(&(service->outStream), &(service->stateEncode))) { + + return -1; + } + + return 0; + + } + + + + diff --git a/src/service/v2g_serviceDispatcher.c b/src/service/v2g_serviceDispatcher.c new file mode 100644 index 0000000..242500f --- /dev/null +++ b/src/service/v2g_serviceDispatcher.c @@ -0,0 +1,2536 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + +#include "v2g_service.h" +#include "v2g_serviceDispatcher.h" +#include "v2g_dataTypes.h" +#include "v2g_dataTypes.c" +#include "v2g_serviceMethods.h" +#include "v2g_serviceDataSerialization.c" +#include "EXITypes.h" + #include "v2gEXIDecoder.h" + #include "v2gEXIEncoder.h" + #include "v2gQNameDefines.h" + #include + + +static int deserializeMessage(struct EXIService* service); + +uint16_t numberOfLocalStringsDecode[EXI_v2gMAX_NUMBER_OF_QNAMES]; + +static int _setUnsignedInt64Value(exi_integer_t* iv, uint64_t* int64) { + int errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + *int64 = iv->val.uint8; + break; + case EXI_UNSIGNED_INTEGER_16: + *int64 = iv->val.uint16; + break; + case EXI_UNSIGNED_INTEGER_32: + if (iv->val.uint32 <= 2147483647) { + *int64 = iv->val.uint32; + } else { + errn = -1; + } + break; + case EXI_UNSIGNED_INTEGER_64: + *int64 = iv->val.int32; + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + *int64 = iv->val.int8; + break; + case EXI_INTEGER_16: + *int64 = iv->val.int16; + break; + case EXI_INTEGER_32: + *int64 = iv->val.int32; + break; + case EXI_INTEGER_64: + *int64 = iv->val.int32; + break; + } + return errn; +} + + static int _setUnsignedInt32Value(exi_integer_t* iv, uint32_t* int32) { + int errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + *int32 = iv->val.uint8; + break; + case EXI_UNSIGNED_INTEGER_16: + *int32 = iv->val.uint16; + break; + case EXI_UNSIGNED_INTEGER_32: + if (iv->val.uint32 <= 2147483647) { + *int32 = iv->val.uint32; + } else { + errn = -1; + } + break; + case EXI_UNSIGNED_INTEGER_64: + errn = -1; + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + *int32 = iv->val.int8; + break; + case EXI_INTEGER_16: + *int32 = iv->val.int16; + break; + case EXI_INTEGER_32: + *int32 = iv->val.int32; + break; + case EXI_INTEGER_64: + errn = -1; + break; + } + return errn; +} + + +static int _setUnsignedInt16Value(exi_integer_t* iv, uint16_t* uint16) { + int errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + *uint16 = iv->val.uint8; + break; + case EXI_UNSIGNED_INTEGER_16: + *uint16 = iv->val.uint16; + break; + case EXI_UNSIGNED_INTEGER_32: + if (iv->val.uint32 <= 2147483647) { + errn = -1; + } else { + errn = -1; + } + break; + case EXI_UNSIGNED_INTEGER_64: + errn = -1; + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + *uint16 = iv->val.int8; + break; + case EXI_INTEGER_16: + *uint16 = iv->val.int16; + break; + case EXI_INTEGER_32: + errn = -1; + break; + case EXI_INTEGER_64: + errn = -1; + } + return errn; +} + + + + +static int _setInt16Value(exi_integer_t* iv, int16_t* int16) { + int errn = 0; + switch(iv->type) { + /* Unsigned Integer */ + case EXI_UNSIGNED_INTEGER_8: + *int16 = iv->val.uint8; + break; + case EXI_UNSIGNED_INTEGER_16: + *int16 = iv->val.int16; + break; + case EXI_UNSIGNED_INTEGER_32: + errn = -1; + break; + case EXI_UNSIGNED_INTEGER_64: + errn = -1; + break; + /* (Signed) Integer */ + case EXI_INTEGER_8: + *int16 = iv->val.int8; + break; + case EXI_INTEGER_16: + *int16 = iv->val.int16; + break; + case EXI_INTEGER_32: + errn = -1;; + break; + case EXI_INTEGER_64: + errn = -1; + break; + } + return errn; +} + +/** + * Deserialize an element value of the EXI stream and assign it to the + * service data structure + */ +static int deserializeElementAttributeCharacter(struct EXIService* service) +{ + + switch(service->qnameID) { + case 332: /* FaultCode */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + service->exiMsg.V2G_Message.Header->Notification.FaultCode=service->val.enumeration; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 333: /* FaultMsg */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.V2G_Message.Header->Notification.FaultMsg.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Notification.FaultMsg.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Notification.isused.FaultMsg=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 0: /* attr_Algorithm */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if( service->idPath.id[4] == 59) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.CanonicalizationMethod.attr_Algorithm.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.CanonicalizationMethod.attr_Algorithm.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[4] == 102) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.SignatureMethod.attr_Algorithm.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.SignatureMethod.attr_Algorithm.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[4] == 93) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].DigestMethod.attr_Algorithm.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].DigestMethod.attr_Algorithm.arraylen.data = service->val.str.miss.len; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 2: /* attr_Id */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if(service->idPath.id[3] == 109) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignatureValue.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignatureValue.attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->SignatureValue.isused.attr_Id=1; + + } else if(service->idPath.id[4] == 93) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].isused.attr_Id=1; + + } if(service->idPath.id[3] == 111) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.isused.attr_Id=1; + + } else if( service->idPath.id[2] == 101) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->isused.attr_Id=1; + + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 5: /* attr_Type */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_Type.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_Type.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].isused.attr_Type=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 6: /* attr_URI */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_URI.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].attr_URI.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].isused.attr_URI=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 66: /* DigestValue */ + + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].DigestValue.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.Reference[service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference].DigestValue.arraylen.data = service->val.binary.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 447: /* SessionID */ + + if(service->val.type == EXI_DATATYPE_BINARY_HEX) + { + memcpy(service->exiMsg.V2G_Message.Header->SessionID.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Header->SessionID.arraylen.data = service->val.binary.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 172: /* EVCCID */ + + if(service->val.type == EXI_DATATYPE_BINARY_HEX) + { + memcpy(service->exiMsg.V2G_Message.Body.SessionSetupReq->EVCCID.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.SessionSetupReq->EVCCID.arraylen.data = service->val.binary.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 239: /* ServiceScope */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.V2G_Message.Body.ServiceDiscoveryReq->ServiceScope.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.ServiceDiscoveryReq->ServiceScope.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.ServiceDiscoveryReq->isused.ServiceScope=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 227: /* ServiceCategory */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + service->exiMsg.V2G_Message.Body.ServiceDiscoveryReq->ServiceCategory=service->val.enumeration; + service->exiMsg.V2G_Message.Body.ServiceDiscoveryReq->isused.ServiceCategory=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 236: /* ServiceID */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ServiceDetailReq->ServiceID=service->val.integer.val.uint16; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 343: /* Multiplier */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + if( service->idPath.id[2] == 213 && service->idPath.id[3] == 189) + { + service->exiMsg.V2G_Message.Body.PreChargeReq->EVTargetVoltage.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 213 && service->idPath.id[3] == 188) + { + service->exiMsg.V2G_Message.Body.PreChargeReq->EVTargetCurrent.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 165 && service->idPath.id[3] == 188) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVTargetCurrent.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[3] == 175) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVMaximumVoltageLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[3] == 173) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVMaximumCurrentLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[3] == 174) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVMaximumPowerLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[3] == 219) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->RemainingTimeToFullSoC.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[3] == 218) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->RemainingTimeToBulkSoC.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 165 && service->idPath.id[3] == 189) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVTargetVoltage.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 289) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EAmount.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 298) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EVMaxVoltage.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 297) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EVMaxCurrent.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 302) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EVMinCurrent.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 299) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVMaximumCurrentLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 300) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVMaximumPowerLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 301) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVMaximumVoltageLimit.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 294) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVEnergyCapacity.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[4] == 295) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVEnergyRequest.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 209) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.ProfileEntry[service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.arraylen.ProfileEntry].ChargingProfileEntryMaxPower.Multiplier=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 230) + { + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].physicalValue.Multiplier=service->val.integer.val.int8; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 399: /* Unit */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + if( service->idPath.id[2] == 213 && service->idPath.id[3] == 189) + { + service->exiMsg.V2G_Message.Body.PreChargeReq->EVTargetVoltage.Unit=service->val.enumeration; + } else if(service->idPath.id[2] == 213 && service->idPath.id[3] == 188) + { + service->exiMsg.V2G_Message.Body.PreChargeReq->EVTargetCurrent.Unit=service->val.enumeration; + } else if(service->idPath.id[2] == 165 && service->idPath.id[3] == 188) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVTargetCurrent.Unit=service->val.enumeration; + } else if(service->idPath.id[3] == 175) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVMaximumVoltageLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[3] == 173) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVMaximumCurrentLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[3] == 174) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVMaximumPowerLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[3] == 219) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->RemainingTimeToFullSoC.Unit=service->val.enumeration; + } else if(service->idPath.id[3] == 218) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->RemainingTimeToBulkSoC.Unit=service->val.enumeration; + } else if(service->idPath.id[2] == 165 && service->idPath.id[3] == 189) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVTargetVoltage.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 289) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EAmount.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 298) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EVMaxVoltage.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 297) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EVMaxCurrent.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 302) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EVMinCurrent.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 299) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVMaximumCurrentLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 300) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVMaximumPowerLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 301) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVMaximumVoltageLimit.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 294) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVEnergyCapacity.Unit=service->val.enumeration; + } else if(service->idPath.id[4] == 295) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVEnergyRequest.Unit=service->val.enumeration; + } else if(service->idPath.id[2] == 209) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.ProfileEntry[service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.arraylen.ProfileEntry].ChargingProfileEntryMaxPower.Unit=service->val.enumeration; + } else if(service->idPath.id[2] == 230) + { + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].physicalValue.Unit=service->val.enumeration; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 400: /* Value */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + if( service->idPath.id[2] == 213 && service->idPath.id[3] == 189) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.PreChargeReq->EVTargetVoltage.Value=service->val.integer.val.int16; + } else if(service->idPath.id[2] == 213 && service->idPath.id[3] == 188) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.PreChargeReq->EVTargetCurrent.Value=service->val.integer.val.int16; + } else if(service->idPath.id[2] == 165 && service->idPath.id[3] == 188) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVTargetCurrent.Value=service->val.integer.val.int16; + } else if(service->idPath.id[3] == 175) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVMaximumVoltageLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[3] == 173) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVMaximumCurrentLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[3] == 174) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVMaximumPowerLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[3] == 219) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandReq->RemainingTimeToFullSoC.Value=service->val.integer.val.int16; + } else if(service->idPath.id[3] == 218) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandReq->RemainingTimeToBulkSoC.Value=service->val.integer.val.int16; + } else if(service->idPath.id[2] == 165 && service->idPath.id[3] == 189) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.CurrentDemandReq->EVTargetVoltage.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 289) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EAmount.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 298) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EVMaxVoltage.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 297) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EVMaxCurrent.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 302) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->EVMinCurrent.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 299) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVMaximumCurrentLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 300) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVMaximumPowerLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 301) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVMaximumVoltageLimit.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 294) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVEnergyCapacity.Value=service->val.integer.val.int16; + } else if(service->idPath.id[4] == 295) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->EVEnergyRequest.Value=service->val.integer.val.int16; + } else if(service->idPath.id[2] == 209) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.ProfileEntry[service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.arraylen.ProfileEntry].ChargingProfileEntryMaxPower.Value=service->val.integer.val.int16; + } else if(service->idPath.id[2] == 230) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].Parameter[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.ParameterSet[service->exiMsg.V2G_Message.Body.ServiceDetailRes->ServiceParameterList.arraylen.ParameterSet].arraylen.Parameter].physicalValue.Value=service->val.integer.val.int16; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 386: /* ServiceID */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.PaymentServiceSelectionReq->SelectedServiceList.SelectedService[service->exiMsg.V2G_Message.Body.PaymentServiceSelectionReq->SelectedServiceList.arraylen.SelectedService].ServiceID=service->val.integer.val.uint16; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 355: /* ParameterSetID */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.PaymentServiceSelectionReq->SelectedServiceList.SelectedService[service->exiMsg.V2G_Message.Body.PaymentServiceSelectionReq->SelectedServiceList.arraylen.SelectedService].ParameterSetID=service->val.integer.val.int16; + service->exiMsg.V2G_Message.Body.PaymentServiceSelectionReq->SelectedServiceList.SelectedService[service->exiMsg.V2G_Message.Body.PaymentServiceSelectionReq->SelectedServiceList.arraylen.SelectedService].isused.ParameterSetID=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 225: /* SelectedPaymentOption */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + service->exiMsg.V2G_Message.Body.PaymentServiceSelectionReq->SelectedPaymentOption=service->val.enumeration; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 262: /* Certificate */ + + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + if( service->idPath.id[0] == -1 && service->idPath.id[0] == -1) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ContractSignatureCertChain.Certificate.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ContractSignatureCertChain.Certificate.arraylen.data = service->val.binary.len; + + } else if(service->idPath.id[2] == 146 && service->idPath.id[4] == 393) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ContractSignatureCertChain.SubCertificates.Certificate[service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ContractSignatureCertChain.SubCertificates.arraylen.Certificate].data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ContractSignatureCertChain.SubCertificates.Certificate[service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ContractSignatureCertChain.SubCertificates.arraylen.Certificate].arraylen.data = service->val.binary.len; + + service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ContractSignatureCertChain.SubCertificates.arraylen.Certificate++; + + } else if(service->idPath.id[2] == 200 && service->idPath.id[4] == 393) + { + memcpy(service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.SubCertificates.Certificate[service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.SubCertificates.arraylen.Certificate].data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.SubCertificates.Certificate[service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.SubCertificates.arraylen.Certificate].arraylen.data = service->val.binary.len; + + service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.SubCertificates.arraylen.Certificate++; + + } else if(service->idPath.id[2] == 200 && service->idPath.id[3] == 163) + { + memcpy(service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.Certificate.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.Certificate.arraylen.data = service->val.binary.len; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 336: /* attr_Id */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if( service->idPath.id[2] == 146) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ContractSignatureCertChain.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ContractSignatureCertChain.attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ContractSignatureCertChain.isused.attr_Id=1; + + } else if(service->idPath.id[2] == 200) + { + memcpy(service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.PaymentDetailsReq->ContractSignatureCertChain.isused.attr_Id=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 253: /* eMAID */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if( service->idPath.id[2] == 200) + { + memcpy(service->exiMsg.V2G_Message.Body.PaymentDetailsReq->eMAID.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.PaymentDetailsReq->eMAID.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[2] == 146) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateReq->eMAID.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateUpdateReq->eMAID.arraylen.data = service->val.str.miss.len; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 191: /* attr_Id */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if( service->idPath.id[2] == 130) + { + memcpy(service->exiMsg.V2G_Message.Body.AuthorizationReq->attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.AuthorizationReq->attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.AuthorizationReq->isused.attr_Id=1; + + } else if(service->idPath.id[2] == 146) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateReq->attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateUpdateReq->attr_Id.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[2] == 142) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationReq->attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateInstallationReq->attr_Id.arraylen.data = service->val.str.miss.len; + + } else if(service->idPath.id[2] == 195) + { + memcpy(service->exiMsg.V2G_Message.Body.MeteringReceiptReq->attr_Id.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->attr_Id.arraylen.data = service->val.str.miss.len; + + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->isused.attr_Id=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 190: /* GenChallenge */ + + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + memcpy(service->exiMsg.V2G_Message.Body.AuthorizationReq->GenChallenge.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.AuthorizationReq->GenChallenge.arraylen.data = service->val.binary.len; + + service->exiMsg.V2G_Message.Body.AuthorizationReq->isused.GenChallenge=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 287: /* DepartureTime */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if( service->idPath.id[3] == 254) + { + if(_setUnsignedInt32Value(&(service->val.integer),&(service->val.integer.val.uint32))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->DepartureTime=service->val.integer.val.uint32; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->AC_EVChargeParameter->isused.DepartureTime=1; + + } else if(service->idPath.id[3] == 275) + { + if(_setUnsignedInt32Value(&(service->val.integer),&(service->val.integer.val.uint32))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->DepartureTime=service->val.integer.val.uint32; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->isused.DepartureTime=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 306: /* EVReady */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + if( service->idPath.id[2] == 138) + { + service->exiMsg.V2G_Message.Body.CableCheckReq->DC_EVStatus.EVReady=service->val.boolean; + } else if(service->idPath.id[2] == 213) + { + service->exiMsg.V2G_Message.Body.PreChargeReq->DC_EVStatus.EVReady=service->val.boolean; + } else if(service->idPath.id[2] == 165) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->DC_EVStatus.EVReady=service->val.boolean; + } else if(service->idPath.id[2] == 249) + { + service->exiMsg.V2G_Message.Body.WeldingDetectionReq->DC_EVStatus.EVReady=service->val.boolean; + } else if(service->idPath.id[2] == 209) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->DC_EVPowerDeliveryParameter->DC_EVStatus.EVReady=service->val.boolean; + } else if(service->idPath.id[2] == 150) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->DC_EVStatus.EVReady=service->val.boolean; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 296: /* EVErrorCode */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + if( service->idPath.id[2] == 138) + { + service->exiMsg.V2G_Message.Body.CableCheckReq->DC_EVStatus.EVErrorCode=service->val.enumeration; + } else if(service->idPath.id[2] == 213) + { + service->exiMsg.V2G_Message.Body.PreChargeReq->DC_EVStatus.EVErrorCode=service->val.enumeration; + } else if(service->idPath.id[2] == 165) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->DC_EVStatus.EVErrorCode=service->val.enumeration; + } else if(service->idPath.id[2] == 249) + { + service->exiMsg.V2G_Message.Body.WeldingDetectionReq->DC_EVStatus.EVErrorCode=service->val.enumeration; + } else if(service->idPath.id[2] == 209) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->DC_EVPowerDeliveryParameter->DC_EVStatus.EVErrorCode=service->val.enumeration; + } else if(service->idPath.id[2] == 150) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->DC_EVStatus.EVErrorCode=service->val.enumeration; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 305: /* EVRESSSOC */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + if( service->idPath.id[2] == 138) + { + service->exiMsg.V2G_Message.Body.CableCheckReq->DC_EVStatus.EVRESSSOC=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 213) + { + service->exiMsg.V2G_Message.Body.PreChargeReq->DC_EVStatus.EVRESSSOC=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 165) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->DC_EVStatus.EVRESSSOC=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 249) + { + service->exiMsg.V2G_Message.Body.WeldingDetectionReq->DC_EVStatus.EVRESSSOC=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 209) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->DC_EVPowerDeliveryParameter->DC_EVStatus.EVRESSSOC=service->val.integer.val.int8; + } else if(service->idPath.id[2] == 150) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->DC_EVStatus.EVRESSSOC=service->val.integer.val.int8; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 335: /* FullSOC */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->FullSOC=service->val.integer.val.int8; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->isused.FullSOC=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 261: /* BulkSOC */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->BulkSOC=service->val.integer.val.int8; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->isused.BulkSOC=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 193: /* MaxEntriesSAScheduleTuple */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if(_setUnsignedInt16Value(&(service->val.integer),&(service->val.integer.val.uint16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->MaxEntriesSAScheduleTuple=service->val.integer.val.uint16; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->isused.MaxEntriesSAScheduleTuple=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 220: /* RequestedEnergyTransferMode */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->RequestedEnergyTransferMode=service->val.enumeration; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 268: /* ChargingProfileEntryStart */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + if(_setUnsignedInt32Value(&(service->val.integer),&(service->val.integer.val.uint32))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.ProfileEntry[service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.arraylen.ProfileEntry].ChargingProfileEntryStart=service->val.integer.val.uint32; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 266: /* ChargingProfileEntryMaxNumberOfPhasesInUse */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.ProfileEntry[service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.arraylen.ProfileEntry].ChargingProfileEntryMaxNumberOfPhasesInUse=service->val.integer.val.int8; + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.ProfileEntry[service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.arraylen.ProfileEntry].isused.ChargingProfileEntryMaxNumberOfPhasesInUse=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 260: /* BulkChargingComplete */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->DC_EVPowerDeliveryParameter->BulkChargingComplete=service->val.boolean; + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->DC_EVPowerDeliveryParameter->isused.BulkChargingComplete=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 265: /* ChargingComplete */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->DC_EVPowerDeliveryParameter->ChargingComplete=service->val.boolean; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 154: /* ChargeProgress */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargeProgress=service->val.enumeration; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 224: /* SAScheduleTupleID */ + + if(service->val.type == EXI_DATATYPE_NBIT_UNSIGNED_INTEGER) + { + if( service->idPath.id[2] == 209) + { + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->SAScheduleTupleID=service->val.integer.val.uint8; + } else if(service->idPath.id[2] == 195) + { + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->SAScheduleTupleID=service->val.integer.val.uint8; + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->isused.SAScheduleTupleID=1; + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 339: /* MeterID */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + memcpy(service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.MeterID.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.MeterID.arraylen.data = service->val.str.miss.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 341: /* MeterReading */ + + if(service->val.type == EXI_DATATYPE_UNSIGNED_INTEGER) + { + _setUnsignedInt64Value(&(service->val.integer),&(service->val.integer.val.uint64)); + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.MeterReading=service->val.integer.val.uint64; + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.isused.MeterReading=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 392: /* SigMeterReading */ + + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + memcpy(service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.SigMeterReading.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.SigMeterReading.arraylen.data = service->val.binary.len; + + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.isused.SigMeterReading=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 342: /* MeterStatus */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + if(_setInt16Value(&(service->val.integer),&(service->val.integer.val.int16))) + { + service->errorCode=EXI_VALUE_RANGE_FAILED; + return -1; + } + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.MeterStatus=service->val.integer.val.int16; + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.isused.MeterStatus=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 397: /* TMeter */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.TMeter=service->val.integer.val.int64; + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->MeterInfo.isused.TMeter=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 240: /* SessionID */ + + if(service->val.type == EXI_DATATYPE_BINARY_HEX) + { + memcpy(service->exiMsg.V2G_Message.Body.MeteringReceiptReq->SessionID.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.MeteringReceiptReq->SessionID.arraylen.data = service->val.binary.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 158: /* ChargingSession */ + + if(service->val.type == EXI_DATATYPE_ENUMERATION) + { + service->exiMsg.V2G_Message.Body.SessionStopReq->ChargingSession=service->val.enumeration; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + + case 121: /* X509IssuerName */ + + if(service->val.type == EXI_DATATYPE_STRING) + { + if( service->idPath.id[2] == 142) + { + + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationReq->ListOfRootCertificateIDs.RootCertificateID[service->exiMsg.V2G_Message.Body.CertificateInstallationReq->ListOfRootCertificateIDs.arraylen.RootCertificateID].X509IssuerName.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateInstallationReq->ListOfRootCertificateIDs.RootCertificateID[service->exiMsg.V2G_Message.Body.CertificateInstallationReq->ListOfRootCertificateIDs.arraylen.RootCertificateID].X509IssuerName.arraylen.data = service->val.str.miss.len; + + + } else if(service->idPath.id[2] == 146) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ListOfRootCertificateIDs.RootCertificateID[service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ListOfRootCertificateIDs.arraylen.RootCertificateID].X509IssuerName.data, service->val.str.miss.codepoints,service->val.str.miss.len*sizeof(uint32_t)); + service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ListOfRootCertificateIDs.RootCertificateID[service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ListOfRootCertificateIDs.arraylen.RootCertificateID].X509IssuerName.arraylen.data = service->val.str.miss.len; + + } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 125: /* X509SerialNumber */ + + if(service->val.type == EXI_DATATYPE_INTEGER) + { + _setUnsignedInt64Value(&(service->val.integer),&(service->val.integer.val.uint64)); + if( service->idPath.id[2] == 142) + { + service->exiMsg.V2G_Message.Body.CertificateInstallationReq->ListOfRootCertificateIDs.RootCertificateID[service->exiMsg.V2G_Message.Body.CertificateInstallationReq->ListOfRootCertificateIDs.arraylen.RootCertificateID].X509SerialNumber=service->val.integer.val.int64; + } else if(service->idPath.id[2] == 146) + { + service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ListOfRootCertificateIDs.RootCertificateID[service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ListOfRootCertificateIDs.arraylen.RootCertificateID].X509SerialNumber=service->val.integer.val.int64; } + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 199: /* OEMProvisioningCert */ + + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + memcpy(service->exiMsg.V2G_Message.Body.CertificateInstallationReq->OEMProvisioningCert.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Body.CertificateInstallationReq->OEMProvisioningCert.arraylen.data = service->val.binary.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 137: /* BulkChargingComplete */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->BulkChargingComplete=service->val.boolean; + service->exiMsg.V2G_Message.Body.CurrentDemandReq->isused.BulkChargingComplete=1; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 156: /* ChargingComplete */ + + if(service->val.type == EXI_DATATYPE_BOOLEAN) + { + service->exiMsg.V2G_Message.Body.CurrentDemandReq->ChargingComplete=service->val.boolean; + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + case 109: /* SignatureValue */ + + if(service->val.type == EXI_DATATYPE_BINARY_BASE64) + { + memcpy(service->exiMsg.V2G_Message.Header->Signature->SignatureValue.data, service->val.binary.data,service->val.binary.len); + service->exiMsg.V2G_Message.Header->Signature->SignatureValue.arraylen.data = service->val.binary.len; + + } + else + { + service->errorCode=EXI_DATATYPE_FAILED; + return -1; /* wrong data type */ + } + + + break; + + + } + return 0; +} + +/** + * Depending on the current EXI event a message element is deserialized or a + * defined service method is called in here + */ +static int deserializeElementOrServiceCall(struct EXIService* service) +{ + switch(service->qnameID) { + case 93: /* Reference */ + service->exiMsg.V2G_Message.Header->Signature->SignedInfo.arraylen.Reference++; + + break; + case 446: /* Notification */ + service->exiMsg.V2G_Message.Header->isused.Notification=1; + + break; + case 101: /* Signature */ + service->exiMsg.V2G_Message.Header->isused.Signature=1; + + break; + case 381: /* SelectedService */ + service->exiMsg.V2G_Message.Body.PaymentServiceSelectionReq->SelectedServiceList.arraylen.SelectedService++; + + break; + case 393: /* SubCertificates */ + + break; + case 300: /* EVMaximumPowerLimit */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->isused.EVMaximumPowerLimit=1; + + break; + case 294: /* EVEnergyCapacity */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->isused.EVEnergyCapacity=1; + + break; + case 295: /* EVEnergyRequest */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->DC_EVChargeParameter->isused.EVEnergyRequest=1; + + break; + case 254: /* AC_EVChargeParameter */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->isused.AC_EVChargeParameter=1; + + break; + case 275: /* DC_EVChargeParameter */ + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq->isused.DC_EVChargeParameter=1; + + break; + case 361: /* ProfileEntry */ + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->ChargingProfile.arraylen.ProfileEntry++; + + break; + case 157: /* ChargingProfile */ + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->isused.ChargingProfile=1; + + break; + case 278: /* DC_EVPowerDeliveryParameter */ + service->exiMsg.V2G_Message.Body.PowerDeliveryReq->isused.DC_EVPowerDeliveryParameter=1; + + break; + case 366: /* RootCertificateID */ + + if( service->idPath.id[2] == 142) + { + service->exiMsg.V2G_Message.Body.CertificateInstallationReq->ListOfRootCertificateIDs.arraylen.RootCertificateID++; + } else if(service->idPath.id[2] == 146) + { + service->exiMsg.V2G_Message.Body.CertificateUpdateReq->ListOfRootCertificateIDs.arraylen.RootCertificateID++; + } + + + + break; + case 175: /* EVMaximumVoltageLimit */ + service->exiMsg.V2G_Message.Body.CurrentDemandReq->isused.EVMaximumVoltageLimit=1; + + break; + case 173: /* EVMaximumCurrentLimit */ + service->exiMsg.V2G_Message.Body.CurrentDemandReq->isused.EVMaximumCurrentLimit=1; + + break; + case 174: /* EVMaximumPowerLimit */ + service->exiMsg.V2G_Message.Body.CurrentDemandReq->isused.EVMaximumPowerLimit=1; + + break; + case 219: /* RemainingTimeToFullSoC */ + service->exiMsg.V2G_Message.Body.CurrentDemandReq->isused.RemainingTimeToFullSoC=1; + + break; + case 218: /* RemainingTimeToBulkSoC */ + service->exiMsg.V2G_Message.Body.CurrentDemandReq->isused.RemainingTimeToBulkSoC=1; + + break; + case 241: /* SessionSetupReq */ + + + /* service call */ + if(sessionSetup((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.SessionSetupReq), (service->exiMsg.V2G_Message.Body.SessionSetupRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.SessionSetupRes=1; + service->exiMsg.V2G_Message.Body.isused.SessionSetupReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 232: /* ServiceDiscoveryReq */ + + + /* service call */ + if(serviceDiscovery((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.ServiceDiscoveryReq), (service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.ServiceDiscoveryRes=1; + service->exiMsg.V2G_Message.Body.isused.ServiceDiscoveryReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 228: /* ServiceDetailReq */ + + + /* service call */ + if(serviceDetail((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.ServiceDetailReq), (service->exiMsg.V2G_Message.Body.ServiceDetailRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.ServiceDetailRes=1; + service->exiMsg.V2G_Message.Body.isused.ServiceDetailReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 205: /* PaymentServiceSelectionReq */ + + + /* service call */ + if(paymentServiceSelection((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.PaymentServiceSelectionReq), (service->exiMsg.V2G_Message.Body.PaymentServiceSelectionRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.PaymentServiceSelectionRes=1; + service->exiMsg.V2G_Message.Body.isused.PaymentServiceSelectionReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 200: /* PaymentDetailsReq */ + + + /* service call */ + if(paymentDetails((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.PaymentDetailsReq), (service->exiMsg.V2G_Message.Body.PaymentDetailsRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.PaymentDetailsRes=1; + service->exiMsg.V2G_Message.Body.isused.PaymentDetailsReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 130: /* AuthorizationReq */ + + + /* service call */ + if(authorization((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.AuthorizationReq), (service->exiMsg.V2G_Message.Body.AuthorizationRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.AuthorizationRes=1; + service->exiMsg.V2G_Message.Body.isused.AuthorizationReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 150: /* ChargeParameterDiscoveryReq */ + + + /* service call */ + if(chargeParameterDiscovery((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq), (service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.ChargeParameterDiscoveryRes=1; + service->exiMsg.V2G_Message.Body.isused.ChargeParameterDiscoveryReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 209: /* PowerDeliveryReq */ + + + /* service call */ + if(powerDelivery((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.PowerDeliveryReq), (service->exiMsg.V2G_Message.Body.PowerDeliveryRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.PowerDeliveryRes=1; + service->exiMsg.V2G_Message.Body.isused.PowerDeliveryReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 195: /* MeteringReceiptReq */ + + + /* service call */ + if(meteringReceipt((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.MeteringReceiptReq), (service->exiMsg.V2G_Message.Body.MeteringReceiptRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.MeteringReceiptRes=1; + service->exiMsg.V2G_Message.Body.isused.MeteringReceiptReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 245: /* SessionStopReq */ + + + /* service call */ + if(sessionStop((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.SessionStopReq), (service->exiMsg.V2G_Message.Body.SessionStopRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.SessionStopRes=1; + service->exiMsg.V2G_Message.Body.isused.SessionStopReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 146: /* CertificateUpdateReq */ + + + /* service call */ + if(certificateUpdate((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.CertificateUpdateReq), (service->exiMsg.V2G_Message.Body.CertificateUpdateRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.CertificateUpdateRes=1; + service->exiMsg.V2G_Message.Body.isused.CertificateUpdateReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 142: /* CertificateInstallationReq */ + + + /* service call */ + if(certificateInstallation((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.CertificateInstallationReq), (service->exiMsg.V2G_Message.Body.CertificateInstallationRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.CertificateInstallationRes=1; + service->exiMsg.V2G_Message.Body.isused.CertificateInstallationReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 159: /* ChargingStatusReq */ + + + /* service call */ + if(chargingStatus((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.ChargingStatusReq), (service->exiMsg.V2G_Message.Body.ChargingStatusRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.ChargingStatusRes=1; + service->exiMsg.V2G_Message.Body.isused.ChargingStatusReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 138: /* CableCheckReq */ + + + /* service call */ + if(cableCheck((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.CableCheckReq), (service->exiMsg.V2G_Message.Body.CableCheckRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.CableCheckRes=1; + service->exiMsg.V2G_Message.Body.isused.CableCheckReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 213: /* PreChargeReq */ + + + /* service call */ + if(preCharge((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.PreChargeReq), (service->exiMsg.V2G_Message.Body.PreChargeRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.PreChargeRes=1; + service->exiMsg.V2G_Message.Body.isused.PreChargeReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 165: /* CurrentDemandReq */ + + + /* service call */ + if(currentDemand((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.CurrentDemandReq), (service->exiMsg.V2G_Message.Body.CurrentDemandRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.CurrentDemandRes=1; + service->exiMsg.V2G_Message.Body.isused.CurrentDemandReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + case 249: /* WeldingDetectionReq */ + + + /* service call */ + if(weldingDetection((service->exiMsg.V2G_Message.Header),(service->exiMsg.V2G_Message.Body.WeldingDetectionReq), (service->exiMsg.V2G_Message.Body.WeldingDetectionRes))) + { + /* service->errorCode=EXI_SERVICE_CALL_FAILED; */ + return -1; + } + + /* signalize the response message */ + service->exiMsg.V2G_Message.Body.isused.WeldingDetectionRes=1; + service->exiMsg.V2G_Message.Body.isused.WeldingDetectionReq=0; + + /* serialize the response data */ + if(serialize_message(service)) + { + /* serializiation error*/ + service->errorCode= EXI_SERIALIZATION_FAILED; + return -1; + } + break; + + + } + return 0; +} + + + +static int deserializeSessionSetupReqMsg(struct EXIService* service) +{ + struct SessionSetupReqType reqMsg; + struct SessionSetupResType resMsg; + service->exiMsg.V2G_Message.Body.SessionSetupReq = &reqMsg; + service->exiMsg.V2G_Message.Body.SessionSetupRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializeServiceDiscoveryReqMsg(struct EXIService* service) +{ + struct ServiceDiscoveryReqType reqMsg; + struct ServiceDiscoveryResType resMsg; + init_ServiceDiscoveryReqType(&reqMsg); + + service->exiMsg.V2G_Message.Body.ServiceDiscoveryReq = &reqMsg; + service->exiMsg.V2G_Message.Body.ServiceDiscoveryRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializeServiceDetailReqMsg(struct EXIService* service) +{ + struct ServiceDetailReqType reqMsg; + struct ServiceDetailResType resMsg; + service->exiMsg.V2G_Message.Body.ServiceDetailReq = &reqMsg; + service->exiMsg.V2G_Message.Body.ServiceDetailRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializePaymentServiceSelectionReqMsg(struct EXIService* service) +{ + struct PaymentServiceSelectionReqType reqMsg; + struct PaymentServiceSelectionResType resMsg; + init_PaymentServiceSelectionReqType(&reqMsg); + + service->exiMsg.V2G_Message.Body.PaymentServiceSelectionReq = &reqMsg; + service->exiMsg.V2G_Message.Body.PaymentServiceSelectionRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializePaymentDetailsReqMsg(struct EXIService* service) +{ + struct PaymentDetailsReqType reqMsg; + struct PaymentDetailsResType resMsg; + init_PaymentDetailsReqType(&reqMsg); + + service->exiMsg.V2G_Message.Body.PaymentDetailsReq = &reqMsg; + service->exiMsg.V2G_Message.Body.PaymentDetailsRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializeAuthorizationReqMsg(struct EXIService* service) +{ + struct AuthorizationReqType reqMsg; + struct AuthorizationResType resMsg; + service->exiMsg.V2G_Message.Body.AuthorizationReq = &reqMsg; + service->exiMsg.V2G_Message.Body.AuthorizationRes = &resMsg; + init_AuthorizationReqType(&reqMsg); + + return deserializeMessage(service); +} + +static int deserializeChargeParameterDiscoveryReqMsg(struct EXIService* service) +{ + struct ChargeParameterDiscoveryReqType reqMsg; + struct ChargeParameterDiscoveryResType resMsg; + struct DC_EVChargeParameterType dc_pev; + struct AC_EVChargeParameterType ac_pev; + struct DC_EVSEChargeParameterType dc_evse; + struct AC_EVSEChargeParameterType ac_evse; + struct SAScheduleListType tuple; + struct SalesTariffType sales1; + struct SalesTariffType sales2; + + init_AC_EVChargeParameterType(&ac_pev); + + init_ChargeParameterDiscoveryReqType(&reqMsg); + init_DC_EVSEChargeParameterType(&dc_evse); + init_AC_EVSEChargeParameterType(&ac_evse); + init_DC_EVChargeParameterType(&dc_pev); + init_SAScheduleListType(&tuple); + init_SalesTariffType(&sales1); + init_SalesTariffType(&sales2); + + reqMsg.AC_EVChargeParameter = &ac_pev; + reqMsg.DC_EVChargeParameter = &dc_pev; + resMsg.AC_EVSEChargeParameter = &ac_evse; + resMsg.DC_EVSEChargeParameter= &dc_evse; + + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryReq = &reqMsg; + service->exiMsg.V2G_Message.Body.ChargeParameterDiscoveryRes = &resMsg; + + tuple.SAScheduleTuple[0].SalesTariff = &sales1; + tuple.SAScheduleTuple[1].SalesTariff = &sales2; + resMsg.SAScheduleList = &tuple; + + return deserializeMessage(service); +} + +static int deserializePowerDeliveryReqMsg(struct EXIService* service) +{ + struct PowerDeliveryReqType reqMsg; + struct PowerDeliveryResType resMsg; + struct DC_EVPowerDeliveryParameterType EVPowerDelivery; + + struct DC_EVSEStatusType dc_evse; + struct AC_EVSEStatusType ac_evse; + + init_DC_EVPowerDeliveryParameterType(&EVPowerDelivery); + init_PowerDeliveryReqType(&reqMsg); + + + resMsg.AC_EVSEStatus = &ac_evse; + resMsg.DC_EVSEStatus = &dc_evse; + + reqMsg.DC_EVPowerDeliveryParameter = &EVPowerDelivery; + + service->exiMsg.V2G_Message.Body.PowerDeliveryReq = &reqMsg; + service->exiMsg.V2G_Message.Body.PowerDeliveryRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializeChargingStatusReqMsg(struct EXIService* service) +{ + struct ChargingStatusReqType reqMsg; + struct ChargingStatusResType resMsg; + service->exiMsg.V2G_Message.Body.ChargingStatusReq = &reqMsg; + service->exiMsg.V2G_Message.Body.ChargingStatusRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializeMeteringReceiptReqMsg(struct EXIService* service) +{ + struct MeteringReceiptReqType reqMsg; + struct MeteringReceiptResType resMsg; + + struct DC_EVSEStatusType dc_evse; + struct AC_EVSEStatusType ac_evse; + + init_MeteringReceiptReqType(&reqMsg); + + + resMsg.AC_EVSEStatus = &ac_evse; + resMsg.DC_EVSEStatus = &dc_evse; + + + service->exiMsg.V2G_Message.Body.MeteringReceiptReq = &reqMsg; + service->exiMsg.V2G_Message.Body.MeteringReceiptRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializeCertificateUpdateReqMsg(struct EXIService* service) +{ + struct CertificateUpdateReqType reqMsg; + struct CertificateUpdateResType resMsg; + init_CertificateUpdateReqType(&reqMsg); + + service->exiMsg.V2G_Message.Body.CertificateUpdateReq = &reqMsg; + service->exiMsg.V2G_Message.Body.CertificateUpdateRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializeCertificateInstallationReqMsg(struct EXIService* service) +{ + struct CertificateInstallationReqType reqMsg; + struct CertificateInstallationResType resMsg; + init_CertificateInstallationReqType(&reqMsg); + + service->exiMsg.V2G_Message.Body.CertificateInstallationReq = &reqMsg; + service->exiMsg.V2G_Message.Body.CertificateInstallationRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializeCableCheckReqMsg(struct EXIService* service) +{ + struct CableCheckReqType reqMsg; + struct CableCheckResType resMsg; + service->exiMsg.V2G_Message.Body.CableCheckReq = &reqMsg; + service->exiMsg.V2G_Message.Body.CableCheckRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializePreChargeReqMsg(struct EXIService* service) +{ + struct PreChargeReqType reqMsg; + struct PreChargeResType resMsg; + init_PreChargeReqType(&reqMsg); + + service->exiMsg.V2G_Message.Body.PreChargeReq = &reqMsg; + service->exiMsg.V2G_Message.Body.PreChargeRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializeCurrentDemandReqMsg(struct EXIService* service) +{ + struct CurrentDemandReqType reqMsg; + struct CurrentDemandResType resMsg; + init_CurrentDemandReqType(&reqMsg); + + service->exiMsg.V2G_Message.Body.CurrentDemandReq = &reqMsg; + service->exiMsg.V2G_Message.Body.CurrentDemandRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializeWeldingDetectionReqMsg(struct EXIService* service) +{ + struct WeldingDetectionReqType reqMsg; + struct WeldingDetectionResType resMsg; + service->exiMsg.V2G_Message.Body.WeldingDetectionReq = &reqMsg; + service->exiMsg.V2G_Message.Body.WeldingDetectionRes = &resMsg; + + return deserializeMessage(service); +} + +static int deserializeSessionStopReqMsg(struct EXIService* service) +{ + struct SessionStopReqType reqMsg; + struct SessionStopResType resMsg; + service->exiMsg.V2G_Message.Body.SessionStopReq = &reqMsg; + service->exiMsg.V2G_Message.Body.SessionStopRes = &resMsg; + + return deserializeMessage(service); +} + +/** + * Deserialize the EXI stream + * @return 0 = 0K; -1 = ERROR + */ +static int deserializeMessage(struct EXIService* service) +{ + int noEndOfDocument = 1; /* true */ + int returnCode=0; + int eventCounter = 0; + static int derivationCounter = 0; + + + do { + exiv2gDecodeNextEvent(&(service->inStream), &(service->stateDecode), &(service->event)); + if (returnCode) + { + + if(service->errorCode==0) + { + service->errorCode= EXI_NON_VALID_MESSAGE; + } + + return returnCode; + } + + switch (service->event) { + case EXI_EVENT_START_DOCUMENT: + + returnCode = exiv2gDecodeStartDocument(&(service->inStream), &(service->stateDecode)); + + break; + case EXI_EVENT_END_DOCUMENT: + + returnCode = exiv2gDecodeEndDocument(&(service->inStream), &(service->stateDecode)); + noEndOfDocument = 0; /* false */ + break; + case EXI_EVENT_START_ELEMENT_GENERIC: + case EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED: + derivationCounter++; + case EXI_EVENT_START_ELEMENT: + returnCode = exiv2gDecodeStartElement(&(service->inStream), &(service->stateDecode), &(service->qnameID)); + service->idPath.id[service->idPath.pos++]=service->qnameID; + + /* setup the request context*/ + if(service->qnameID==241 ) + { + return deserializeSessionSetupReqMsg(service); + } else if(service->qnameID==232) + { + return deserializeServiceDiscoveryReqMsg(service); + } else if(service->qnameID==228) + { + return deserializeServiceDetailReqMsg(service); + } else if(service->qnameID==205) + { + return deserializePaymentServiceSelectionReqMsg(service); + } else if(service->qnameID==200) + { + return deserializePaymentDetailsReqMsg(service); + } else if(service->qnameID==130) + { + return deserializeAuthorizationReqMsg(service); + } else if(service->qnameID==150) + { + return deserializeChargeParameterDiscoveryReqMsg(service); + } else if(service->qnameID==209) + { + return deserializePowerDeliveryReqMsg(service); + } else if(service->qnameID==195) + { + return deserializeMeteringReceiptReqMsg(service); + } else if(service->qnameID==245) + { + return deserializeSessionStopReqMsg(service); + } else if(service->qnameID==146) + { + return deserializeCertificateUpdateReqMsg(service); + } else if(service->qnameID==142) + { + return deserializeCertificateInstallationReqMsg(service); + } else if(service->qnameID==159) + { + return deserializeChargingStatusReqMsg(service); + } else if(service->qnameID==138) + { + return deserializeCableCheckReqMsg(service); + } else if(service->qnameID==213) + { + return deserializePreChargeReqMsg(service); + } else if(service->qnameID==165) + { + return deserializeCurrentDemandReqMsg(service); + } else if(service->qnameID==249) + { + return deserializeWeldingDetectionReqMsg(service); + } + + + break; + case EXI_EVENT_END_ELEMENT_UNDECLARED: + case EXI_EVENT_END_ELEMENT: + + returnCode = exiv2gDecodeEndElement(&(service->inStream), &(service->stateDecode), &(service->qnameID)); + + if(derivationCounter==0) + returnCode = deserializeElementOrServiceCall(service); + + service->idPath.pos--; + + if(derivationCounter>0) + derivationCounter--; + + break; + case EXI_EVENT_CHARACTERS_GENERIC: + case EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED: + case EXI_EVENT_CHARACTERS: + /* decode */ + returnCode = exiv2gDecodeCharacters(&(service->inStream), &(service->stateDecode), &(service->val)); + + /* assign data to the EXI message structure */ + if(derivationCounter==0) + returnCode = deserializeElementAttributeCharacter(service); + break; + case EXI_EVENT_ATTRIBUTE_GENERIC: + case EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED: + case EXI_EVENT_ATTRIBUTE_INVALID_VALUE: + case EXI_EVENT_ATTRIBUTE: + /* decode */ + returnCode = exiv2gDecodeAttribute(&(service->inStream), &(service->stateDecode), &(service->qnameID), &(service->val)); + + if(derivationCounter==0) + returnCode = deserializeElementAttributeCharacter(service); + break; + case EXI_EVENT_ATTRIBUTE_ANY_INVALID_VALUE: + break; + default: + /* ERROR */ + return -1; + } + + if(eventCounter++>500) { + + service->errorCode=EXI_DESERIALIZATION_FAILED; + return -1; + } + + } while (noEndOfDocument); + + return 0; +} + + +/** + * \brief Takes the EXI stream, invokes the called service method, and provides the response EXI stream + * \param service struct EXIService* Represent the service data structure + * \param inStream uint8_t* EXI in stream + * \param sizeInStream uint16_t Length of the inStream + * \param outStream uint8_t* Represent the out stream + * \param sizeOutStream uint16_t Size of the out stream + * \param outStreamLength uint16_t* Length of the stream + * \return 0 = 0K; -1 = ERROR + */ +int messageDispatcher(struct EXIService* service, uint8_t* inStream, uint16_t sizeInStream, uint8_t* outStream, uint16_t sizeOutStream, uint16_t* outStreamLength) +{ + struct MessageHeaderType header; + struct SignatureType signature; + + uint32_t inPos, outPos; + + exi_name_table_runtime_t runtimeTableDecode; + exi_name_table_runtime_t runtimeTableEncode; + + exi_value_table_t stringTableDecode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsDecode}; + exi_value_table_t stringTableEncode = { 0, EXI_v2gMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode}; + + + /* assign inStream data to service EXI structure */ + inPos = service->transportHeaderOffset; + service->inStream.data = inStream; + service->inStream.size = sizeInStream+inPos; + service->inStream.pos = &inPos; + service->inStream.buffer=0; + service->inStream.capacity=0; + + + /* assign outStream data to service EXI structure */ + outPos=service->transportHeaderOffset; + service->outStream.data = outStream; + service->outStream.size = sizeOutStream; + service->outStream.pos = &outPos; + service->outStream.buffer=0; + service->outStream.capacity=8; + + /* clear error code */ + service->errorCode = 0; + + /* init decoder (read header, set initial state) */ + /* init runtime table */ + exiInitNameTableRuntime(&runtimeTableDecode); + /* exiv2gInitDecoder(&(service->inStream), &(service->stateDecode), runtimeTableDecode); */ + + exiv2gInitDecoder(&(service->inStream), &(service->stateDecode), runtimeTableDecode,stringTableDecode); + + + /* init encoder (write header, set initial state) */ + exiInitNameTableRuntime(&runtimeTableEncode); + /* exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode); */ + + exiv2gInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode); + + + /* init uniqueID stack */ + service->idPath.pos=0; + + init_MessageHeaderType(&header); + service->exiMsg.V2G_Message.Header = &header; + + init_SignatureType(&signature); + service->exiMsg.V2G_Message.Header->Signature=&signature; + + + /* init EXI message */ + init_EXIDocumentType(&(service->exiMsg)); + + /* deserialize the input stream and call the corresponding service */ + if(deserializeMessage(service)) + { + return -1; /* something went wrong */ + } + + /* determine payload size (without transport offset) */ + outPos -= service->transportHeaderOffset; + *outStreamLength = outPos; + + + return 0; +} + +/** + * \brief Init the v2g service data structure + * \param service struct EXIService* Service data structure + * \param bytes bytes_t setted up byte data structure + * \param string_ucs_t setted up string data structure + * \param transportHeaderOffset uint16_t Transport protocol offset + * \return 0 = 0K; -1 = ERROR + */ +int init_v2gservice(struct EXIService* service, exi_bytes_t service_bytes, exi_string_ucs_t service_string, uint16_t transportHeaderOffset) +{ + + /* init byte array */ + service->val.binary = service_bytes; + + /* init string array */ + service->val.str.miss = service_string; + + + service->idPath.pos=0; + + /* init offset for transport protocol */ + service->transportHeaderOffset=transportHeaderOffset; + + + return 0; +} diff --git a/src/service/v2g_serviceDispatcher.h b/src/service/v2g_serviceDispatcher.h new file mode 100644 index 0000000..c9c92c3 --- /dev/null +++ b/src/service/v2g_serviceDispatcher.h @@ -0,0 +1,63 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef V2GSERVER_H_ +#define V2GSERVER_H_ + +#include "v2g_dataTypes.h" + + +/** + * \brief Init the v2g service data structure + * \param service struct EXIService* Service data structure + * \param bytes bytes_t setted up byte data structure + * \param string_ucs_t setted up string data structure + * \param transportHeaderOffset uint16_t Transport protocol offset + * \return 0 = 0K; -1 = ERROR + */ +int init_v2gservice(struct EXIService* service, exi_bytes_t service_bytes, exi_string_ucs_t service_string, uint16_t transportHeaderOffset); + +/** + * \brief Takes the EXI stream, invokes the called service method, and provides the response EXI stream + * \param service struct EXIService* Represent the service data structure + * \param inStream uint8_t* EXI in stream + * \param sizeInStream uint16_t Length of the inStream + * \param outStream uint8_t* Represent the out stream + * \param sizeOutStream uint16_t Size of the out stream + * \param outStreamLength uint16_t* Length of the stream + * \return 0 = 0K; -1 = ERROR + */ +int messageDispatcher(struct EXIService* service, uint8_t* inStream, uint16_t sizeInStream, uint8_t* outStream, uint16_t sizeOutStream, uint16_t* outStreamLength); + +#endif /* V2GSERVER_H_ */ + +#ifdef __cplusplus +} +#endif diff --git a/src/service/v2g_serviceMethods.h b/src/service/v2g_serviceMethods.h new file mode 100644 index 0000000..bb821dc --- /dev/null +++ b/src/service/v2g_serviceMethods.h @@ -0,0 +1,186 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXISeGen

+ * + ********************************************************************/ + + + #ifdef __cplusplus +extern "C" { +#endif + +#ifndef SERVICEMETHODS_H +#define SERVICEMETHODS_H + +#include "v2g_dataTypes.h" +#include "EXITypes.h" + +/** This service methods has to be implemented by the EVSE server */ +/** + * \brief This sessionSetup method is called by the service dispatcher if there was passed a sessionSetup-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct SessionSetupReqType Parameter dataset of the sessionSetup request message + * \param result struct SessionSetupResType Result dataset for the sessionSetup response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int sessionSetup(struct MessageHeaderType* header, struct SessionSetupReqType* param, struct SessionSetupResType* result); + +/** + * \brief This serviceDiscovery method is called by the service dispatcher if there was passed a serviceDiscovery-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct ServiceDiscoveryReqType Parameter dataset of the serviceDiscovery request message + * \param result struct ServiceDiscoveryResType Result dataset for the serviceDiscovery response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int serviceDiscovery(struct MessageHeaderType* header, struct ServiceDiscoveryReqType* param, struct ServiceDiscoveryResType* result); + +/** + * \brief This serviceDetail method is called by the service dispatcher if there was passed a serviceDetail-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct ServiceDetailReqType Parameter dataset of the serviceDetail request message + * \param result struct ServiceDetailResType Result dataset for the serviceDetail response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int serviceDetail(struct MessageHeaderType* header, struct ServiceDetailReqType* param, struct ServiceDetailResType* result); + +/** + * \brief This paymentServiceSelection method is called by the service dispatcher if there was passed a paymentServiceSelection-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct PaymentServiceSelectionReqType Parameter dataset of the paymentServiceSelection request message + * \param result struct PaymentServiceSelectionResType Result dataset for the paymentServiceSelection response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int paymentServiceSelection(struct MessageHeaderType* header, struct PaymentServiceSelectionReqType* param, struct PaymentServiceSelectionResType* result); + +/** + * \brief This paymentDetails method is called by the service dispatcher if there was passed a paymentDetails-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct PaymentDetailsReqType Parameter dataset of the paymentDetails request message + * \param result struct PaymentDetailsResType Result dataset for the paymentDetails response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int paymentDetails(struct MessageHeaderType* header, struct PaymentDetailsReqType* param, struct PaymentDetailsResType* result); + +/** + * \brief This authorization method is called by the service dispatcher if there was passed a authorization-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct AuthorizationReqType Parameter dataset of the authorization request message + * \param result struct AuthorizationResType Result dataset for the authorization response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int authorization(struct MessageHeaderType* header, struct AuthorizationReqType* param, struct AuthorizationResType* result); + +/** + * \brief This chargeParameterDiscovery method is called by the service dispatcher if there was passed a chargeParameterDiscovery-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct ChargeParameterDiscoveryReqType Parameter dataset of the chargeParameterDiscovery request message + * \param result struct ChargeParameterDiscoveryResType Result dataset for the chargeParameterDiscovery response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int chargeParameterDiscovery(struct MessageHeaderType* header, struct ChargeParameterDiscoveryReqType* param, struct ChargeParameterDiscoveryResType* result); + +/** + * \brief This powerDelivery method is called by the service dispatcher if there was passed a powerDelivery-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct PowerDeliveryReqType Parameter dataset of the powerDelivery request message + * \param result struct PowerDeliveryResType Result dataset for the powerDelivery response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int powerDelivery(struct MessageHeaderType* header, struct PowerDeliveryReqType* param, struct PowerDeliveryResType* result); + +/** + * \brief This meteringReceipt method is called by the service dispatcher if there was passed a meteringReceipt-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct MeteringReceiptReqType Parameter dataset of the meteringReceipt request message + * \param result struct MeteringReceiptResType Result dataset for the meteringReceipt response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int meteringReceipt(struct MessageHeaderType* header, struct MeteringReceiptReqType* param, struct MeteringReceiptResType* result); + +/** + * \brief This sessionStop method is called by the service dispatcher if there was passed a sessionStop-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct SessionStopReqType Parameter dataset of the sessionStop request message + * \param result struct SessionStopResType Result dataset for the sessionStop response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int sessionStop(struct MessageHeaderType* header, struct SessionStopReqType* param, struct SessionStopResType* result); + +/** + * \brief This certificateUpdate method is called by the service dispatcher if there was passed a certificateUpdate-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct CertificateUpdateReqType Parameter dataset of the certificateUpdate request message + * \param result struct CertificateUpdateResType Result dataset for the certificateUpdate response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int certificateUpdate(struct MessageHeaderType* header, struct CertificateUpdateReqType* param, struct CertificateUpdateResType* result); + +/** + * \brief This certificateInstallation method is called by the service dispatcher if there was passed a certificateInstallation-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct CertificateInstallationReqType Parameter dataset of the certificateInstallation request message + * \param result struct CertificateInstallationResType Result dataset for the certificateInstallation response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int certificateInstallation(struct MessageHeaderType* header, struct CertificateInstallationReqType* param, struct CertificateInstallationResType* result); + +/** + * \brief This chargingStatus method is called by the service dispatcher if there was passed a chargingStatus-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct ChargingStatusReqType Parameter dataset of the chargingStatus request message + * \param result struct ChargingStatusResType Result dataset for the chargingStatus response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int chargingStatus(struct MessageHeaderType* header, struct ChargingStatusReqType* param, struct ChargingStatusResType* result); + +/** + * \brief This cableCheck method is called by the service dispatcher if there was passed a cableCheck-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct CableCheckReqType Parameter dataset of the cableCheck request message + * \param result struct CableCheckResType Result dataset for the cableCheck response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int cableCheck(struct MessageHeaderType* header, struct CableCheckReqType* param, struct CableCheckResType* result); + +/** + * \brief This preCharge method is called by the service dispatcher if there was passed a preCharge-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct PreChargeReqType Parameter dataset of the preCharge request message + * \param result struct PreChargeResType Result dataset for the preCharge response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int preCharge(struct MessageHeaderType* header, struct PreChargeReqType* param, struct PreChargeResType* result); + +/** + * \brief This currentDemand method is called by the service dispatcher if there was passed a currentDemand-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct CurrentDemandReqType Parameter dataset of the currentDemand request message + * \param result struct CurrentDemandResType Result dataset for the currentDemand response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int currentDemand(struct MessageHeaderType* header, struct CurrentDemandReqType* param, struct CurrentDemandResType* result); + +/** + * \brief This weldingDetection method is called by the service dispatcher if there was passed a weldingDetection-based request message. + * \param header struct MessageHeaderType* Header dataset + * \param param struct WeldingDetectionReqType Parameter dataset of the weldingDetection request message + * \param result struct WeldingDetectionResType Result dataset for the weldingDetection response message + * \return 0 = 0K; -1 = ERROR (message dispatcher will return an error) */ +int weldingDetection(struct MessageHeaderType* header, struct WeldingDetectionReqType* param, struct WeldingDetectionResType* result); + + + + + + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/src/test/evse_server.c b/src/test/evse_server.c new file mode 100644 index 0000000..c8e0f31 --- /dev/null +++ b/src/test/evse_server.c @@ -0,0 +1,192 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + + +/* includes for the application handshake protocol */ +#include "appHand_service.h" +#include "appHand_dataTypes.h" +#include "v2g_service.h" +#include "v2gtp.h" +#include "evse_server.h" + +#include "v2g_serviceDispatcher.h" + +#include + + +#define MAX_BYTE_SIZE 64 +#define MAX_STRING_SIZE 64 +#define MAX_STREAM_SIZE 100 + +static int appHandshakeHandler(struct EXIDatabinder* appHandService, uint8_t* inStream, uint16_t sizeInStream, uint8_t* outStream, uint16_t* outStreamLength); +static void printASCIIString(uint32_t* string, uint32_t len); + +int testV2GService(uint8_t* inStream, uint16_t inStreamLength, uint8_t* outStream, uint16_t* outStreamLength) +{ + static uint8_t byte_array[MAX_BYTE_SIZE]; /* define MAX_BYTE_SIZE before*/ + static uint32_t string_array[MAX_STRING_SIZE]; /* define MAX_STRING_SIZE before*/ + uint16_t exiMsgLength; + uint8_t errn; + + struct EXIDatabinder appHandService; + struct EXIService service; + + static uint8_t isHandshake = 1; + + /* BINARY memory setup */ + exi_bytes_t bytes = { MAX_BYTE_SIZE, byte_array, 0 }; + + /* STRING memory setup */ + exi_string_ucs_t string = { MAX_STRING_SIZE, string_array, 0 }; + + /********************************************** + * Init V2G server and initialize array types * + * for the EXI decoding as well as the offset * + * for the transportation header * + **********************************************/ + + init_v2gservice(&service, bytes, string, V2GTP_HEADER_LENGTH); + + /* check, if the DoIP header is correct and determine payload */ + if(read_v2gtpHeader(inStream,inStreamLength, &exiMsgLength)) + { + /* v2gtp header not correct */ + return -1; + } + + /* Here, it is assumed the first message is always the application handshake protocol. + * The successor messages are 15118 charging based messages and handled by the message + * dispatcher. */ + + if(isHandshake) + { + + + + /* init the de- / serializer */ + init_appHandDeserializer(&appHandService,bytes,string,V2GTP_HEADER_LENGTH); + init_appHandSerializer(&appHandService,bytes,string,MAX_STREAM_SIZE,V2GTP_HEADER_LENGTH); + + if(appHandshakeHandler(&appHandService, inStream,inStreamLength,outStream,outStreamLength)) + { + return -1; /* an error occured */ + } + + isHandshake = 0; /* here: next time a charging message is expected */ + } + else + { + + + /**************************************************************************** + * Pass the received EXI message stream (inStream + exiMsgLength) to the * + * v2g message dispatcher. The outStream contains the response message * + * stream. * + ****************************************************************************/ + errn = messageDispatcher(&service, inStream, exiMsgLength, outStream, MAX_STREAM_SIZE, outStreamLength); + + + if(errn) + { + + /* an error occurred; in such a case the outStream contains the generic error V2G message which + * can be response to the EV! */ + + } + } + + + /* write v2gtp header */ + write_v2gtpHeader(outStream, outStreamLength, V2GTP_EXI_TYPE); + + + + return 0; + +} + + +/** Example implementation of the app handshake protocol for the EVSE side */ +static int appHandshakeHandler(struct EXIDatabinder* appHandService, uint8_t* inStream, uint16_t sizeInStream, uint8_t* outStream, uint16_t* outStreamLength) +{ + struct EXIDocumentType_appHand exiDoc; + struct SupportedAppProtocolReq handshake; + struct SupportedAppProtocolRes resultHandshake; + size_t i; + + init_SupportedAppProtocolReq(&handshake); + init_EXIDocumentType_appHand(&exiDoc); + + /* we expect a supportedAppProtocolReq */ + exiDoc.supportedAppProtocolReq = &handshake; + + + if(deserialize_appHand(appHandService,inStream,sizeInStream,&exiDoc)) + { + /* an error occured */ + return -1; + } + + printf("EVSE side: List of application handshake protocols of the EV \n"); + + for(i=0;i. + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifndef V2G_SERVER_H_ +#define V2G_SERVER_H_ + +#include "EXITypes.h" + +int testV2GService(uint8_t* inStream, uint16_t inStreamLength, uint8_t* outStream,uint16_t* outStreamLength); + +#endif /* V2G_SERVER_H_ */ diff --git a/src/test/evse_serviceMethods.c b/src/test/evse_serviceMethods.c new file mode 100644 index 0000000..8a29760 --- /dev/null +++ b/src/test/evse_serviceMethods.c @@ -0,0 +1,843 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#include "v2g_serviceMethods.h" +#include "v2g_dataTypes.h" +#include + +static void printBinaryArray(uint8_t* byte, uint32_t len); + +int sessionSetup(struct MessageHeaderType* header, struct SessionSetupReqType* param, struct SessionSetupResType* result) +{ + + printf("EVSE side: sessionSetup called\n" ); + printf("\tReceived data:\n"); + printf("\tHeader SessionID="); + printBinaryArray(header->SessionID.data,header->SessionID.arraylen.data ); + printf("\t\t EVCCID=%d\n",param->EVCCID.data[0]); + + + /* generate an unique sessionID */ + header->SessionID.data[0] = 1; + header->SessionID.data[1] = 2; + header->SessionID.data[2] = 3; + header->SessionID.data[3] = 4; + header->SessionID.data[4] = 5; + header->SessionID.data[5] = 6; + header->SessionID.data[6] = 7; + header->SessionID.data[7] = 8; + header->SessionID.arraylen.data=8; + + /* Prepare data for EV */ + result->ResponseCode = OK_responseCodeType; + result->EVSEID.data[1]=20; + result->EVSEID.arraylen.data=2; + result->EVSETimeStamp=123456789; + result->isused.EVSETimeStamp=1; + + + return 0; + +} + +int serviceDiscovery(struct MessageHeaderType* header, struct ServiceDiscoveryReqType* param, struct ServiceDiscoveryResType* result) +{ + printf("EVSE side: serviceDiscovery called\n" ); + printf("\tReceived data:\n"); + printf("\tHeader SessionID="); + printBinaryArray(header->SessionID.data,header->SessionID.arraylen.data ); + + printf("\t\t ServiceCategory=%d\n", param->ServiceCategory); + + + + result->isused.ServiceList=0; /* we do not provide VAS */ + result->ResponseCode= OK_responseCodeType; + + + /* result->ChargeService.SupportedEnergyTransferMode = AC_single_phase_core_EnergyTransferModeType; */ + result->ChargeService.ServiceID=1; /* ID of the charge service */ + result->ChargeService.ServiceName.data[0]='A'; + result->ChargeService.ServiceName.data[1]='C'; + result->ChargeService.ServiceName.data[2]='_'; + result->ChargeService.ServiceName.data[3]='D'; + result->ChargeService.ServiceName.data[4]='C'; + result->ChargeService.ServiceName.arraylen.data=5; + result->ChargeService.isused.ServiceName=1; + result->ChargeService.isused.ServiceScope=1; + + result->ChargeService.FreeService = 1; + result->ChargeService.ServiceCategory = EVCharging_serviceCategoryType; + result->ChargeService.ServiceScope.data[0] = 100; + result->ChargeService.ServiceScope.arraylen.data = 1; + + result->ChargeService.SupportedEnergyTransferMode.EnergyTransferMode[0] = DC_combo_core_EnergyTransferModeType; + result->ChargeService.SupportedEnergyTransferMode.EnergyTransferMode[1] = AC_single_phase_core_EnergyTransferModeType; + result->ChargeService.SupportedEnergyTransferMode.arraylen.EnergyTransferMode=2; + + result->PaymentOptionList.PaymentOption[0] = ExternalPayment_paymentOptionType; /* EVSE handles the payment */ + result->PaymentOptionList.PaymentOption[1] = Contract_paymentOptionType; + result->PaymentOptionList.arraylen.PaymentOption=2; + + if(param->ServiceCategory==Internet_serviceCategoryType || param->ServiceCategory==OtherCustom_serviceCategoryType || param->isused.ServiceCategory==0) + { + + result->ServiceList.Service[0].FreeService=1; + result->ServiceList.Service[0].ServiceID=22; /* ID of the charge service */ + result->ServiceList.Service[0].ServiceName.data[0]='W'; + result->ServiceList.Service[0].ServiceName.data[1]='W'; + result->ServiceList.Service[0].ServiceName.data[2]='W'; + result->ServiceList.Service[0].ServiceName.arraylen.data=3; + result->ServiceList.Service[0].ServiceCategory=Internet_serviceCategoryType; + result->ServiceList.Service[0].isused.ServiceName=1; + result->ServiceList.Service[0].isused.ServiceScope=0; + + result->ServiceList.Service[1].FreeService=0; + result->ServiceList.Service[1].ServiceID=33; /* ID of the charge service */ + result->ServiceList.Service[1].ServiceName.data[0]='H'; + result->ServiceList.Service[1].ServiceName.data[1]='T'; + result->ServiceList.Service[1].ServiceName.data[2]='T'; + result->ServiceList.Service[1].ServiceName.data[3]='P'; + result->ServiceList.Service[1].ServiceName.data[4]='S'; + result->ServiceList.Service[1].ServiceName.arraylen.data=5; + result->ServiceList.Service[1].ServiceCategory=Internet_serviceCategoryType; + result->ServiceList.Service[1].isused.ServiceName=1; + result->ServiceList.Service[1].isused.ServiceScope=0; + + + + result->ServiceList.arraylen.Service=2; + result->isused.ServiceList=1; + + } else { + result->isused.ServiceList=0; /* no value added service requested */ + } + + + return 0; +} + +int paymentServiceSelection(struct MessageHeaderType* header, struct PaymentServiceSelectionReqType* param, struct PaymentServiceSelectionResType* result) +{ + size_t i; + + printf("EVSE side: servicePaymentSelection called\n" ); + printf("\tReceived data:\n"); + printf("\tHeader SessionID="); + printBinaryArray(header->SessionID.data,header->SessionID.arraylen.data ); + + if(param->SelectedPaymentOption == ExternalPayment_paymentOptionType) + printf("\t\t SelectedPaymentOption=ExternalPayment\n"); + + for(i=0; iSelectedServiceList.arraylen.SelectedService;i++) + { + printf("\t\t ServiceID=%d\n",param->SelectedServiceList.SelectedService[i].ServiceID); + if( param->SelectedServiceList.SelectedService[i].isused.ParameterSetID) + printf("\t\t ParameterSetID=%d\n",param->SelectedServiceList.SelectedService[i].ParameterSetID); + } + result->ResponseCode = OK_responseCodeType; + + return 0; +} + +int paymentDetails(struct MessageHeaderType* header, struct PaymentDetailsReqType* param, struct PaymentDetailsResType* result) +{ + + + printf("EVSE side: paymentDetails called\n" ); + printf("\tReceived data:\n"); + + printf("\t\t eMAID=%d\n", param->eMAID.data[0]); + printf("\t\t ID=%c%c\n", param->ContractSignatureCertChain.attr_Id.data[0], param->ContractSignatureCertChain.attr_Id.data[1]); + printf("\t\t Certificate=%c%c\n", param->ContractSignatureCertChain.Certificate.data[0], param->ContractSignatureCertChain.Certificate.data[1]); + printf("\t\t SubCertificate 1=%c%c\n", param->ContractSignatureCertChain.SubCertificates.Certificate[0].data[0], param->ContractSignatureCertChain.SubCertificates.Certificate[0].data[1]); + printf("\t\t SubCertificate 2=%c%c%c\n", param->ContractSignatureCertChain.SubCertificates.Certificate[1].data[0], param->ContractSignatureCertChain.SubCertificates.Certificate[1].data[1], param->ContractSignatureCertChain.SubCertificates.Certificate[1].data[2]); + + result->ResponseCode = OK_responseCodeType; + result->GenChallenge.data[0]=1; + result->GenChallenge.arraylen.data=1; + result->EVSETimeStamp=123456; + + return 0; +} + +int chargeParameterDiscovery(struct MessageHeaderType* header, struct ChargeParameterDiscoveryReqType* param, struct ChargeParameterDiscoveryResType* result) +{ + struct PhysicalValueType f; + + printf("EVSE side: chargeParameterDiscovery called\n" ); + printf("\tReceived data:\n"); + printf("\t\t EVRequestedEnergyTransferType=%d\n",param->RequestedEnergyTransferMode); + + /* check,if DC or AC is requested */ + if(param->RequestedEnergyTransferMode==DC_core_EnergyTransferModeType || param->isused.DC_EVChargeParameter==1) + { + printf("\t\t MaxEntriesSAScheduleTuple=%d\n", param->MaxEntriesSAScheduleTuple); + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", param->DC_EVChargeParameter->DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n", param->DC_EVChargeParameter->DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", param->DC_EVChargeParameter->DC_EVStatus.EVErrorCode); + + + printf("\t\t DepartureTime=%d\n", param->DC_EVChargeParameter->DepartureTime); + printf("\t\t EVMaximumCurrentLimit=%d\n", param->DC_EVChargeParameter->EVMaximumCurrentLimit.Value); + printf("\t\t EVMaximumPowerLimit=%d\n", param->DC_EVChargeParameter->EVMaximumPowerLimit.Value); + printf("\t\t EVMaximumVoltageLimit=%d\n", param->DC_EVChargeParameter->EVMaximumVoltageLimit.Value); + printf("\t\t EVEnergyCapacity=%d\n", param->DC_EVChargeParameter->EVEnergyCapacity.Value); + printf("\t\t EVEnergyRequest=%d\n", param->DC_EVChargeParameter->EVEnergyRequest.Value); + printf("\t\t FullSOC=%d\n", param->DC_EVChargeParameter->FullSOC); + printf("\t\t BulkSOC=%d\n", param->DC_EVChargeParameter->BulkSOC); + + result->ResponseCode = OK_responseCodeType; + result->EVSEProcessing = Finished_EVSEProcessingType; + + result->isused.DC_EVSEChargeParameter = 1; + result->isused.AC_EVSEChargeParameter = 0; + result->DC_EVSEChargeParameter->DC_EVSEStatus.EVSEStatusCode = EVSE_Ready_DC_EVSEStatusCodeType; + result->DC_EVSEChargeParameter->DC_EVSEStatus.EVSEIsolationStatus = Valid_isolationLevelType; + result->DC_EVSEChargeParameter->DC_EVSEStatus.isused.EVSEIsolationStatus = 1; + result->DC_EVSEChargeParameter->DC_EVSEStatus.EVSENotification = None_EVSENotificationType; + result->DC_EVSEChargeParameter->DC_EVSEStatus.NotificationMaxDelay = 10; + + f.Multiplier = 0; + f.Unit = A_unitSymbolType; + f.Value = 50; + + result->DC_EVSEChargeParameter->EVSEMaximumCurrentLimit=f; + + f.Unit = W_unitSymbolType; + f.Value = 20000; + + result->DC_EVSEChargeParameter->EVSEMaximumPowerLimit=f; + + + f.Unit = V_unitSymbolType; + f.Value = 400; + + result->DC_EVSEChargeParameter->EVSEMaximumVoltageLimit=f; + + f.Unit = A_unitSymbolType; + f.Value = 5; + + result->DC_EVSEChargeParameter->EVSEMinimumCurrentLimit=f; + + f.Unit = V_unitSymbolType; + f.Value = 200; + + result->DC_EVSEChargeParameter->EVSEMinimumVoltageLimit=f; + + f.Unit = A_unitSymbolType; + f.Value = 2; + + result->DC_EVSEChargeParameter->EVSECurrentRegulationTolerance=f; + result->DC_EVSEChargeParameter->isused.EVSECurrentRegulationTolerance=1; + + f.Unit = A_unitSymbolType; + f.Value = 1; + + result->DC_EVSEChargeParameter->EVSEPeakCurrentRipple=f; + + f.Unit = W_unitSymbolType; + f.Value = 5000; + + result->DC_EVSEChargeParameter->EVSEEnergyToBeDelivered=f; + result->DC_EVSEChargeParameter->isused.EVSEEnergyToBeDelivered=1; + + /* set up a PMax schedule */ + result->isused.SAScheduleList=1; + result->SAScheduleList->SAScheduleTuple[0].SAScheduleTupleID=10; + result->SAScheduleList->SAScheduleTuple[0].isused.SalesTariff=0; /* no tariffs */ + + /* set up two PMax entries: #1 */ + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[0].PMax.Value=20000; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[0].PMax.Unit = W_unitSymbolType; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[0].PMax.Multiplier =0; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[0].RelativeTimeInterval.start=0; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[0].RelativeTimeInterval.isused.duration=0; + + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[1].PMax.Value=0; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[1].PMax.Unit = W_unitSymbolType; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[1].PMax.Multiplier =0; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[1].RelativeTimeInterval.start=1200; /* 20 min */ + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[1].RelativeTimeInterval.isused.duration=0; + + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.arraylen.PMaxScheduleEntry=2; /* we set up two time entries */ + + + /* #2 */ + result->SAScheduleList->SAScheduleTuple[1].SAScheduleTupleID=15; + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.PMaxScheduleEntry[0].PMax.Value=10000; + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.PMaxScheduleEntry[0].PMax.Unit = W_unitSymbolType; + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.PMaxScheduleEntry[0].PMax.Multiplier =0; + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.PMaxScheduleEntry[0].RelativeTimeInterval.start=0; + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.PMaxScheduleEntry[0].RelativeTimeInterval.isused.duration=0; + + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.PMaxScheduleEntry[1].PMax.Value=0; + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.PMaxScheduleEntry[1].PMax.Unit = W_unitSymbolType; + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.PMaxScheduleEntry[1].PMax.Multiplier =1; + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.PMaxScheduleEntry[1].RelativeTimeInterval.start=1800; /* 30 min */ + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.PMaxScheduleEntry[1].RelativeTimeInterval.duration=3600; + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.PMaxScheduleEntry[1].RelativeTimeInterval.isused.duration=1; + + result->SAScheduleList->SAScheduleTuple[1].PMaxSchedule.arraylen.PMaxScheduleEntry=2; /* we set up two time entries */ + + result->SAScheduleList->arraylen.SAScheduleTuple=2; /* we used 2 tuple */ + + + + + } else { /* AC related */ + + printf("\t\t DepartureTime=%d\n", param->AC_EVChargeParameter->DepartureTime); + printf("\t\t EAmount=%d\n", param->AC_EVChargeParameter->EAmount.Value); + printf("\t\t EVMaxCurrent=%d\n", param->AC_EVChargeParameter->EVMaxCurrent.Value); + printf("\t\t EVMaxVoltage=%d\n", param->AC_EVChargeParameter->EVMaxVoltage.Value); + printf("\t\t EVMinCurrent=%d\n", param->AC_EVChargeParameter->EVMinCurrent.Value); + + + result->ResponseCode = OK_responseCodeType; + result->EVSEProcessing = Finished_EVSEProcessingType; + + result->isused.AC_EVSEChargeParameter = 1; + result->isused.DC_EVSEChargeParameter = 0; + + result->AC_EVSEChargeParameter->AC_EVSEStatus.RCD=1; + result->AC_EVSEChargeParameter->AC_EVSEStatus.EVSENotification=None_EVSENotificationType; + result->AC_EVSEChargeParameter->AC_EVSEStatus.NotificationMaxDelay=123; + + + + f.Multiplier = 0; + f.Unit = A_unitSymbolType; + f.Value = 100; + + result->AC_EVSEChargeParameter->EVSEMaxCurrent=f; + + + f.Unit = V_unitSymbolType; + f.Value = 300; + result->AC_EVSEChargeParameter->EVSENominalVoltage=f; + + result->EVSEProcessing=1; + + + /* set up a PMax schedule */ + result->isused.SAScheduleList=1; + result->SAScheduleList->SAScheduleTuple[0].SAScheduleTupleID=10; + result->SAScheduleList->SAScheduleTuple[0].isused.SalesTariff=0; /* no tariffs */ + + /* set up two PMax entries: #1 */ + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[0].PMax.Value=20000; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[0].PMax.Unit = W_unitSymbolType; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[0].PMax.Multiplier =0; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[0].RelativeTimeInterval.start=0; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[0].RelativeTimeInterval.isused.duration=0; + + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[1].PMax.Value=0; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[1].PMax.Unit = W_unitSymbolType; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[1].PMax.Multiplier =0; + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[1].RelativeTimeInterval.start=1200; /* 20 min */ + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.PMaxScheduleEntry[1].RelativeTimeInterval.isused.duration=0; + + result->SAScheduleList->SAScheduleTuple[0].PMaxSchedule.arraylen.PMaxScheduleEntry=2; /* we set up two time entries */ + + result->SAScheduleList->arraylen.SAScheduleTuple=1; + result->isused.SAScheduleList=1; + + result->SAScheduleList->SAScheduleTuple[0].isused.SalesTariff=1; + + + /* set up sale entries */ + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->NumEPriceLevels=2; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->isused.NumEPriceLevels=1; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffID=20; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->attr_Id.data[0]=100; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->attr_Id.arraylen.data=1; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->isused.attr_Id=1; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[0].EPriceLevel=2; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[0].isused.EPriceLevel=1; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[0].isused.ConsumptionCost=0; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[0].RelativeTimeInterval.start=0; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[0].RelativeTimeInterval.duration=10; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[0].RelativeTimeInterval.isused.duration=1; + + + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].EPriceLevel=3; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].RelativeTimeInterval.start=11; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].RelativeTimeInterval.duration=10; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].RelativeTimeInterval.isused.duration=1; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].ConsumptionCost[0].Cost[0].amount=10; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].ConsumptionCost[0].Cost[0].amountMultiplier=1; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].ConsumptionCost[0].Cost[0].isused.amountMultiplier=1; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].ConsumptionCost[0].Cost[0].costKind=RenewableGenerationPercentage_costKindType; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].ConsumptionCost[0].startValue.Value=123; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].ConsumptionCost[0].arraylen.Cost=1; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].isused.EPriceLevel=1; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].isused.ConsumptionCost=1; + + + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->SalesTariffEntry[1].arraylen.ConsumptionCost=1; + result->SAScheduleList->SAScheduleTuple[0].SalesTariff->arraylen.SalesTariffEntry=2; + result->SAScheduleList->arraylen.SAScheduleTuple=1; + + } + + + + return 0; +} + +int powerDelivery(struct MessageHeaderType* header, struct PowerDeliveryReqType* param, struct PowerDeliveryResType* result) +{ + + size_t i; + + printf("EVSE side: powerDelivery called\n" ); + printf("\tReceived data:\n"); + + printf("\t\t ChargeProgress=%d\n", param->ChargeProgress); + printf("\t\t SAScheduleTupleID=%d\n", param->SAScheduleTupleID); + + if(param->isused.DC_EVPowerDeliveryParameter) + { + + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", param->DC_EVPowerDeliveryParameter->DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n", param->DC_EVPowerDeliveryParameter->DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", param->DC_EVPowerDeliveryParameter->DC_EVStatus.EVErrorCode); + + printf("\t\t BulkChargingComplete=%d\n", param->DC_EVPowerDeliveryParameter->BulkChargingComplete); + printf("\t\t ChargingComplete=%d\n", param->DC_EVPowerDeliveryParameter->ChargingComplete); + + if(param->isused.ChargingProfile) + { + printf("\t\t\tChargingProfile:\n"); + printf("\t\t\t SAScheduleTupleID=%d\n",param->SAScheduleTupleID ); + for(i=0;iChargingProfile.arraylen.ProfileEntry;i++) + { + printf("\t\t\t Entry#%d\n",i); + printf("\t\t\t\t ChargingProfileEntryMaxPower=%d (%d %d) \n", param->ChargingProfile.ProfileEntry[i].ChargingProfileEntryMaxPower.Value, param->ChargingProfile.ProfileEntry[i].ChargingProfileEntryMaxPower.Unit, param->ChargingProfile.ProfileEntry[i].ChargingProfileEntryMaxPower.Multiplier); + printf("\t\t\t\t ChargingProfileEntryStart=%d\n", param->ChargingProfile.ProfileEntry[i].ChargingProfileEntryStart); + printf("\t\t\t\t ChargingProfileEntryMaxNumberOfPhasesInUse=%d\n", param->ChargingProfile.ProfileEntry[i].ChargingProfileEntryMaxNumberOfPhasesInUse); + + } + + + } + + + result->ResponseCode = OK_responseCodeType; + result->DC_EVSEStatus->EVSEIsolationStatus =0; + result->DC_EVSEStatus->isused.EVSEIsolationStatus = 1; + result->DC_EVSEStatus->EVSEStatusCode = EVSE_Ready_DC_EVSEStatusCodeType; + result->DC_EVSEStatus->EVSENotification=None_EVSENotificationType; + result->DC_EVSEStatus->NotificationMaxDelay=123; + + result->isused.DC_EVSEStatus=1; + result->isused.AC_EVSEStatus=0; + + + + + + } else { + + + result->ResponseCode = OK_responseCodeType; + result->AC_EVSEStatus->RCD=0; + result->AC_EVSEStatus->EVSENotification=3; + result->AC_EVSEStatus->NotificationMaxDelay=12; + + + result->isused.AC_EVSEStatus=1; + result->isused.DC_EVSEStatus=0; + + } + + return 0; +} + +int chargingStatus(struct MessageHeaderType* header, struct ChargingStatusReqType* param, struct ChargingStatusResType* result) +{ + printf("EVSE side: chargingStatus called\n" ); + + + + result->ResponseCode=OK_responseCodeType; + result->EVSEID.data[0]=12; + result->EVSEID.arraylen.data=1; + + result->AC_EVSEStatus.RCD=1; + result->AC_EVSEStatus.EVSENotification=None_EVSENotificationType; + result->AC_EVSEStatus.NotificationMaxDelay=123; + result->ReceiptRequired=1; + result->isused.ReceiptRequired=1; + result->EVSEMaxCurrent.Multiplier = 2; + result->EVSEMaxCurrent.Unit = A_unitSymbolType; + + result->EVSEMaxCurrent.Value = 400; + result->isused.EVSEMaxCurrent=1; + result->SAScheduleTupleID=10; + + result->isused.MeterInfo=1; + result->MeterInfo.MeterID.arraylen.data=1; + result->MeterInfo.MeterID.data[0]=2; + + result->MeterInfo.MeterReading = 5000; + result->MeterInfo.MeterStatus = 4321; + result->MeterInfo.TMeter =123456789; + result->MeterInfo.SigMeterReading.data[0]=123; + result->MeterInfo.SigMeterReading.arraylen.data=1; + result->MeterInfo.isused.MeterReading = 1; + result->MeterInfo.isused.MeterStatus=1; + result->MeterInfo.isused.TMeter=1; + result->MeterInfo.isused.SigMeterReading=1; + + return 0; +} + +int meteringReceipt(struct MessageHeaderType* header, struct MeteringReceiptReqType* param, struct MeteringReceiptResType* result) +{ + + printf("EVSE side: meteringReceipt called\n" ); + printf("\tReceived data:\n"); + + printf("\t\t ID=%c%c%c\n", param->attr_Id.data[0],param->attr_Id.data[1],param->attr_Id.data[2]); + printf("\t\t SAScheduleTupleID=%d\n", param->SAScheduleTupleID); + printf("\t\t SessionID=%d\n", param->SessionID.data[1]); + printf("\t\t MeterInfo.MeterStatus=%d\n", param->MeterInfo.MeterStatus); + printf("\t\t MeterInfo.MeterID=%d\n", param->MeterInfo.MeterID.data[0]); + printf("\t\t MeterInfo.isused.MeterReading=%d\n", param->MeterInfo.isused.MeterReading); + printf("\t\t MeterReading.Value=%d\n", param->MeterInfo.MeterReading); + printf("\t\t MeterInfo.TMeter=%d\n", param->MeterInfo.TMeter); + + result->ResponseCode = OK_responseCodeType; + + + result->AC_EVSEStatus->RCD=1; + result->AC_EVSEStatus->EVSENotification=None_EVSENotificationType; + result->AC_EVSEStatus->NotificationMaxDelay=123; + + + + return 0; +} + +int cableCheck(struct MessageHeaderType* header, struct CableCheckReqType* param, struct CableCheckResType* result) +{ + printf("EVSE side: cableCheck called\n" ); + printf("\tReceived data:\n"); + + + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", param->DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n", param->DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", param->DC_EVStatus.EVErrorCode); + + + result->ResponseCode = OK_responseCodeType; + result->EVSEProcessing = Finished_EVSEProcessingType; + result->DC_EVSEStatus.EVSEIsolationStatus= Valid_isolationLevelType; + result->DC_EVSEStatus.isused.EVSEIsolationStatus = 1; + result->DC_EVSEStatus.EVSEStatusCode = EVSE_Ready_DC_EVSEStatusCodeType; + result->DC_EVSEStatus.EVSENotification=None_EVSENotificationType; + result->DC_EVSEStatus.NotificationMaxDelay=1234; + + return 0; +} + + +int preCharge(struct MessageHeaderType* header, struct PreChargeReqType* param, struct PreChargeResType* result) +{ + struct PhysicalValueType float_type; + + + printf("EVSE side: preCharge called\n" ); + printf("\tReceived data:\n"); + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", param->DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n", param->DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", param->DC_EVStatus.EVErrorCode); + printf("\t\t EVTargetCurrent=%d (%d %d)\n", param->EVTargetCurrent.Value,param->EVTargetCurrent.Unit, param->EVTargetCurrent.Multiplier); + printf("\t\t EVTargetVoltage=%d (%d %d)\n", param->EVTargetVoltage.Value, param->EVTargetVoltage.Unit, param->EVTargetVoltage.Multiplier); + + result->ResponseCode = OK_responseCodeType; + result->DC_EVSEStatus.EVSEIsolationStatus= Valid_isolationLevelType; + result->DC_EVSEStatus.isused.EVSEIsolationStatus = 1; + result->DC_EVSEStatus.EVSEStatusCode = EVSE_Ready_DC_EVSEStatusCodeType; + result->DC_EVSEStatus.EVSENotification=None_EVSENotificationType; + result->DC_EVSEStatus.NotificationMaxDelay=1234; + + float_type.Multiplier = 0; + float_type.Unit = V_unitSymbolType; + float_type.Value = 100; + result->EVSEPresentVoltage = float_type; + + + + + return 0; + + +} + +int currentDemand(struct MessageHeaderType* header, struct CurrentDemandReqType* param, struct CurrentDemandResType* result) +{ + + struct PhysicalValueType f; + + printf("EVSE side: currentDemand called\n" ); + printf("\tReceived data:\n"); + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", param->DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n", param->DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", param->DC_EVStatus.EVErrorCode); + + + printf("\t\t EVTargetCurrent=%d\n", param->EVTargetCurrent.Value); + printf("\t\t EVMaximumVoltageLimit=%d\n", param->EVMaximumVoltageLimit.Value); + printf("\t\t EVMaximumPowerLimit=%d\n", param->EVMaximumPowerLimit.Value); + printf("\t\t EVMaximumCurrentLimit=%d\n", param->EVMaximumCurrentLimit.Value); + printf("\t\t BulkChargingComplete=%d\n", param->BulkChargingComplete); + printf("\t\t ChargingComplete=%d\n", param->ChargingComplete); + printf("\t\t RemainingTimeToFullSoC=%d\n", param->RemainingTimeToFullSoC.Value); + printf("\t\t RemainingTimeToBulkSoC=%d\n", param->RemainingTimeToBulkSoC.Value); + + printf("\t\t EVTargetVoltage=%d\n", param->EVTargetVoltage.Value); + + + result->ResponseCode = OK_responseCodeType; + result->DC_EVSEStatus.EVSEIsolationStatus= Valid_isolationLevelType; + result->DC_EVSEStatus.isused.EVSEIsolationStatus = 1; + result->DC_EVSEStatus.EVSEStatusCode = EVSE_Ready_DC_EVSEStatusCodeType; + result->DC_EVSEStatus.EVSENotification=None_EVSENotificationType; + result->DC_EVSEStatus.NotificationMaxDelay=1234; + + f.Multiplier = 0; + f.Unit = V_unitSymbolType; + f.Value = 400; + + result->EVSEPresentVoltage=f; + + f.Unit = A_unitSymbolType; + f.Value = 45; + + result->EVSEPresentCurrent=f; + + result->EVSECurrentLimitAchieved=0; + + result->EVSEVoltageLimitAchieved=1; + + result->EVSEPowerLimitAchieved=0; + + f.Unit = V_unitSymbolType; + f.Value = 400; + + result->EVSEMaximumVoltageLimit=f; + result->isused.EVSEMaximumVoltageLimit=1; + + f.Unit = A_unitSymbolType; + f.Value = 50; + + result->EVSEMaximumCurrentLimit=f; + result->isused.EVSEMaximumCurrentLimit=1; + + f.Unit = W_unitSymbolType; + f.Value = 20000; + + result->EVSEMaximumPowerLimit=f; + result->isused.EVSEMaximumPowerLimit=1; + + result->EVSEID.data[0]=12; + result->EVSEID.arraylen.data=1; + + result->SAScheduleTupleID = 123; + + + result->isused.MeterInfo=1; + result->MeterInfo.MeterID.arraylen.data=1; + result->MeterInfo.MeterID.data[0]=2; + + result->MeterInfo.MeterReading = 500; + result->MeterInfo.MeterStatus = 4321; + result->MeterInfo.TMeter =123456789; + result->MeterInfo.isused.MeterReading = 1; + result->MeterInfo.isused.MeterStatus=1; + result->MeterInfo.isused.TMeter=1; + result->MeterInfo.isused.SigMeterReading=0; + + result->ReceiptRequired = 1; + result->isused.ReceiptRequired=1; + + return 0; +} + +int weldingDetection(struct MessageHeaderType* header, struct WeldingDetectionReqType* param, struct WeldingDetectionResType* result) +{ + + printf("EVSE side: weldingDetection called\n" ); + printf("\tReceived data:\n"); + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", param->DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n", param->DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", param->DC_EVStatus.EVErrorCode); + + + result->ResponseCode = OK_responseCodeType; + result->DC_EVSEStatus.EVSEIsolationStatus= Valid_isolationLevelType; + result->DC_EVSEStatus.isused.EVSEIsolationStatus = 1; + result->DC_EVSEStatus.EVSEStatusCode = EVSE_Ready_DC_EVSEStatusCodeType; + result->DC_EVSEStatus.EVSENotification=None_EVSENotificationType; + result->DC_EVSEStatus.NotificationMaxDelay=123; + result->EVSEPresentVoltage.Value = 1234; + result->EVSEPresentVoltage.Unit = V_unitSymbolType; + result->EVSEPresentVoltage.Multiplier = 0; + + return 0; +} + +int sessionStop(struct MessageHeaderType* header, struct SessionStopReqType* param, struct SessionStopResType* result) +{ + + + printf("EVSE side: sessionStop called\n" ); + printf("\tReceived data:\n"); + printf("\tHeader SessionID="); + printBinaryArray(header->SessionID.data,header->SessionID.arraylen.data ); + printf("\t\t ChargingSession=%d\n", param->ChargingSession); + result->ResponseCode = OK_responseCodeType; + + + + return 0; + +} + +int serviceDetail(struct MessageHeaderType* header, struct ServiceDetailReqType* param, struct ServiceDetailResType* result) +{ + + printf("EVSE side: serviceDetail called\n" ); + printf("\tReceived data:\n"); + printf("\tHeader SessionID="); + printBinaryArray(header->SessionID.data,header->SessionID.arraylen.data ); + printf("\t\t ServiceDetailID=%d\n", param->ServiceID); + + result->ServiceID = 1234; + + /* Parameter Set 1*/ + result->ServiceParameterList.ParameterSet[0].ParameterSetID = 1; + result->ServiceParameterList.ParameterSet[0].Parameter[0].attr_Name.data[0] = 'P'; + result->ServiceParameterList.ParameterSet[0].Parameter[0].attr_Name.data[1] = 'r'; + result->ServiceParameterList.ParameterSet[0].Parameter[0].attr_Name.data[2] = 'o'; + result->ServiceParameterList.ParameterSet[0].Parameter[0].attr_Name.data[3] = 't'; + result->ServiceParameterList.ParameterSet[0].Parameter[0].attr_Name.data[4] = 'o'; + result->ServiceParameterList.ParameterSet[0].Parameter[0].attr_Name.data[5] = 'c'; + result->ServiceParameterList.ParameterSet[0].Parameter[0].attr_Name.data[6] = 'o'; + result->ServiceParameterList.ParameterSet[0].Parameter[0].attr_Name.data[7] = 'l'; + result->ServiceParameterList.ParameterSet[0].Parameter[0].attr_Name.arraylen.data = 8; + result->ServiceParameterList.ParameterSet[0].Parameter[0].intValue=15119; + result->ServiceParameterList.ParameterSet[0].Parameter[0].isused.intValue=1; + + result->ServiceParameterList.ParameterSet[0].Parameter[1].attr_Name.data[0] = 'N'; + result->ServiceParameterList.ParameterSet[0].Parameter[1].attr_Name.data[1] = 'a'; + result->ServiceParameterList.ParameterSet[0].Parameter[1].attr_Name.data[2] = 'm'; + result->ServiceParameterList.ParameterSet[0].Parameter[1].attr_Name.data[3] = 'e'; + result->ServiceParameterList.ParameterSet[0].Parameter[1].attr_Name.arraylen.data = 4; + result->ServiceParameterList.ParameterSet[0].Parameter[1].stringValue.data[0] = 'V'; + result->ServiceParameterList.ParameterSet[0].Parameter[1].stringValue.data[1] = '2'; + result->ServiceParameterList.ParameterSet[0].Parameter[1].stringValue.data[2] = 'G'; + result->ServiceParameterList.ParameterSet[0].Parameter[1].stringValue.arraylen.data = 3; + result->ServiceParameterList.ParameterSet[0].Parameter[1].isused.stringValue=1; + result->ServiceParameterList.ParameterSet[0].arraylen.Parameter = 2; + + /* Parameter Set 2 */ + result->ServiceParameterList.ParameterSet[1].ParameterSetID = 2; + result->ServiceParameterList.ParameterSet[1].Parameter[0].attr_Name.data[0] = 'C'; + result->ServiceParameterList.ParameterSet[1].Parameter[0].attr_Name.data[1] = 'h'; + result->ServiceParameterList.ParameterSet[1].Parameter[0].attr_Name.data[2] = 'a'; + result->ServiceParameterList.ParameterSet[1].Parameter[0].attr_Name.data[3] = 'n'; + result->ServiceParameterList.ParameterSet[1].Parameter[0].attr_Name.data[4] = 'n'; + result->ServiceParameterList.ParameterSet[1].Parameter[0].attr_Name.data[5] = 'e'; + result->ServiceParameterList.ParameterSet[1].Parameter[0].attr_Name.data[6] = 'l'; + result->ServiceParameterList.ParameterSet[1].Parameter[0].attr_Name.arraylen.data = 7; + result->ServiceParameterList.ParameterSet[1].Parameter[0].physicalValue.Value=1234; + result->ServiceParameterList.ParameterSet[1].Parameter[0].physicalValue.Unit=m_unitSymbolType; + result->ServiceParameterList.ParameterSet[1].Parameter[0].physicalValue.Multiplier=0; + result->ServiceParameterList.ParameterSet[1].Parameter[0].isused.physicalValue=1; + result->ServiceParameterList.ParameterSet[1].arraylen.Parameter =1; + + result->ServiceParameterList.arraylen.ParameterSet = 2; + result->isused.ServiceParameterList = 1; + + result->ResponseCode = OK_responseCodeType; + + + + return 0; +} + +int authorization(struct MessageHeaderType* header, struct AuthorizationReqType* param, struct AuthorizationResType* result) +{ + + printf("EVSE: contractAuthentication called\n" ); + printf("\tReceived data:\n"); + + if(param->isused.GenChallenge) + printf("\t\t\t GenChallenge=%d\n", param->GenChallenge.data[0]); + + if(param->isused.attr_Id) + printf("\t\t\t ID=%c%c%c\n", param->attr_Id.data[0],param->attr_Id.data[1],param->attr_Id.data[2]); + + + + result->ResponseCode=OK_responseCodeType; + result->EVSEProcessing=Finished_EVSEProcessingType; + + + return 0; +} + +int certificateUpdate(struct MessageHeaderType* header, struct CertificateUpdateReqType* param, struct CertificateUpdateResType* result) +{ + return 0; +} + +int certificateInstallation(struct MessageHeaderType* header, struct CertificateInstallationReqType* param, struct CertificateInstallationResType* result) +{ + + + + return 0; +} + +static void printBinaryArray(uint8_t* byte, uint32_t len) { + unsigned int i; + for(i=0; i. + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + *

Switch for sample programs: EXI codec only or for entire V2G service

+ * + ********************************************************************/ + +#include +#include + +#include "main.h" + +int main(int argc, char *argv[]) { +#if CODE_VERSION == CODE_VERSION_EXI + /* EXI codec only */ + return main_codec(argc, argv); +#elif CODE_VERSION == CODE_VERSION_SERVICE + /* V2G client / service example scenario */ + return main_service(argc, argv); +#endif + +} + diff --git a/src/test/main.h b/src/test/main.h new file mode 100644 index 0000000..d45b4c4 --- /dev/null +++ b/src/test/main.h @@ -0,0 +1,43 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + * + ********************************************************************/ + + +#define CODE_VERSION_EXI 1 +#define CODE_VERSION_SERVICE 2 +#define CODE_VERSION CODE_VERSION_SERVICE +/* #define CODE_VERSION CODE_VERSION_EXI */ + +#ifndef MAIN_H_ +#define MAIN_H_ + +#if CODE_VERSION == CODE_VERSION_EXI +int main_codec(int argc, char *argv[]); +#elif CODE_VERSION == CODE_VERSION_SERVICE +int main_service(int argc, char *argv[]); +#endif + +#endif diff --git a/src/test/pev_service.c b/src/test/pev_service.c new file mode 100644 index 0000000..bb81c98 --- /dev/null +++ b/src/test/pev_service.c @@ -0,0 +1,1885 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +/* includes for the application handshake protocol */ +#include "appHand_service.h" +#include "appHand_dataTypes.h" + + +/* includes V2GTP */ +#include "v2gtp.h" + +/* includes for example data transmitter */ +#include "v2g_serviceClientDataTransmitter.h" + +/* includes of the 15118 messaging */ +#include "v2g_service.h" +#include "v2g_dataTypes.h" +#include "v2g_dataTypes.c" +#include "v2g_serviceClientStubs.h" +#include "EXITypes.h" +/*#include "appHandQNameDefines.h" */ + +#include + +#define MAX_BYTE_SIZE 128 +#define MAX_STRING_SIZE 256 +#define MAX_STREAM_SIZE 256 + + +static void printErrorMessage(struct EXIService* service); +static void printDCEVSEStatus(struct DC_EVSEStatusType* status); +static void printACEVSEStatus(struct AC_EVSEStatusType* status); +static void printASCIIString(uint32_t* string, uint32_t len); +static void printBinaryArray(uint8_t* byte, uint32_t len); +static int writeStringToEXIString(char* string, uint32_t* exiString); + + + + +static int appHandshake() +{ + static uint8_t byte_array[MAX_BYTE_SIZE]; /* define MAX_BYTE_SIZE before*/ + static uint32_t string_array[MAX_STRING_SIZE]; /* define MAX_STRING_SIZE before*/ + + /* define in and out byte stream */ + uint8_t inStream[MAX_STREAM_SIZE]; /* define MAX_STREAM_SIZE before */ + uint8_t outStream[MAX_STREAM_SIZE]; /* define MAX_STREAM_SIZE before */ + + /* BINARY memory setup */ + exi_bytes_t bytes = { MAX_BYTE_SIZE, byte_array, 0 }; + + /* STRING memory setup */ + exi_string_ucs_t string = { MAX_STRING_SIZE, string_array, 0 }; + + struct EXIDatabinder appHandService; + struct EXIDocumentType_appHand exiDoc; + struct SupportedAppProtocolReq handshake; + struct SupportedAppProtocolRes resultHandshake; + uint16_t length, payloadLength; + + /* init the app handshake serializer. + * Important: also provide the offset of the V2GTP header length */ + init_appHandSerializer(&appHandService,bytes,string,MAX_STREAM_SIZE, V2GTP_HEADER_LENGTH); + + init_EXIDocumentType_appHand(&exiDoc); + + printf("EV side: setup data for the supported application handshake request message\n"); + + /* set up ISO/IEC 15118 Version 1.0 information */ + length = writeStringToEXIString("urn:iso:15118:2:2010:MsgDef", handshake.AppProtocol[0].ProtocolNamespace.data); + handshake.AppProtocol[0].ProtocolNamespace.arraylen.data = length; /* length of the string */ + handshake.AppProtocol[0].SchemaID=1; + handshake.AppProtocol[0].VersionNumberMajor=1; + handshake.AppProtocol[0].VersionNumberMinor=0; + handshake.AppProtocol[0].Priority=1; + + length = writeStringToEXIString("urn:din:70121:2012:MsgDef", handshake.AppProtocol[1].ProtocolNamespace.data); + handshake.AppProtocol[1].ProtocolNamespace.arraylen.data = length; /* length of the string */ + handshake.AppProtocol[1].SchemaID=2; + handshake.AppProtocol[1].VersionNumberMajor=1; + handshake.AppProtocol[1].VersionNumberMinor=0; + handshake.AppProtocol[1].Priority=2; + + + handshake.arraylen.AppProtocol=2; /* we have only one protocol implemented */ + + /* assign handshake request structure to the exiDoc and signal it */ + exiDoc.isused.supportedAppProtocolReq=1; + exiDoc.supportedAppProtocolReq = &handshake; + + payloadLength=0; + if(serialize_appHand(&appHandService, outStream,&payloadLength, &exiDoc)) + { + /* an error occured */ + return -1; + } + printf("EV side: send message to the EVSE\n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, payloadLength, inStream); + + /* Init deserializer + * Provide here also the offset of the transport protocol */ + init_appHandDeserializer(&appHandService,bytes,string,V2GTP_HEADER_LENGTH); + + + /* setup the */ + init_EXIDocumentType_appHand(&exiDoc); + exiDoc.isused.supportedAppProtocolRes=1; + + exiDoc.supportedAppProtocolRes = &resultHandshake; + + if(deserialize_appHand(&appHandService,inStream,100,&exiDoc)) + { + /* an error occurred */ + return -1; + } + + printf("EV side: Response of the EVSE \n"); + if(resultHandshake.ResponseCode==OK_SuccessfulNegotiation_responseCodeType) + { + printf("\t\tResponseCode=OK_SuccessfulNegotiation\n"); + printf("\t\tSchemaID=%d\n",resultHandshake.SchemaID ); + } + + return 0; + +} + + + + + + + + +static int ac_charging() +{ + + + static uint8_t byte_array[MAX_BYTE_SIZE]; /* define MAX_BYTE_SIZE before*/ + static uint32_t string_array[MAX_STRING_SIZE]; /* define MAX_STRING_SIZE before*/ + + /* define in and out byte stream */ + uint8_t inStream[MAX_STREAM_SIZE]; /* define MAX_STREAM_SIZE before */ + uint8_t outStream[MAX_STREAM_SIZE]; /* define MAX_STREAM_SIZE before */ + + + + /* define offset variable for transport header data */ + uint16_t transportHeaderOffset; + + + /* service data structure for AC*/ + struct EXIService service; + struct MessageHeaderType v2gHeader; + struct SessionSetupReqType sessionSetup; + struct SessionSetupResType resultSessionSetup; + struct ServiceDiscoveryReqType serviceDiscovery; + struct ServiceDiscoveryResType resultServiceDiscovery; + struct ServiceDetailReqType serviceDetail; + struct ServiceDetailResType resultServiceDetail; + struct PaymentServiceSelectionReqType servicePayment; + struct PaymentServiceSelectionResType resultServicePayment; + struct PaymentDetailsReqType paymentDetails; + struct PaymentDetailsResType resultPaymentDetails; + struct AuthorizationReqType contractAuthentication; + struct AuthorizationResType resultContractAuthentication; + struct ChargeParameterDiscoveryReqType powerDiscovery; + struct ChargeParameterDiscoveryResType resultPowerDiscovery; + struct PowerDeliveryReqType powerDelivery; + struct PowerDeliveryResType resultPowerDelivery; + struct ChargingStatusResType resultChargingStatus; + struct MeteringReceiptReqType meteringReceipt; + struct MeteringReceiptResType resultMeteringReceipt; + struct SessionStopReqType sessionStop; + struct SessionStopResType resultSessionStop; + + struct AC_EVChargeParameterType EVChargeParameter; + struct AC_EVSEChargeParameterType evseChargeParameter; + struct SalesTariffType sales; + struct SAScheduleListType schedule; + + struct AC_EVSEStatusType evseStatus; + + + + + struct PhysicalValueType float_type; + + enum responseMessages resMsg; + + uint32_t outPayloadLength; + + size_t i,j; + + + /* BINARY memory setup */ + exi_bytes_t bytes = { MAX_BYTE_SIZE, byte_array, 0 }; + + /* STRING memory setup */ + exi_string_ucs_t string = { MAX_STRING_SIZE, string_array, 0 }; + + /* setup offset for DoIP header (otherwise set + * transportHeaderOffset=0 if no transfer protocol is used)*/ + transportHeaderOffset = V2GTP_HEADER_LENGTH; + + + /******************* + * Init V2G Client * + *******************/ + + init_v2gServiceClient(&service,bytes,string,inStream,MAX_STREAM_SIZE, outStream, MAX_STREAM_SIZE, &outPayloadLength, transportHeaderOffset); + + + /******************************* + * Setup data for sessionSetup * + *******************************/ + + /* setup header information */ + v2gHeader.SessionID.data[0] = 0; /* sessionID is always '0' at the beginning (the response contains the valid sessionID)*/ + v2gHeader.SessionID.data[1] = 0; + v2gHeader.SessionID.data[2] = 0; + v2gHeader.SessionID.data[3] = 0; + v2gHeader.SessionID.data[4] = 0; + v2gHeader.SessionID.data[5] = 0; + v2gHeader.SessionID.data[6] = 0; + v2gHeader.SessionID.data[7] = 0; + v2gHeader.SessionID.arraylen.data = 8; /* length of the byte session array is always 8*/ + + v2gHeader.isused.Notification=0; /* no notification */ + v2gHeader.isused.Signature=0; /* no security */ + + /* setup sessionSetup parameter */ + sessionSetup.EVCCID.data[0]=10; + sessionSetup.EVCCID.arraylen.data=1; + + printf("EV side: prepare EVSE sessionSetup\n"); + + /************************ + * Prepare sessionSetup * + ************************/ + + if(prepare_sessionSetup(&service,&v2gHeader, &sessionSetup,&resultSessionSetup)) + { + + printErrorMessage(&service); + return 0; + } + + printf("EV side: call EVSE sessionSetup"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream */ + if( determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + return 0; + } + + + + + /* check, if this is the sessionSetup response message */ + if(resMsg==SESSIONSETUPRES) + { + /* show result of the answer message of EVSE sessionSetup */ + printf("EV side: received response message from EVSE\n"); + printf("\tHeader SessionID="); + printBinaryArray(v2gHeader.SessionID.data,v2gHeader.SessionID.arraylen.data ); + printf("\tResponseCode=%d\n",resultSessionSetup.ResponseCode); + printf("\tEVSEID=%d\n", resultSessionSetup.EVSEID.data[1]); + printf("\tEVSETimeStamp=%d\n",resultSessionSetup.EVSETimeStamp); + + } + + + + /******************************************* + * Setup data for serviceDiscovery * + *******************************************/ + + serviceDiscovery.isused.ServiceCategory=1; + serviceDiscovery.ServiceCategory = Internet_serviceCategoryType; + serviceDiscovery.isused.ServiceScope=0; + + + printf("\n\nEV side: prepare EVSE serviceDiscovery\n"); + + /**************************** + * Prepare serviceDiscovery * + ****************************/ + + prepare_serviceDiscovery(&service,&v2gHeader, &serviceDiscovery,&resultServiceDiscovery); + + printf("EV side: call EVSE serviceDiscovery "); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + return 0; + } + + /* check, if this is the serviceDiscovery response message */ + if(resMsg==SERVICEDISCOVERYRES) + { + /* show result of the answer message of EVSE serviceDiscovery */ + printf("EV side: received response message from EVSE\n"); + printf("\tHeader SessionID="); + printBinaryArray(v2gHeader.SessionID.data,v2gHeader.SessionID.arraylen.data ); + printf("\t ResponseCode=%d\n",resultServiceDiscovery.ResponseCode); + printf("\t ServiceID=%d\n", resultServiceDiscovery.ChargeService.ServiceID); + printf("\t ServiceName="); + printASCIIString(resultServiceDiscovery.ChargeService.ServiceName.data,(uint32_t)resultServiceDiscovery.ChargeService.ServiceName.arraylen.data ); + + if( resultServiceDiscovery.PaymentOptionList.PaymentOption[1]==Contract_paymentOptionType) + printf("\t PaymentOption=Contract_paymentOptionType\n"); + + if( resultServiceDiscovery.ChargeService.FreeService==1) + printf("\t ChargeService.FreeService=True\n"); + + if(resultServiceDiscovery.ChargeService.SupportedEnergyTransferMode.EnergyTransferMode[0]==DC_combo_core_EnergyTransferModeType) + printf("\t EnergyTransferMode=AC_single_DC_core\n"); + + if(resultServiceDiscovery.ChargeService.SupportedEnergyTransferMode.EnergyTransferMode[1]==AC_single_phase_core_EnergyTransferModeType) + printf("\t EnergyTransferMode=AC_single_phase_core_EnergyTransferModeType\n"); + + printf("\t Value added service list:\n"); + for(i=0;iSAScheduleTuple[0].SalesTariff = &sales; + + init_SalesTariffType(&sales); /* init sales structure */ + init_SAScheduleListType(&schedule); + + prepare_chargeParameterDiscovery(&service,&v2gHeader,&powerDiscovery,&resultPowerDiscovery); + + + printf("EV side: call EVSE chargeParameterDiscovery"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the chargeParameterDiscovery response message */ + if(resMsg==CHARGEPARAMETERDISCOVERYRES) + + { + + /* show result of the answer message of EVSE sessionSetup*/ + printf("EV side: received response message from EVSE\n"); + printf("\tHeader SessionID="); + printBinaryArray(v2gHeader.SessionID.data,v2gHeader.SessionID.arraylen.data ); + printf("\tResponseCode=%d\n",resultPowerDiscovery.ResponseCode); + printACEVSEStatus(&(resultPowerDiscovery.AC_EVSEChargeParameter->AC_EVSEStatus)); + printf("\t EVSEProcessing=%d\n",resultPowerDiscovery.EVSEProcessing); + printf("\t EVSEMaxCurrent=%d\n",resultPowerDiscovery.AC_EVSEChargeParameter->EVSEMaxCurrent.Value); + printf("\t EVSENominalVoltage=%d\n",resultPowerDiscovery.AC_EVSEChargeParameter->EVSENominalVoltage.Value); + } + + + + /********************************* + * Setup data for powerDelivery * + *********************************/ + + printf("\n\nEV side: prepare EVSE powerDelivery\n"); + + + powerDelivery.isused.ChargingProfile= 0; + powerDelivery.isused.DC_EVPowerDeliveryParameter=0; /* only used for DC charging */ + + powerDelivery.ChargeProgress=Start_chargeProgressType; + powerDelivery.SAScheduleTupleID=resultPowerDiscovery.SAScheduleList->SAScheduleTuple[0].SAScheduleTupleID; + + resultPowerDelivery.AC_EVSEStatus = &evseStatus; /* we expect an evse status */ + + + + prepare_powerDelivery(&service,&v2gHeader,&powerDelivery,&resultPowerDelivery); + + printf("EV side: call EVSE powerDelivery \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the powerDelivery response message */ + if(resMsg==POWERDELIVERYRES) + { + + /* show result of the answer message of EVSE sessionSetup*/ + printf("EV side: received response message from EVSE\n"); + printf("\tResponseCode=%d\n",resultPowerDelivery.ResponseCode); + printACEVSEStatus(&evseStatus); + } + + /********************************* + * Setup data for chargingStatus * + *********************************/ + + printf("\n\nEV side: prepare EVSE chargingStatus\n"); + + /*************************** + * Prepare chargingStatus * + ***************************/ + + if(prepare_chargingStatus(&service,&v2gHeader,&resultChargingStatus)) + { + printErrorMessage(&service); + return 0; /* stop here */ + } + + printf("EV side: call EVSE chargingStatus \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the chargingStatus response message */ + if(resMsg==CHARGINGSTATUSRES) + { + /* show result of the answer message of EVSE sessionSetup*/ + printf("EV side: received response message from EVSE\n"); + /* show result of the answer message of EVSE powerDiscovery*/ + printf("\tResponseCode=%d\n",resultChargingStatus.ResponseCode); + printACEVSEStatus(&resultChargingStatus.AC_EVSEStatus); + printf("\tReceiptRequired=%d\n",resultChargingStatus.ReceiptRequired); + printf("\tEVSEID=%d\n",resultChargingStatus.EVSEID.data[0]); + printf("\tSAScheduleTupleID=%d\n",resultChargingStatus.SAScheduleTupleID); + printf("\tEVSEMaxCurrent=%d (%d %d)\n",resultChargingStatus.EVSEMaxCurrent.Value, resultChargingStatus.EVSEMaxCurrent.Unit, resultChargingStatus.EVSEMaxCurrent.Multiplier); + printf("\tisused.MeterInfo=%d\n", resultChargingStatus.isused.MeterInfo); + printf("\t\tMeterInfo.MeterID=%d\n", resultChargingStatus.MeterInfo.MeterID.data[0]); + printf("\t\tMeterInfo.MeterReading.Value=%d\n", resultChargingStatus.MeterInfo.MeterReading); + printf("\t\tMeterInfo.MeterStatus=%d\n", resultChargingStatus.MeterInfo.MeterStatus); + printf("\t\tMeterInfo.TMeter=%d\n", resultChargingStatus.MeterInfo.TMeter); + printf("\t\tMeterInfo.SigMeterReading.data=%d\n", resultChargingStatus.MeterInfo.SigMeterReading.data[0]); + } + + + + /*********************************** + * Setup data for meteringReceipt * + ***********************************/ + + + meteringReceipt.SessionID = v2gHeader.SessionID; + meteringReceipt.SAScheduleTupleID = 12; + meteringReceipt.isused.SAScheduleTupleID=1; + meteringReceipt.MeterInfo.MeterStatus = 2; + meteringReceipt.MeterInfo.isused.MeterStatus = 1; + meteringReceipt.MeterInfo.MeterID.arraylen.data=1; + meteringReceipt.MeterInfo.MeterID.data[0]=3; + + + meteringReceipt.MeterInfo.MeterReading = 100; + meteringReceipt.MeterInfo.isused.MeterReading = 1; + meteringReceipt.MeterInfo.isused.SigMeterReading = 0; + + meteringReceipt.MeterInfo.TMeter =123456789; + meteringReceipt.MeterInfo.isused.TMeter = 1; + + meteringReceipt.attr_Id.data[0]='I'; + meteringReceipt.attr_Id.data[1]='d'; + meteringReceipt.attr_Id.data[2]='3'; + meteringReceipt.attr_Id.arraylen.data=3; + meteringReceipt.isused.attr_Id=1; /* message is signed */ + + resultMeteringReceipt.AC_EVSEStatus = &evseStatus; /* we expect EVSE status */ + + printf("\n\nEV side: prepare EVSE meteringReceipt\n"); + + /**************************** + * Prepare meteringReceipt * + ****************************/ + + if(prepare_meteringReceipt(&service,&v2gHeader,&meteringReceipt,&resultMeteringReceipt)) + { + printErrorMessage(&service); + return 0; /* stop here */ + } + + printf("EV side: call EVSE meteringReceipt \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the meteringReceipt response message */ + if(resMsg==METERINGRECEIPTRES) + { + /* show result of the answer message of EVSE sessionSetup*/ + printf("EV side: received response message from EVSE\n"); + /* show result of the answer message of EVSE powerDiscovery*/ + printf("\tResponseCode=%d\n",resultMeteringReceipt.ResponseCode); + printACEVSEStatus(&evseStatus); + } + + + + /*********************************** + * Setup data for stopSession * + ***********************************/ + + printf("\n\nEV side: prepare EVSE stopSession\n"); + + /************************ + * Prepare stopSession * + ************************/ + + sessionStop.ChargingSession = 1; + + if(prepare_sessionStop(&service,&v2gHeader,&sessionStop, &resultSessionStop)) + { + printErrorMessage(&service); + return 0; /* stop here */ + } + + printf("EV side: call EVSE stopSession \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the sessionSetup response message */ + if(resMsg==SESSIONSTOPRES) + { + /* show result of the answer message of EVSE sessionSetup*/ + printf("EV side: received response message from EVSE\n"); + /* show result of the answer message of EVSE powerDiscovery*/ + printf("\tResponseCode=%d\n",resultSessionStop.ResponseCode); + } + + + return 0; + +} + +static int dc_charging() +{ + + + + static uint8_t byte_array[MAX_BYTE_SIZE]; /* define MAX_BYTE_SIZE before*/ + static uint32_t string_array[MAX_STRING_SIZE]; /* define MAX_STRING_SIZE before*/ + + /* define in and out byte stream */ + uint8_t inStream[MAX_STREAM_SIZE]; /* define MAX_STREAM_SIZE before */ + uint8_t outStream[MAX_STREAM_SIZE]; /* define MAX_STREAM_SIZE before */ + + + + /* define offset variable for transport header data */ + uint16_t transportHeaderOffset; + + + /* service data structure for DC*/ + struct EXIService service; + struct MessageHeaderType v2gHeader; + struct SessionSetupReqType sessionSetup; + struct SessionSetupResType resultSessionSetup; + struct ServiceDiscoveryReqType serviceDiscovery; + struct ServiceDiscoveryResType resultServiceDiscovery; + struct PaymentServiceSelectionReqType servicePayment; + struct PaymentServiceSelectionResType resultServicePayment; + struct AuthorizationReqType contractAuthentication; + struct AuthorizationResType resultContractAuthentication; + struct ChargeParameterDiscoveryReqType powerDiscovery; + struct ChargeParameterDiscoveryResType resultPowerDiscovery; + struct CableCheckReqType cableCheck; + struct CableCheckResType resultCableCheck; + struct PowerDeliveryReqType powerDelivery; + struct PowerDeliveryResType resultPowerDelivery; + struct PreChargeReqType preCharge; + struct PreChargeResType resultPreCharge; + struct CurrentDemandReqType currentDemand; + struct CurrentDemandResType resultCurrentDemand; + struct WeldingDetectionReqType weldingDetection; + struct WeldingDetectionResType resultWeldingDetection; + struct SessionStopReqType sessionStop; + struct SessionStopResType resultSessionStop; + + struct DC_EVStatusType EVStatus; + struct DC_EVSEStatusType evseStatus; + struct DC_EVChargeParameterType EVChargeParameter; + struct DC_EVSEChargeParameterType evseChargeParameter; + struct DC_EVPowerDeliveryParameterType EVPowerDelivery; + struct SAScheduleListType SAScheduleList; + + enum responseMessages resMsg; + + struct PhysicalValueType float_type; + + uint32_t outPayloadLength; + + + size_t i, j; + + /* BINARY memory setup */ + exi_bytes_t bytes = { MAX_BYTE_SIZE, byte_array, 0 }; + + /* STRING memory setup */ + exi_string_ucs_t string = { MAX_STRING_SIZE, string_array, 0 }; + + /* setup offset for DoIP header (otherwise set + * transportHeaderOffset=0 if no transfer protocol is used)*/ + transportHeaderOffset = V2GTP_HEADER_LENGTH; + + + /******************* + * Init V2G Client * + *******************/ + + init_v2gServiceClient(&service,bytes,string,inStream,MAX_STREAM_SIZE, outStream, MAX_STREAM_SIZE, &outPayloadLength, transportHeaderOffset); + + + /******************************* + * Setup data for sessionSetup * + *******************************/ + + /* setup header information */ + v2gHeader.SessionID.data[0] = 0; /* sessionID is always '0' at the beginning (the response message contains the valid sessionID)*/ + v2gHeader.SessionID.data[1] = 0; + v2gHeader.SessionID.data[2] = 0; + v2gHeader.SessionID.data[3] = 0; + v2gHeader.SessionID.data[4] = 0; + v2gHeader.SessionID.data[5] = 0; + v2gHeader.SessionID.data[6] = 0; + v2gHeader.SessionID.data[7] = 0; + v2gHeader.SessionID.arraylen.data = 8; /* length of the byte session array is always 8*/ + + v2gHeader.isused.Notification=0; /* no notification */ + v2gHeader.isused.Signature=0; /* no security */ + + /* setup sessionSetup parameter */ + sessionSetup.EVCCID.data[0]=20; + sessionSetup.EVCCID.arraylen.data=1; + + printf("EV side: prepare EVSE sessionSetup\n"); + + /************************ + * Prepare sessionSetup * + ************************/ + + if(prepare_sessionSetup(&service,&v2gHeader, &sessionSetup,&resultSessionSetup)) + { + printf("Error!\n"); + } + + printf("EV side: call EVSE sessionSetup\n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the sessionSetup response message */ + if(resMsg==SESSIONSETUPRES) + { + /* show result of the answer message of EVSE sessionSetup */ + printf("EV: received response message from EVSE\n"); + printf("\tHeader SessionID="); + printBinaryArray(v2gHeader.SessionID.data,v2gHeader.SessionID.arraylen.data ); + printf("\tResponseCode=%d\n",resultSessionSetup.ResponseCode); + printf("\tEVSEID=%d\n", resultSessionSetup.EVSEID.data[1]); + printf("\tDateTimeNow=%d\n",resultSessionSetup.EVSETimeStamp); + } + + + + /* else if(resMsg==NOTIFICATION) { + + printf("Received a notification: %d", v2gHeader.Notification.FaultCode ); + + } + +*/ + /******************************************* + * Setup data for serviceDiscovery * + *******************************************/ + + serviceDiscovery.isused.ServiceCategory=1; + serviceDiscovery.ServiceCategory = EVCharging_serviceCategoryType; + serviceDiscovery.isused.ServiceScope=0; + + + printf("\n\nEV side: prepare EVSE serviceDiscovery\n"); + + /**************************** + * Prepare serviceDiscovery * + ****************************/ + + prepare_serviceDiscovery(&service,&v2gHeader, &serviceDiscovery,&resultServiceDiscovery); + + printf("EV side: call EVSE serviceDiscovery \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the serviceDiscovery response message */ + if(resMsg==SERVICEDISCOVERYRES) + { + /* show result of the answer message of EVSE sessionSetup */ + printf("\nEV side: received response message from EVSE\n"); + printf("\tHeader SessionID="); + printBinaryArray(v2gHeader.SessionID.data,v2gHeader.SessionID.arraylen.data ); + printf("\t ResponseCode=%d\n",resultServiceDiscovery.ResponseCode); + printf("\t ChargeServiceID=%d\n", resultServiceDiscovery.ChargeService.ServiceID); + printf("\t ServiceName="); + printASCIIString(resultServiceDiscovery.ChargeService.ServiceName.data,(uint32_t)resultServiceDiscovery.ChargeService.ServiceName.arraylen.data ); + printf("\t PaymentOption=%d\n", resultServiceDiscovery.PaymentOptionList.PaymentOption[1]); + printf("\t EnergyTransferType=%d\n", resultServiceDiscovery.ChargeService.SupportedEnergyTransferMode.EnergyTransferMode[1]); + printf("\t FreeService=%d\n", resultServiceDiscovery.ChargeService.FreeService); + printf("\t ServiceCategory=%d\n", resultServiceDiscovery.ChargeService.ServiceCategory); + printf("\t ServiceScope=%d\n", resultServiceDiscovery.ChargeService.ServiceScope.data[0]); + } + + + + + /******************************************* + * Setup data for ServicePaymentSelection * + *******************************************/ + + servicePayment.SelectedPaymentOption = ExternalPayment_paymentOptionType; + servicePayment.SelectedServiceList.SelectedService[0].ServiceID=resultServiceDiscovery.ChargeService.ServiceID; /* charge server ID */ + servicePayment.SelectedServiceList.SelectedService[0].isused.ParameterSetID=0; /* is not used */ + servicePayment.SelectedServiceList.arraylen.SelectedService=1; /* only one service was selected */ + + printf("\n\nEV side: prepare EVSE servicePaymentSelection\n"); + + /************************************** + * Prepare ServicePaymentSelection * + **************************************/ + + if(prepare_paymentServiceSelection(&service,&v2gHeader, &servicePayment,&resultServicePayment)) + { + printErrorMessage(&service); + return 0; + } + + printf("EV side: call EVSE ServicePaymentSelection \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the servicePaymentSelection response message */ + if(resMsg==PAYMENTSERVICESELECTIONRES) + { + /* show result of the answer message of EVSE sessionSetup */ + printf("EV: received response message from EVSE\n"); + printf("\tHeader SessionID="); + printBinaryArray(v2gHeader.SessionID.data,v2gHeader.SessionID.arraylen.data ); + printf("\t ResponseCode=%d\n",resultServicePayment.ResponseCode); + } + + + + + + /******************************************* + * Setup data for ContractAuthentification * + *******************************************/ + + contractAuthentication.isused.GenChallenge=0; /* no challenge needed here*/ + contractAuthentication.isused.attr_Id=0; /* no signature needed here */ + + + printf("\n\nEV side: prepare EVSE contractAuthentification\n"); + + /************************************** + * Prepare ContractAuthentification * + **************************************/ + + if(prepare_authorization(&service,&v2gHeader, &contractAuthentication,&resultContractAuthentication)) + { + printErrorMessage(&service); + return 0; + } + + printf("EV side: call EVSE Authentification \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the servicePaymentSelection response message */ + if(resMsg==AUTHORIZATIONRES) + { + /* show result of the answer message of EVSE sessionSetup */ + printf("EV: received response message from EVSE\n"); + printf("\tHeader SessionID="); + printBinaryArray(v2gHeader.SessionID.data,v2gHeader.SessionID.arraylen.data ); + printf("\t ResponseCode=%d\n",resultContractAuthentication.ResponseCode); + if(resultContractAuthentication.EVSEProcessing==Finished_EVSEProcessingType) + printf("\t EVSEProcessing=Finished\n"); + + + } + + + /******************************************* + * Setup data for chargeParameterDiscovery * + *******************************************/ + + /* setup EVStatus */ + + EVStatus.EVRESSSOC = 89; + EVStatus.EVReady = 1; + + EVStatus.EVErrorCode = NO_ERROR_DC_EVErrorCodeType; + + EVChargeParameter.DC_EVStatus = EVStatus; + + EVChargeParameter.DepartureTime=123456789; + EVChargeParameter.isused.DepartureTime=1; + + powerDiscovery.MaxEntriesSAScheduleTuple = 10; + powerDiscovery.isused.MaxEntriesSAScheduleTuple=1; + + float_type.Multiplier = 0; + float_type.Unit = A_unitSymbolType; + float_type.Value = 60; + + EVChargeParameter.EVMaximumCurrentLimit = float_type; + + float_type.Unit = W_unitSymbolType; + float_type.Value = 20000; + + EVChargeParameter.EVMaximumPowerLimit = float_type; + EVChargeParameter.isused.EVMaximumPowerLimit = 1; + + float_type.Unit = V_unitSymbolType; + float_type.Value = 420; + + EVChargeParameter.EVMaximumVoltageLimit= float_type; + + float_type.Unit = W_unitSymbolType; + float_type.Value = 15000; + + EVChargeParameter.EVEnergyCapacity= float_type; + EVChargeParameter.isused.EVEnergyCapacity = 1; + + float_type.Unit = W_unitSymbolType; + float_type.Value = 5000; + + EVChargeParameter.EVEnergyRequest= float_type; + EVChargeParameter.isused.EVEnergyRequest = 1; + + EVChargeParameter.FullSOC=99; + EVChargeParameter.isused.FullSOC = 1; + + EVChargeParameter.BulkSOC=80; + EVChargeParameter.isused.BulkSOC = 1; + + powerDiscovery.RequestedEnergyTransferMode = DC_combo_core_EnergyTransferModeType; + + powerDiscovery.DC_EVChargeParameter = &EVChargeParameter; + powerDiscovery.isused.DC_EVChargeParameter = 1; /* we use here DC based charging parameters */ + powerDiscovery.isused.AC_EVChargeParameter = 0; + + resultPowerDiscovery.DC_EVSEChargeParameter = &evseChargeParameter; /* we expect DC-based parameters from the evse*/ + + if(powerDiscovery.MaxEntriesSAScheduleTuple>0) + { + init_SAScheduleListType(&SAScheduleList); + resultPowerDiscovery.SAScheduleList = &SAScheduleList; + } + + printf("\n\nEV side: prepare EVSE chargeParameterDiscovery\n"); + + /************************************ + * Prepare chargeParameterDiscovery * + ************************************/ + + if(prepare_chargeParameterDiscovery(&service,&v2gHeader, &powerDiscovery,&resultPowerDiscovery)) + { + printErrorMessage(&service); + return 0; + } + + printf("EV side: call EVSE chargeParameterDiscovery \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the chargeParameterDiscovery response message */ + if(resMsg==CHARGEPARAMETERDISCOVERYRES) + { + /* show result of the answer message of EVSE sessionSetup*/ + printf("\nEV side: received response message from EVSE\n"); + printf("\t\t Header SessionID=%d\n",v2gHeader.SessionID.data[0]); + printf("\tResponseCode=%d\n",resultPowerDiscovery.ResponseCode); + if(resultPowerDiscovery.EVSEProcessing==Finished_EVSEProcessingType) + printf("\tEVSEProcessing=Finished\n"); + printDCEVSEStatus(&(resultPowerDiscovery.DC_EVSEChargeParameter->DC_EVSEStatus)); + printf("\tEVSEMaximumCurrentLimit=%d\n",resultPowerDiscovery.DC_EVSEChargeParameter->EVSEMaximumCurrentLimit.Value); + printf("\tEVSEMaximumPowerLimit=%d\n",resultPowerDiscovery.DC_EVSEChargeParameter->EVSEMaximumPowerLimit.Value); + printf("\tEVSEMaximumVoltageLimit=%d\n",resultPowerDiscovery.DC_EVSEChargeParameter->EVSEMaximumVoltageLimit.Value); + printf("\tEVSEMinimumCurrentLimit=%d\n",resultPowerDiscovery.DC_EVSEChargeParameter->EVSEMinimumCurrentLimit.Value); + + printf("\tEVSEMinimumVoltageLimit=%d\n",resultPowerDiscovery.DC_EVSEChargeParameter->EVSEMinimumVoltageLimit.Value); + printf("\tEVSECurrentRegulationTolerance=%d\n",resultPowerDiscovery.DC_EVSEChargeParameter->EVSECurrentRegulationTolerance.Value); + printf("\tEVSEPeakCurrentRipple=%d\n",resultPowerDiscovery.DC_EVSEChargeParameter->EVSEPeakCurrentRipple.Value); + printf("\tEVSEEnergyToBeDelivered=%d\n",resultPowerDiscovery.DC_EVSEChargeParameter->EVSEEnergyToBeDelivered.Value); + + /* show PMax schedule, if there one provided */ + printf("\tSAScheduleList: \n"); + + for(i=0; i< resultPowerDiscovery.SAScheduleList->arraylen.SAScheduleTuple;i++) + { + printf("\t\t Tuple#%d: \n",(i+1)); + printf("\t\t SAScheduleTupleID=%d: \n", resultPowerDiscovery.SAScheduleList->SAScheduleTuple[i].SAScheduleTupleID); + + for(j=0; j< resultPowerDiscovery.SAScheduleList->SAScheduleTuple[i].PMaxSchedule.arraylen.PMaxScheduleEntry;j++) + { + printf("\t\t\t Entry#%d: \n",(j+1)); + printf("\t\t\t\t PMax=%d (%d %d) \n",resultPowerDiscovery.SAScheduleList->SAScheduleTuple[i].PMaxSchedule.PMaxScheduleEntry[j].PMax.Value, resultPowerDiscovery.SAScheduleList->SAScheduleTuple[i].PMaxSchedule.PMaxScheduleEntry[j].PMax.Unit, resultPowerDiscovery.SAScheduleList->SAScheduleTuple[i].PMaxSchedule.PMaxScheduleEntry[j].PMax.Multiplier); + printf("\t\t\t\t Start=%d \n",resultPowerDiscovery.SAScheduleList->SAScheduleTuple[i].PMaxSchedule.PMaxScheduleEntry[j].RelativeTimeInterval.start); + if(resultPowerDiscovery.SAScheduleList->SAScheduleTuple[i].PMaxSchedule.PMaxScheduleEntry[j].RelativeTimeInterval.isused.duration) + printf("\t\t\t\t Duration=%d \n",resultPowerDiscovery.SAScheduleList->SAScheduleTuple[i].PMaxSchedule.PMaxScheduleEntry[j].RelativeTimeInterval.duration); + } + } + } + + + + /***************************** + * Setup data for cableCheck * + *****************************/ + + /* setup EVStatus */ + EVStatus.EVRESSSOC = 12; + EVStatus.EVReady = 1; + EVStatus.EVErrorCode = 1; + cableCheck.DC_EVStatus =EVStatus; + + + printf("\n\nEV side: prepare EVSE cableCheck\n"); + + /********************** + * Prepare cableCheck * + **********************/ + + if(prepare_cableCheck(&service,&v2gHeader,&cableCheck,&resultCableCheck)) + { + printErrorMessage(&service); + return 0; /* stop here */ + } + + printf("EV side: call EVSE cableCheck \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the cableCheck response message */ + if(resMsg==CABLECHECKRES) + { + /* show result of the answer message of EVSE sessionSetup*/ + printf("EV side: received response message from EVSE\n"); + printf("\t\t Header SessionID=%d\n",v2gHeader.SessionID.data[0]); + printf("\tResponseCode=%d\n",resultCableCheck.ResponseCode); + if(resultCableCheck.EVSEProcessing==Finished_EVSEProcessingType) + printf("\tEVSEProcessing=Finished\n"); + printDCEVSEStatus(&(resultCableCheck.DC_EVSEStatus)); + } + + + + + + + /***************************** + * Setup data for preCharge * + *****************************/ + + /* setup EVStatus */ + preCharge.DC_EVStatus =EVStatus; + + float_type.Unit = A_unitSymbolType; + float_type.Value = 100; + preCharge.EVTargetCurrent = float_type; + + float_type.Unit = V_unitSymbolType; + float_type.Value = 200; + preCharge.EVTargetVoltage = float_type; + + printf("\n\nEV side: prepare EVSE preCharge\n"); + + /********************** + * Prepare preCharge * + **********************/ + + if(prepare_preCharge(&service,&v2gHeader,&preCharge,&resultPreCharge)) + { + printErrorMessage(&service); + return 0; /* stop here */ + } + + printf("EV side: call EVSE preCharge \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the preCharge response message */ + if(resMsg==PRECHARGERES) + { + /* show result of the answer message of EVSE sessionSetup*/ + printf("EV side: received response message from EVSE\n"); + /* show result of the answer message of EVSE powerDiscovery*/ + printf("\tResponseCode=%d\n",resultPreCharge.ResponseCode); + printDCEVSEStatus(&resultPreCharge.DC_EVSEStatus); + printf("\tEVSEPresentVoltage=%d (%d %d)\n",resultPreCharge.EVSEPresentVoltage.Value, resultPreCharge.EVSEPresentVoltage.Unit, resultPreCharge.EVSEPresentVoltage.Multiplier); + } + + + + /********************************* + * Setup data for powerDelivery * + *********************************/ + + powerDelivery.ChargeProgress = 1; + + EVPowerDelivery.DC_EVStatus = EVStatus; + EVPowerDelivery.BulkChargingComplete = 0; + EVPowerDelivery.isused.BulkChargingComplete = 1; + EVPowerDelivery.ChargingComplete = 1; + + powerDelivery.DC_EVPowerDeliveryParameter = &EVPowerDelivery; + powerDelivery.isused.DC_EVPowerDeliveryParameter = 1; /* DC parameters are send */ + + powerDelivery.ChargeProgress = Start_chargeProgressType; + + + + /* we are using a charging profile */ + powerDelivery.isused.ChargingProfile=1; + + powerDelivery.SAScheduleTupleID = resultPowerDiscovery.SAScheduleList->SAScheduleTuple[0].SAScheduleTupleID; + + /* set up 3 entries */ + powerDelivery.ChargingProfile.ProfileEntry[0].ChargingProfileEntryMaxPower.Value=0; + powerDelivery.ChargingProfile.ProfileEntry[0].ChargingProfileEntryMaxPower.Unit=W_unitSymbolType; + powerDelivery.ChargingProfile.ProfileEntry[0].ChargingProfileEntryMaxPower.Multiplier=2; + powerDelivery.ChargingProfile.ProfileEntry[0].ChargingProfileEntryStart=0; + powerDelivery.ChargingProfile.ProfileEntry[0].ChargingProfileEntryMaxNumberOfPhasesInUse=1; + powerDelivery.ChargingProfile.ProfileEntry[0].isused.ChargingProfileEntryMaxNumberOfPhasesInUse=1; + powerDelivery.ChargingProfile.ProfileEntry[1].ChargingProfileEntryMaxPower.Value=20000; + powerDelivery.ChargingProfile.ProfileEntry[1].ChargingProfileEntryMaxPower.Unit = W_unitSymbolType; + powerDelivery.ChargingProfile.ProfileEntry[1].ChargingProfileEntryMaxPower.Multiplier = 1; + powerDelivery.ChargingProfile.ProfileEntry[1].ChargingProfileEntryMaxNumberOfPhasesInUse=3; + powerDelivery.ChargingProfile.ProfileEntry[1].isused.ChargingProfileEntryMaxNumberOfPhasesInUse=1; + powerDelivery.ChargingProfile.ProfileEntry[1].ChargingProfileEntryStart=300; /* 5min */ + powerDelivery.ChargingProfile.ProfileEntry[2].ChargingProfileEntryMaxPower.Value=0; + powerDelivery.ChargingProfile.ProfileEntry[2].ChargingProfileEntryStart=1200; /* 20min */ + powerDelivery.ChargingProfile.ProfileEntry[2].ChargingProfileEntryMaxNumberOfPhasesInUse=3; + powerDelivery.ChargingProfile.ProfileEntry[2].isused.ChargingProfileEntryMaxNumberOfPhasesInUse=1; + powerDelivery.ChargingProfile.arraylen.ProfileEntry=3; + + + + resultPowerDelivery.DC_EVSEStatus = &evseStatus; /* we expect the DC-based EVSE status */ + + printf("\n\nEV side: prepare EVSE powerDelivery\n"); + + + /************************** + * Prepare powerDelivery * + **************************/ + + if(prepare_powerDelivery(&service,&v2gHeader,&powerDelivery,&resultPowerDelivery)) + { + printErrorMessage(&service); + return 0; /* stop here */ + } + + printf("EV side: call EVSE powerDelivery \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the powerDelivery response message */ + if(resMsg==POWERDELIVERYRES) + { + /* show result of the answer message of EVSE sessionSetup*/ + printf("\nEV side: received response message from EVSE\n"); + /* show result of the answer message of EVSE powerDiscovery*/ + printf("\tResponseCode=%d\n",resultPowerDelivery.ResponseCode); + printDCEVSEStatus(resultPowerDelivery.DC_EVSEStatus); + } + + + + + + + /********************************* + * Setup data for currentDemand * + *********************************/ + + currentDemand.DC_EVStatus = EVStatus; + + float_type.Unit = A_unitSymbolType; + float_type.Value = 100; + + currentDemand.EVTargetCurrent = float_type; + + float_type.Unit = V_unitSymbolType; + float_type.Value = 420; + + currentDemand.EVMaximumVoltageLimit = float_type; + currentDemand.isused.EVMaximumVoltageLimit = 1; + + float_type.Unit = W_unitSymbolType; + float_type.Value = 20000; + + currentDemand.EVMaximumPowerLimit = float_type; + currentDemand.isused.EVMaximumPowerLimit = 1; + + float_type.Unit = A_unitSymbolType; + float_type.Value = 60; + + currentDemand.EVMaximumCurrentLimit = float_type; + currentDemand.isused.EVMaximumCurrentLimit = 1; + + currentDemand.BulkChargingComplete = 0; + currentDemand.isused.BulkChargingComplete = 1; + + currentDemand.ChargingComplete = 1; + + float_type.Unit = s_unitSymbolType; + float_type.Value = 300; /* 5 min*/ + + currentDemand.RemainingTimeToFullSoC = float_type; + currentDemand.isused.RemainingTimeToFullSoC = 1; + + float_type.Unit = s_unitSymbolType; + float_type.Value = 120; /* 3 min */ + + currentDemand.RemainingTimeToBulkSoC = float_type; + currentDemand.isused.RemainingTimeToBulkSoC = 1; + + + float_type.Unit = V_unitSymbolType; + float_type.Value = 400; + + currentDemand.EVTargetVoltage = float_type; + + + printf("\n\nEV side: prepare EVSE currentDemand\n"); + + /************************** + * Prepare currentDemand * + **************************/ + + if(prepare_currentDemand(&service,&v2gHeader,¤tDemand,&resultCurrentDemand)) + { + printErrorMessage(&service); + return 0; /* stop here */ + } + + printf("EV side: call EVSE currentDemand \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the sessionSetup response message */ + if(resMsg==CURRENTDEMANDRES) + { + /* show result of the answer message of EVSE sessionSetup*/ + printf("\nEV side: received response message from EVSE\n"); + /* show result of the answer message of EVSE powerDiscovery*/ + printf("\tResponseCode=%d\n",resultCurrentDemand.ResponseCode); + printDCEVSEStatus(&resultCurrentDemand.DC_EVSEStatus); + printf("\t EVSEPresentVoltage=%d\n",resultCurrentDemand.EVSEPresentVoltage.Value); + printf("\t EVSEPresentCurrent=%d\n",resultCurrentDemand.EVSEPresentCurrent.Value); + printf("\t EVSECurrentLimitAchieved=%d\n",resultCurrentDemand.EVSECurrentLimitAchieved); + printf("\t EVSEVoltageLimitAchieved=%d\n",resultCurrentDemand.EVSEVoltageLimitAchieved); + + printf("\t EVSEPowerLimitAchieved=%d\n",resultCurrentDemand.EVSEPowerLimitAchieved); + printf("\t EVSEMaximumVoltageLimit=%d\n",resultCurrentDemand.EVSEMaximumVoltageLimit.Value); + printf("\t EVSEMaximumCurrentLimit=%d (%d %d) \n",resultCurrentDemand.EVSEMaximumCurrentLimit.Value, resultCurrentDemand.EVSEMaximumCurrentLimit.Unit, resultCurrentDemand.EVSEMaximumCurrentLimit.Multiplier); + printf("\t EVSEMaximumPowerLimit=%d\n",resultCurrentDemand.EVSEMaximumPowerLimit.Value); + + printf("\tReceiptRequired=%d\n",resultCurrentDemand.ReceiptRequired); + printf("\tEVSEID=%d\n",resultCurrentDemand.EVSEID.data[0]); + printf("\tisused.MeterInfo=%d\n", resultCurrentDemand.isused.MeterInfo); + printf("\t\tMeterInfo.MeterID=%d\n", resultCurrentDemand.MeterInfo.MeterID.data[0]); + printf("\t\tMeterInfo.MeterReading.Value=%d\n", resultCurrentDemand.MeterInfo.MeterReading); + printf("\t\tMeterInfo.MeterStatus=%d\n", resultCurrentDemand.MeterInfo.MeterStatus); + printf("\t\tMeterInfo.TMeter=%d\n", resultCurrentDemand.MeterInfo.TMeter); + } + + + + + + /*********************************** + * Setup data for weldingDetection * + ***********************************/ + + EVStatus.EVRESSSOC=100; + weldingDetection.DC_EVStatus =EVStatus; + + + + printf("\n\nEV side: prepare EVSE weldingDetection\n"); + + /************************** + * Prepare weldingDetection * + **************************/ + + if(prepare_weldingDetection(&service,&v2gHeader,&weldingDetection,&resultWeldingDetection)) + { + printErrorMessage(&service); + return 0; /* stop here */ + } + + printf("EV side: call EVSE weldingDetection \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the sessionSetup response message */ + if(resMsg==WELDINGDETECTIONRES) + { + /* show result of the answer message of EVSE sessionSetup*/ + printf("EV side: received response message from EVSE\n"); + /* show result of the answer message of EVSE powerDiscovery*/ + printf("\tResponseCode=%d\n",resultWeldingDetection.ResponseCode); + printDCEVSEStatus(&resultWeldingDetection.DC_EVSEStatus); + printf("\tEVSEPresentVoltage=%d (%d %d)\n",resultWeldingDetection.EVSEPresentVoltage.Value,resultWeldingDetection.EVSEPresentVoltage.Unit ,resultWeldingDetection.EVSEPresentVoltage.Multiplier); + } + + + + + + + /*********************************** + * Setup data for stopSession * + ***********************************/ + + printf("\n\nEV side: prepare EVSE stopSession\n"); + + /************************ + * Prepare stopSession * + ************************/ + + sessionStop.ChargingSession = 0; + + if(prepare_sessionStop(&service,&v2gHeader,&sessionStop, &resultSessionStop)) + { + printErrorMessage(&service); + return 0; /* stop here */ + } + + printf("EV side: call EVSE stopSession \n"); + + /* Use here your sending / receiving mechanism to / from the EVSE. The following serviceDataTransmitter method + * is only an exemplary implementation which also shows how to add the V2GTP header information to + * the output stream. + * */ + + serviceDataTransmitter(outStream, outPayloadLength, inStream); + + /* this methods deserialize the response EXI stream and determines the kind of + * the response message */ + if(determineResponseMessage(&service, &resMsg)) + { + printErrorMessage(&service); + } + + /* check, if this is the sessionSetup response message */ + if(resMsg==SESSIONSTOPRES) + { + /* show result of the answer message of EVSE sessionSetup*/ + printf("EV side: received response message from EVSE\n"); + /* show result of the answer message of EVSE powerDiscovery*/ + printf("\tResponseCode=%d\n",resultSessionStop.ResponseCode); + } + + + return 0; +} + + + +int main_service(argc, argv) +{ + printf("+++ Start application handshake protocol example +++\n\n"); + + appHandshake(); + + printf("+++ Terminate application handshake protocol example +++\n\n"); + + printf("\n\nPlease press enter for AC charging!\n"); + fflush(stdout); + getchar(); + printf("+++ Start V2G client / service example for AC charging +++\n\n"); + + ac_charging(); + + printf("\n+++Terminate V2G Client / Service example for AC charging +++\n"); + printf("Please press enter for DC charging!\n"); + fflush(stdout); + getchar(); + + printf("+++ Start V2G client / service example for DC charging +++\n\n"); + + dc_charging(); + + printf("\n+++Terminate V2G client / service example for DC charging +++"); + + return 0; +} + +static void printACEVSEStatus(struct AC_EVSEStatusType* status) +{ + printf("\tEVSEStatus:\n"); + printf("\t\tRCD=%d\n",status->RCD); + printf("\t\tEVSENotification=%d\n",status->EVSENotification); + printf("\t\tNotificationMaxDelay=%d\n",status->NotificationMaxDelay); +} + +static void printDCEVSEStatus(struct DC_EVSEStatusType* status) +{ + if(status->isused.EVSEIsolationStatus) + printf("\tEVSEStatus:\n\t\tEVSEIsolationStatus=%d\n",status->EVSEIsolationStatus); + + printf("\t\tEVSEStatusCode=%d\n",status->EVSEStatusCode); + + if(status->EVSENotification==None_EVSENotificationType) + printf("\t\tEVSENotification=None_EVSENotificationType\n"); + + printf("\t\tNotificationMaxDelay=%d\n",status->NotificationMaxDelay); + +} + +static void printErrorMessage(struct EXIService* service) +{ + + if(service->errorCode==EXI_NON_VALID_MESSAGE) + { + printf("EV did not send a valid V2G message!\n"); + } + else if(service->errorCode==EXI_SERIALIZATION_FAILED) + { + printf("Error: Could not serialize the response message\n"); + } + else if(service->errorCode==EXI_DESERIALIZATION_FAILED) + { + printf("Error: Could not deserialize the response message\n"); + } + else if(service->errorCode==EXI_VALUE_RANGE_FAILED) + { + printf("Error: Could not deserialize the response message because of VALUE_RANGE\n"); + } + else if(service->errorCode==EXI_UNKNOWN_ERROR) + { + printf("Error: Could not deserialize the response message because of VALUE_RANGE\n"); + } + +} + +static void printASCIIString(uint32_t* string, uint32_t len) { + unsigned int i; + for(i=0; i. + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#include "v2g_serviceClientDataTransmitter.h" +#include "evse_server.h" +#include "v2gtp.h" + + + + +/* + * Send EXI stream (outStream) to EVSE and receive a response stream (inStream)*/ +int serviceDataTransmitter(uint8_t* outStream, uint16_t outStreamLength, uint8_t* inStream) +{ + /* send output stream to the underlying network to the EVSE and wait for response + * --> here provide data to the V2G server directly*/ + uint16_t inStreamLength = 0; + uint16_t payloadLength = 0; + + /* setup v2gtp header information; outStreamLength==payloadLength*/ + write_v2gtpHeader(outStream,&outStreamLength,V2GTP_EXI_TYPE); + + /* send data to EVSE server (add v2g offset)*/ + testV2GService(outStream, outStreamLength, inStream, &inStreamLength); + + read_v2gtpHeader(inStream,inStreamLength, &payloadLength); + + + + + return 0; +} diff --git a/src/transport/v2gtp.c b/src/transport/v2gtp.c new file mode 100644 index 0000000..32e0a43 --- /dev/null +++ b/src/transport/v2gtp.c @@ -0,0 +1,97 @@ + +/* + * 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +/* + * This file implements the v2gtp header writer and reader. + * + */ + +#include +#include +#include +#include +#include +#include + +#include "v2gtp.h" + + +int write_v2gtpHeader(uint8_t* outStream, uint16_t* outStreamLength, uint16_t payloadType) +{ + + /* write v2gtp version number 1=byte */ + outStream[0]=V2GTP_VERSION; + + /* write inverse v2gtp version */ + outStream[1]=V2GTP_VERSION_INV; + + + /* write payload type */ + outStream[3] = (uint8_t)(payloadType & 0xFF); + outStream[2] = (uint8_t)(payloadType >> 8 & 0xFF); + + /* write payload length */ + outStream[7] = (uint8_t)(*outStreamLength & 0xFF); + outStream[6] = (uint8_t)(*outStreamLength>>8 & 0xFF); + outStream[5] = (uint8_t)(*outStreamLength>>16 & 0xFF); + outStream[4] = (uint8_t)(*outStreamLength>>24 & 0xFF); + + /* here, the outStream length have to be resized by the v2gtp offset*/ + *outStreamLength += V2GTP_HEADER_LENGTH; + + return 0; +} + +int read_v2gtpHeader(uint8_t* inStream, uint16_t inStreamLength, uint16_t* payloadLength) +{ + uint16_t payloadType=0; + + + /* check, if we support this v2gtp version */ + if(inStream[0]!=V2GTP_VERSION || inStream[1]!=V2GTP_VERSION_INV) + return -1; + + + /* check, if we support this payload type*/ + payloadType = inStream[2]; + payloadType = (payloadType << 8 | inStream[3]); + + if(payloadType != V2GTP_EXI_TYPE) + return -1; + + + /* determine payload length*/ + *payloadLength = inStream[4]; + *payloadLength = (*payloadLength << 8 | inStream[5]); + *payloadLength = (*payloadLength << 8 | inStream[6]); + *payloadLength = (*payloadLength << 8 | inStream[7]); + + if((*payloadLength+V2GTP_HEADER_LENGTH)!=inStreamLength) + return -1; + + return 0; +} + diff --git a/src/transport/v2gtp.h b/src/transport/v2gtp.h new file mode 100644 index 0000000..c82347f --- /dev/null +++ b/src/transport/v2gtp.h @@ -0,0 +1,54 @@ + +/* + * Copyright (C) 2007-2011 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 . + */ + +/******************************************************************* + * + * @author Sebastian.Kaebisch@siemens.com + * @version 0.8 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef V2GTP_H_ +#define V2GTP_H_ + +#include + +/* generic V2GTP header length */ +#define V2GTP_HEADER_LENGTH 8 + +/* define V2GTP Version */ +#define V2GTP_VERSION 0x01 +#define V2GTP_VERSION_INV 0xFE + +/* define V2GTP payload types*/ +#define V2GTP_EXI_TYPE 0x8001 + +int write_v2gtpHeader(uint8_t* outStream, uint16_t* outStreamLength, uint16_t payloadType); + +int read_v2gtpHeader(uint8_t* inStream, uint16_t inStreamLength, uint16_t* payloadLength); + +#endif /* V2GTP_H_ */ + +#ifdef __cplusplus +} +#endif