From 1b28ce953120279102550b2fa5a5e091ae869bc3 Mon Sep 17 00:00:00 2001 From: daniel_peintner Date: Thu, 19 Jun 2014 11:00:27 +0000 Subject: [PATCH] * get ready for release 0.9 --- .cproject | 416 +- Debug/makefile | 2 - Debug/sources.mk | 2 - Debug/src/appHandshake/subdir.mk | 20 +- Debug/src/codec/appHandCodec/subdir.mk | 36 - Debug/src/codec/subdir.mk | 38 +- Debug/src/service/subdir.mk | 33 - Debug/src/test/subdir.mk | 20 +- Debug/src/transport/subdir.mk | 2 +- README.txt | 19 +- Release/makefile | 2 - Release/sources.mk | 2 - Release/src/appHandshake/subdir.mk | 20 +- Release/src/codec/appHandCodec/subdir.mk | 36 - Release/src/codec/subdir.mk | 38 +- Release/src/service/subdir.mk | 33 - Release/src/test/subdir.mk | 20 +- Release/src/transport/subdir.mk | 2 +- src/appHandshake/appHandEXIDatatypes.c | 64 + src/appHandshake/appHandEXIDatatypes.h | 130 + src/appHandshake/appHandEXIDatatypesDecoder.c | 898 + .../appHandEXIDatatypesDecoder.h} | 51 +- src/appHandshake/appHandEXIDatatypesEncoder.c | 671 + .../appHandEXIDatatypesEncoder.h} | 52 +- .../appHand_dataDeserialization.c | 341 - src/appHandshake/appHand_dataSerialization.c | 424 - src/appHandshake/appHand_dataTypes.c | 57 - src/appHandshake/appHand_dataTypes.h | 133 - src/appHandshake/appHand_service.h | 94 - src/codec/AbstractDecoderChannel.c | 1363 +- src/codec/AbstractEncoderChannel.c | 1145 +- src/codec/BitDecoderChannel.c | 105 +- src/codec/BitEncoderChannel.c | 135 +- src/codec/BitInputStream.c | 161 +- src/codec/BitInputStream.h | 86 +- src/codec/BitOutputStream.c | 199 +- src/codec/BitOutputStream.h | 121 +- src/codec/ByteDecoderChannel.c | 137 +- src/codec/ByteEncoderChannel.c | 237 +- src/codec/ByteStream.c | 13 +- src/codec/ByteStream.h | 29 +- src/codec/DecoderChannel.h | 695 +- src/codec/DynamicMemory.c | 101 - src/codec/DynamicMemory.h | 101 - src/codec/EXIConfig.h | 50 +- src/codec/EXIHeaderDecoder.c | 40 +- src/codec/EXIHeaderDecoder.h | 26 +- src/codec/EXIHeaderEncoder.c | 36 +- src/codec/EXIHeaderEncoder.h | 26 +- src/codec/EXIOptions.h | 139 +- src/codec/EXITypes.h | 1099 +- src/codec/EncoderChannel.h | 660 +- src/codec/ErrorCodes.h | 187 +- src/codec/MethodsBag.c | 185 +- src/codec/MethodsBag.h | 90 +- src/codec/StringNameTable.c | 118 - src/codec/StringNameTable.h | 119 - src/codec/StringValueTable.c | 372 +- src/codec/StringValueTable.h | 189 +- src/codec/UCSString.c | 95 - src/codec/UCSString.h | 78 - src/codec/appHandCodec/appHandEXICoder.c | 722 - src/codec/appHandCodec/appHandEXICoder.h | 74 - src/codec/appHandCodec/appHandEXIDecoder.c | 1746 -- src/codec/appHandCodec/appHandEXIDecoder.h | 225 - src/codec/appHandCodec/appHandEXIEncoder.c | 1425 -- src/codec/appHandCodec/appHandEXIEncoder.h | 274 - .../appHandCodec/appHandNameTableEntries.c | 101 - src/codec/appHandCodec/appHandQNameDefines.h | 54 - src/codec/appHandCodec/appHandQNames.c | 227 - src/codec/appHandCodec/appHandQNames.h | 77 - src/codec/main_codec.c | 604 - src/codec/v2gEXICoder.c | 3167 ---- src/codec/v2gEXICoder.h | 74 - src/codec/v2gEXIDatatypes.c | 634 + src/codec/v2gEXIDatatypes.h | 2225 +++ src/codec/v2gEXIDatatypesDecoder.c | 15598 +++++++++++++++ ...oderChannel.h => v2gEXIDatatypesDecoder.h} | 62 +- src/codec/v2gEXIDatatypesEncoder.c | 11183 +++++++++++ .../v2gEXIDatatypesEncoder.h} | 58 +- src/codec/v2gEXIDecoder.c | 15616 ---------------- src/codec/v2gEXIDecoder.h | 225 - src/codec/v2gEXIEncoder.c | 13891 -------------- src/codec/v2gEXIEncoder.h | 274 - src/codec/v2gNameTableEntries.c | 204 - src/codec/v2gQNameDefines.h | 54 - src/codec/v2gQNames.c | 989 - src/codec/v2gQNames.h | 77 - src/service/v2g_dataTypes.c | 692 - src/service/v2g_dataTypes.h | 1681 -- src/service/v2g_service.h | 83 - src/service/v2g_serviceClientStubs.c | 3571 ---- src/service/v2g_serviceClientStubs.h | 322 - src/service/v2g_serviceDataSerialization.c | 7504 -------- src/service/v2g_serviceDispatcher.c | 2536 --- src/service/v2g_serviceDispatcher.h | 63 - src/service/v2g_serviceMethods.h | 186 - src/test/evse_server.c | 192 - src/test/evse_server.h | 33 - src/test/evse_serviceMethods.c | 843 - src/test/main.c | 12 +- src/test/main.h | 11 +- src/test/main_databinder.c | 149 + src/test/main_example.c | 2365 +++ src/test/pev_service.c | 1885 -- src/test/serviceClientDataTransmitter.c | 54 - src/transport/v2gtp.c | 21 +- src/transport/v2gtp.h | 6 +- 108 files changed, 38218 insertions(+), 65644 deletions(-) delete mode 100644 Debug/src/codec/appHandCodec/subdir.mk delete mode 100644 Debug/src/service/subdir.mk delete mode 100644 Release/src/codec/appHandCodec/subdir.mk delete mode 100644 Release/src/service/subdir.mk create mode 100644 src/appHandshake/appHandEXIDatatypes.c create mode 100644 src/appHandshake/appHandEXIDatatypes.h create mode 100644 src/appHandshake/appHandEXIDatatypesDecoder.c rename src/{codec/appHandCodec/appHandNameTableEntries.h => appHandshake/appHandEXIDatatypesDecoder.h} (63%) create mode 100644 src/appHandshake/appHandEXIDatatypesEncoder.c rename src/{codec/v2gNameTableEntries.h => appHandshake/appHandEXIDatatypesEncoder.h} (63%) delete mode 100644 src/appHandshake/appHand_dataDeserialization.c delete mode 100644 src/appHandshake/appHand_dataSerialization.c delete mode 100644 src/appHandshake/appHand_dataTypes.c delete mode 100644 src/appHandshake/appHand_dataTypes.h delete mode 100644 src/appHandshake/appHand_service.h delete mode 100644 src/codec/DynamicMemory.c delete mode 100644 src/codec/DynamicMemory.h delete mode 100644 src/codec/StringNameTable.c delete mode 100644 src/codec/StringNameTable.h delete mode 100644 src/codec/UCSString.c delete mode 100644 src/codec/UCSString.h delete mode 100644 src/codec/appHandCodec/appHandEXICoder.c delete mode 100644 src/codec/appHandCodec/appHandEXICoder.h delete mode 100644 src/codec/appHandCodec/appHandEXIDecoder.c delete mode 100644 src/codec/appHandCodec/appHandEXIDecoder.h delete mode 100644 src/codec/appHandCodec/appHandEXIEncoder.c delete mode 100644 src/codec/appHandCodec/appHandEXIEncoder.h delete mode 100644 src/codec/appHandCodec/appHandNameTableEntries.c delete mode 100644 src/codec/appHandCodec/appHandQNameDefines.h delete mode 100644 src/codec/appHandCodec/appHandQNames.c delete mode 100644 src/codec/appHandCodec/appHandQNames.h delete mode 100644 src/codec/main_codec.c delete mode 100644 src/codec/v2gEXICoder.c delete mode 100644 src/codec/v2gEXICoder.h create mode 100644 src/codec/v2gEXIDatatypes.c create mode 100644 src/codec/v2gEXIDatatypes.h create mode 100644 src/codec/v2gEXIDatatypesDecoder.c rename src/codec/{CoderChannel.h => v2gEXIDatatypesDecoder.h} (69%) create mode 100644 src/codec/v2gEXIDatatypesEncoder.c rename src/{service/v2g_serviceClientDataTransmitter.h => codec/v2gEXIDatatypesEncoder.h} (65%) delete mode 100644 src/codec/v2gEXIDecoder.c delete mode 100644 src/codec/v2gEXIDecoder.h delete mode 100644 src/codec/v2gEXIEncoder.c delete mode 100644 src/codec/v2gEXIEncoder.h delete mode 100644 src/codec/v2gNameTableEntries.c delete mode 100644 src/codec/v2gQNameDefines.h delete mode 100644 src/codec/v2gQNames.c delete mode 100644 src/codec/v2gQNames.h delete mode 100644 src/service/v2g_dataTypes.c delete mode 100644 src/service/v2g_dataTypes.h delete mode 100644 src/service/v2g_service.h delete mode 100644 src/service/v2g_serviceClientStubs.c delete mode 100644 src/service/v2g_serviceClientStubs.h delete mode 100644 src/service/v2g_serviceDataSerialization.c delete mode 100644 src/service/v2g_serviceDispatcher.c delete mode 100644 src/service/v2g_serviceDispatcher.h delete mode 100644 src/service/v2g_serviceMethods.h delete mode 100644 src/test/evse_server.c delete mode 100644 src/test/evse_server.h delete mode 100644 src/test/evse_serviceMethods.c create mode 100644 src/test/main_databinder.c create mode 100644 src/test/main_example.c delete mode 100644 src/test/pev_service.c delete mode 100644 src/test/serviceClientDataTransmitter.c diff --git a/.cproject b/.cproject index c4e547e..26bab37 100644 --- a/.cproject +++ b/.cproject @@ -5,12 +5,12 @@ + - @@ -18,7 +18,7 @@ - + @@ -30,10 +30,8 @@ @@ -66,12 +64,12 @@ + - @@ -91,18 +89,16 @@ - @@ -126,6 +122,28 @@ + + + + + + + + + + + + + make + + OpenV2G.exe + true + true + true + + + + @@ -178,38 +196,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -260,119 +248,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -426,33 +301,162 @@ - + + + + - + - + - - + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -509,36 +513,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -592,58 +566,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - make - - OpenV2G.exe - true - true - true - - - - diff --git a/Debug/makefile b/Debug/makefile index 603c936..0bf1407 100644 --- a/Debug/makefile +++ b/Debug/makefile @@ -10,8 +10,6 @@ RM := rm -rf -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 diff --git a/Debug/sources.mk b/Debug/sources.mk index a421293..0949c99 100644 --- a/Debug/sources.mk +++ b/Debug/sources.mk @@ -15,8 +15,6 @@ EXECUTABLES := 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 index bf009d1..3c246bc 100644 --- a/Debug/src/appHandshake/subdir.mk +++ b/Debug/src/appHandshake/subdir.mk @@ -4,26 +4,26 @@ # 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 +../src/appHandshake/appHandEXIDatatypes.c \ +../src/appHandshake/appHandEXIDatatypesDecoder.c \ +../src/appHandshake/appHandEXIDatatypesEncoder.c OBJS += \ -./src/appHandshake/appHand_dataDeserialization.o \ -./src/appHandshake/appHand_dataSerialization.o \ -./src/appHandshake/appHand_dataTypes.o +./src/appHandshake/appHandEXIDatatypes.o \ +./src/appHandshake/appHandEXIDatatypesDecoder.o \ +./src/appHandshake/appHandEXIDatatypesEncoder.o C_DEPS += \ -./src/appHandshake/appHand_dataDeserialization.d \ -./src/appHandshake/appHand_dataSerialization.d \ -./src/appHandshake/appHand_dataTypes.d +./src/appHandshake/appHandEXIDatatypes.d \ +./src/appHandshake/appHandEXIDatatypesDecoder.d \ +./src/appHandshake/appHandEXIDatatypesEncoder.d # Each subdirectory must supply rules for building sources it contributes src/appHandshake/%.o: ../src/appHandshake/%.c @echo 'Building file: $<' @echo 'Invoking: GCC C Compiler' - gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + gcc -I"../src/codec" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -pedantic -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 deleted file mode 100644 index 099d60f..0000000 --- a/Debug/src/codec/appHandCodec/subdir.mk +++ /dev/null @@ -1,36 +0,0 @@ -################################################################################ -# 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 index 8a0fb43..f340e4a 100644 --- a/Debug/src/codec/subdir.mk +++ b/Debug/src/codec/subdir.mk @@ -13,19 +13,13 @@ C_SRCS += \ ../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 +../src/codec/v2gEXIDatatypes.c \ +../src/codec/v2gEXIDatatypesDecoder.c \ +../src/codec/v2gEXIDatatypesEncoder.c OBJS += \ ./src/codec/AbstractDecoderChannel.o \ @@ -37,19 +31,13 @@ OBJS += \ ./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 +./src/codec/v2gEXIDatatypes.o \ +./src/codec/v2gEXIDatatypesDecoder.o \ +./src/codec/v2gEXIDatatypesEncoder.o C_DEPS += \ ./src/codec/AbstractDecoderChannel.d \ @@ -61,26 +49,20 @@ C_DEPS += \ ./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 +./src/codec/v2gEXIDatatypes.d \ +./src/codec/v2gEXIDatatypesDecoder.d \ +./src/codec/v2gEXIDatatypesEncoder.d # Each subdirectory must supply rules for building sources it contributes src/codec/%.o: ../src/codec/%.c @echo 'Building file: $<' @echo 'Invoking: GCC C Compiler' - gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + gcc -I"../src/codec" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -pedantic -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 deleted file mode 100644 index e1ea602..0000000 --- a/Debug/src/service/subdir.mk +++ /dev/null @@ -1,33 +0,0 @@ -################################################################################ -# 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 index a728b65..1678fd3 100644 --- a/Debug/src/test/subdir.mk +++ b/Debug/src/test/subdir.mk @@ -4,32 +4,26 @@ # 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 +../src/test/main_databinder.c \ +../src/test/main_example.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 +./src/test/main_databinder.o \ +./src/test/main_example.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 +./src/test/main_databinder.d \ +./src/test/main_example.d # Each subdirectory must supply rules for building sources it contributes src/test/%.o: ../src/test/%.c @echo 'Building file: $<' @echo 'Invoking: GCC C Compiler' - gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + gcc -I"../src/codec" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -pedantic -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 index 9020937..e84bf32 100644 --- a/Debug/src/transport/subdir.mk +++ b/Debug/src/transport/subdir.mk @@ -17,7 +17,7 @@ C_DEPS += \ src/transport/%.o: ../src/transport/%.c @echo 'Building file: $<' @echo 'Invoking: GCC C Compiler' - gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + gcc -I"../src/codec" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -pedantic -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" @echo 'Finished building: $<' @echo ' ' diff --git a/README.txt b/README.txt index da07eb0..7ce842c 100644 --- a/README.txt +++ b/README.txt @@ -1,12 +1,11 @@ ------------------------------------------------------------------------- OpenV2G - an open source project implementing the basic functionality of the ISO IEC 15118 vehicle to grid (V2G) communication interface -Version 0.8, released January, 2014 +Version 0.9, released June 19, 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 @@ -22,6 +21,22 @@ 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.8: +------------------------------------------------------------------------- +* large code footprint reduction which resulted in a new API + (please take a look at the example in src/test folder) +* datatype differences w.r.t. arrays, strings, bytes, isUsed, and enum-naming +* bug-fixes +* Note: OpenV2G 0.8 and 0.9 are interoperable, meaning that one can generate + streams with one and decode with the other or vice-versa + +------------------------------------------------------------------------- +CHANGES from version 0.7: +------------------------------------------------------------------------- +* adaption of V2G schema changes (reflects the ISO/IEC 15118-2 FDIS status) +* bug-fixes + ------------------------------------------------------------------------- CHANGES from version 0.7: diff --git a/Release/makefile b/Release/makefile index 603c936..0bf1407 100644 --- a/Release/makefile +++ b/Release/makefile @@ -10,8 +10,6 @@ RM := rm -rf -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 diff --git a/Release/sources.mk b/Release/sources.mk index a421293..0949c99 100644 --- a/Release/sources.mk +++ b/Release/sources.mk @@ -15,8 +15,6 @@ EXECUTABLES := 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 index 5f29040..56f286e 100644 --- a/Release/src/appHandshake/subdir.mk +++ b/Release/src/appHandshake/subdir.mk @@ -4,26 +4,26 @@ # 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 +../src/appHandshake/appHandEXIDatatypes.c \ +../src/appHandshake/appHandEXIDatatypesDecoder.c \ +../src/appHandshake/appHandEXIDatatypesEncoder.c OBJS += \ -./src/appHandshake/appHand_dataDeserialization.o \ -./src/appHandshake/appHand_dataSerialization.o \ -./src/appHandshake/appHand_dataTypes.o +./src/appHandshake/appHandEXIDatatypes.o \ +./src/appHandshake/appHandEXIDatatypesDecoder.o \ +./src/appHandshake/appHandEXIDatatypesEncoder.o C_DEPS += \ -./src/appHandshake/appHand_dataDeserialization.d \ -./src/appHandshake/appHand_dataSerialization.d \ -./src/appHandshake/appHand_dataTypes.d +./src/appHandshake/appHandEXIDatatypes.d \ +./src/appHandshake/appHandEXIDatatypesDecoder.d \ +./src/appHandshake/appHandEXIDatatypesEncoder.d # Each subdirectory must supply rules for building sources it contributes src/appHandshake/%.o: ../src/appHandshake/%.c @echo 'Building file: $<' @echo 'Invoking: GCC C Compiler' - gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O3 -Os -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + gcc -I"../src/codec" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -pedantic -Wall -c -fmessage-length=0 -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 deleted file mode 100644 index 7a75832..0000000 --- a/Release/src/codec/appHandCodec/subdir.mk +++ /dev/null @@ -1,36 +0,0 @@ -################################################################################ -# 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 index afd8396..fd21a4f 100644 --- a/Release/src/codec/subdir.mk +++ b/Release/src/codec/subdir.mk @@ -13,19 +13,13 @@ C_SRCS += \ ../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 +../src/codec/v2gEXIDatatypes.c \ +../src/codec/v2gEXIDatatypesDecoder.c \ +../src/codec/v2gEXIDatatypesEncoder.c OBJS += \ ./src/codec/AbstractDecoderChannel.o \ @@ -37,19 +31,13 @@ OBJS += \ ./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 +./src/codec/v2gEXIDatatypes.o \ +./src/codec/v2gEXIDatatypesDecoder.o \ +./src/codec/v2gEXIDatatypesEncoder.o C_DEPS += \ ./src/codec/AbstractDecoderChannel.d \ @@ -61,26 +49,20 @@ C_DEPS += \ ./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 +./src/codec/v2gEXIDatatypes.d \ +./src/codec/v2gEXIDatatypesDecoder.d \ +./src/codec/v2gEXIDatatypesEncoder.d # Each subdirectory must supply rules for building sources it contributes src/codec/%.o: ../src/codec/%.c @echo 'Building file: $<' @echo 'Invoking: GCC C Compiler' - gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O3 -Os -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + gcc -I"../src/codec" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -pedantic -Wall -c -fmessage-length=0 -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 deleted file mode 100644 index 5c0d511..0000000 --- a/Release/src/service/subdir.mk +++ /dev/null @@ -1,33 +0,0 @@ -################################################################################ -# 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 index e1670e4..2357319 100644 --- a/Release/src/test/subdir.mk +++ b/Release/src/test/subdir.mk @@ -4,32 +4,26 @@ # 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 +../src/test/main_databinder.c \ +../src/test/main_example.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 +./src/test/main_databinder.o \ +./src/test/main_example.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 +./src/test/main_databinder.d \ +./src/test/main_example.d # Each subdirectory must supply rules for building sources it contributes src/test/%.o: ../src/test/%.c @echo 'Building file: $<' @echo 'Invoking: GCC C Compiler' - gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O3 -Os -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + gcc -I"../src/codec" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -pedantic -Wall -c -fmessage-length=0 -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 index 3121876..b675f6f 100644 --- a/Release/src/transport/subdir.mk +++ b/Release/src/transport/subdir.mk @@ -17,7 +17,7 @@ C_DEPS += \ src/transport/%.o: ../src/transport/%.c @echo 'Building file: $<' @echo 'Invoking: GCC C Compiler' - gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O3 -Os -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + gcc -I"../src/codec" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -pedantic -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" @echo 'Finished building: $<' @echo ' ' diff --git a/src/appHandshake/appHandEXIDatatypes.c b/src/appHandshake/appHandEXIDatatypes.c new file mode 100644 index 0000000..d7bc658 --- /dev/null +++ b/src/appHandshake/appHandEXIDatatypes.c @@ -0,0 +1,64 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.9 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer

+ *

Schema: V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +#include + +#include "appHandEXIDatatypes.h" +#include "EXITypes.h" + + +#ifndef EXI_appHand_DATATYPES_C +#define EXI_appHand_DATATYPES_C + + + +void init_appHandEXIDocument(struct appHandEXIDocument* exiDoc) { + exiDoc->supportedAppProtocolReq_isUsed = 0u; + exiDoc->supportedAppProtocolRes_isUsed = 0u; +} + +void init_appHandAppProtocolType(struct appHandAppProtocolType* appHandAppProtocolType) { +} + +void init_appHandAnonType_supportedAppProtocolReq(struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) { + appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen = 0u; +} + +void init_appHandAnonType_supportedAppProtocolRes(struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) { + appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed = 0u; +} + + + + + +#endif + diff --git a/src/appHandshake/appHandEXIDatatypes.h b/src/appHandshake/appHandEXIDatatypes.h new file mode 100644 index 0000000..fe054c8 --- /dev/null +++ b/src/appHandshake/appHandEXIDatatypes.h @@ -0,0 +1,130 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.9 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer

+ *

Schema: V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + +/** + * \file EXIDatatypes.h + * \brief Datatype definitions and structs for given XML Schema definitions and initialization methods + * + */ + +#ifndef EXI_appHand_DATATYPES_H +#define EXI_appHand_DATATYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#include + +#include "EXITypes.h" + + +/* Datatype definitions and structs for given XML Schema definitions */ + +typedef enum { + responseCodeType_OK_SuccessfulNegotiation = 0, + responseCodeType_OK_SuccessfulNegotiationWithMinorDeviation = 1, + responseCodeType_Failed_NoNegotiation = 2 +} appHandresponseCodeType; + +/* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)', derivedBy='RESTRICTION'. */ +#define appHandAppProtocolType_ProtocolNamespace_CHARACTERS_SIZE 100 /* XML schema facet maxLength for urn:iso:15118:2:2010:AppProtocol,protocolNamespaceType is 100 */ +struct appHandAppProtocolType { + /* element: ProtocolNamespace, urn:iso:15118:2:2010:AppProtocol,protocolNamespaceType */ + struct { + exi_string_character_t characters[appHandAppProtocolType_ProtocolNamespace_CHARACTERS_SIZE]; + uint16_t charactersLen; + } ProtocolNamespace ; + /* element: VersionNumberMajor, http://www.w3.org/2001/XMLSchema,unsignedInt */ + uint32_t VersionNumberMajor ; + /* element: VersionNumberMinor, http://www.w3.org/2001/XMLSchema,unsignedInt */ + uint32_t VersionNumberMinor ; + /* element: SchemaID, urn:iso:15118:2:2010:AppProtocol,idType */ + uint8_t SchemaID ; + /* element: Priority, urn:iso:15118:2:2010:AppProtocol,priorityType */ + uint8_t Priority ; +}; + +/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ResponseCode,SchemaID{0-1})', derivedBy='RESTRICTION'. */ +struct appHandAnonType_supportedAppProtocolRes { + /* element: ResponseCode, urn:iso:15118:2:2010:AppProtocol,responseCodeType */ + appHandresponseCodeType ResponseCode ; + /* element: SchemaID, urn:iso:15118:2:2010:AppProtocol,idType */ + uint8_t SchemaID ; + unsigned int SchemaID_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(AppProtocol{1-20})', derivedBy='RESTRICTION'. */ +#define appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE 5 +struct appHandAnonType_supportedAppProtocolReq { + /* element: AppProtocol, Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)', derivedBy='RESTRICTION'. */ + struct { + struct appHandAppProtocolType array[appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE]; + uint16_t arrayLen; + } AppProtocol; +}; + + + + + +/* Possible root elements of EXI Document */ +struct appHandEXIDocument { +#define USE_UNION_FOR_GLOBAL_ELEMENTS 1 +#ifdef USE_UNION_FOR_GLOBAL_ELEMENTS + union { +#endif + struct appHandAnonType_supportedAppProtocolReq supportedAppProtocolReq ; + struct appHandAnonType_supportedAppProtocolRes supportedAppProtocolRes ; +#ifdef USE_UNION_FOR_GLOBAL_ELEMENTS + }; +#endif + unsigned int supportedAppProtocolReq_isUsed:1; + unsigned int supportedAppProtocolRes_isUsed:1; + + + int _warning_; +}; + +/* Initialization methods for structs */ + +void init_appHandEXIDocument(struct appHandEXIDocument* exiDoc); +void init_appHandAppProtocolType(struct appHandAppProtocolType* appHandAppProtocolType); +void init_appHandAnonType_supportedAppProtocolReq(struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq); +void init_appHandAnonType_supportedAppProtocolRes(struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/appHandshake/appHandEXIDatatypesDecoder.c b/src/appHandshake/appHandEXIDatatypesDecoder.c new file mode 100644 index 0000000..32b8b36 --- /dev/null +++ b/src/appHandshake/appHandEXIDatatypesDecoder.c @@ -0,0 +1,898 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.9 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer

+ *

Schema: V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + + +#include "appHandEXIDatatypesDecoder.h" + +#include "DecoderChannel.h" +#include "EXIHeaderDecoder.h" + +#include "appHandEXIDatatypes.h" +#include "ErrorCodes.h" + +#ifndef EXI_appHand_DATATYPES_DECODER_C +#define EXI_appHand_DATATYPES_DECODER_C + +/** event-code */ +static uint32_t eventCode; +static int errn; +static uint32_t uint32; + + +/* Forward Declarations */ +static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType); +static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq); +static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes); + +/* Deviant data decoding (skip functions) */ + + + /* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)', derivedBy='RESTRICTION'. */ +static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType) { + int grammarID = 0; + int done = 0; + + init_appHandAppProtocolType(appHandAppProtocolType); + + while(!done) { + switch(grammarID) { + case 0: + /* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &appHandAppProtocolType->ProtocolNamespace.charactersLen); + if (errn == 0) { + errn = (appHandAppProtocolType->ProtocolNamespace.charactersLen - 2) <= appHandAppProtocolType_ProtocolNamespace_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (appHandAppProtocolType->ProtocolNamespace.charactersLen >= 2) { + appHandAppProtocolType->ProtocolNamespace.charactersLen = (uint16_t)(appHandAppProtocolType->ProtocolNamespace.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, appHandAppProtocolType->ProtocolNamespace.charactersLen, appHandAppProtocolType->ProtocolNamespace.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT(ProtocolNamespace) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 1; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 1: + /* Element[START_ELEMENT(VersionNumberMajor)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger32(stream, &appHandAppProtocolType->VersionNumberMajor); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT(VersionNumberMajor) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 2; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 2: + /* Element[START_ELEMENT(VersionNumberMinor)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger32(stream, &appHandAppProtocolType->VersionNumberMinor); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT(VersionNumberMinor) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[START_ELEMENT(SchemaID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + appHandAppProtocolType->SchemaID = (uint8_t)(uint32 + 0); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT(SchemaID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 4; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 4: + /* Element[START_ELEMENT(Priority)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &(uint32)); + appHandAppProtocolType->Priority = (uint8_t)(uint32 + 1); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT(Priority) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 5; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 5: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(AppProtocol{1-20})', derivedBy='RESTRICTION'. */ +static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) { + int grammarID = 7; + int done = 0; + + init_appHandAnonType_supportedAppProtocolReq(appHandAnonType_supportedAppProtocolReq); + + while(!done) { + switch(grammarID) { + case 7: + /* FirstStartTag[START_ELEMENT(AppProtocol)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 8; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 8: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 9; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 9: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 10; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 10: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 11; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 11: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 12; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 12: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 13; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 13: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 14; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 14: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 15; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 15: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 16; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 16: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 17; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 17: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 18; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 18: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 19; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 19: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 20; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 20: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 21; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 21: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 22; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 22: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 23; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 23: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 24; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 24: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 25; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 25: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 26; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 26: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { + errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 5; + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 5: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ResponseCode,SchemaID{0-1})', derivedBy='RESTRICTION'. */ +static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) { + int grammarID = 27; + int done = 0; + + init_appHandAnonType_supportedAppProtocolRes(appHandAnonType_supportedAppProtocolRes); + + while(!done) { + switch(grammarID) { + case 27: + /* FirstStartTag[START_ELEMENT(ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &appHandAnonType_supportedAppProtocolRes->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT(ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 28; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 28: + /* Element[START_ELEMENT(SchemaID), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + appHandAnonType_supportedAppProtocolRes->SchemaID = (uint8_t)(uint32 + 0); + appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT(SchemaID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 5; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 5: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 6; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + + + + +int decode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc) { + errn = readEXIHeader(stream); + + if(errn == 0) { + /* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */ + init_appHandEXIDocument(exiDoc); + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if(errn == 0) { + switch(eventCode) { + case 0: + /* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq) */ + errn = decode_appHandAnonType_supportedAppProtocolReq(stream, &exiDoc->supportedAppProtocolReq); + exiDoc->supportedAppProtocolReq_isUsed = 1u; + break; + case 1: + /* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes) */ + errn = decode_appHandAnonType_supportedAppProtocolRes(stream, &exiDoc->supportedAppProtocolRes); + exiDoc->supportedAppProtocolRes_isUsed = 1u; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + } + + } + + return errn; +} + + +#endif + diff --git a/src/codec/appHandCodec/appHandNameTableEntries.h b/src/appHandshake/appHandEXIDatatypesDecoder.h similarity index 63% rename from src/codec/appHandCodec/appHandNameTableEntries.h rename to src/appHandshake/appHandEXIDatatypesDecoder.h index 7294743..92de84c 100644 --- a/src/codec/appHandCodec/appHandNameTableEntries.h +++ b/src/appHandshake/appHandEXIDatatypesDecoder.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,26 +18,40 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/appHandshake/V2G_CI_AppProtocol.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +/** + * \file EXIDatatypesDecoder.h + * \brief Decoder for datatype definitions + * + */ + +#ifndef EXI_appHand_DATATYPES_DECODER_H +#define EXI_appHand_DATATYPES_DECODER_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#include + +#include "EXITypes.h" +#include "appHandEXIDatatypes.h" + +int decode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/appHandshake/appHandEXIDatatypesEncoder.c b/src/appHandshake/appHandEXIDatatypesEncoder.c new file mode 100644 index 0000000..8737d59 --- /dev/null +++ b/src/appHandshake/appHandEXIDatatypesEncoder.c @@ -0,0 +1,671 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.9 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer

+ *

Schema: V2G_CI_AppProtocol.xsd

+ * + * + ********************************************************************/ + + + + +#include "appHandEXIDatatypesEncoder.h" + +#include "EncoderChannel.h" +#include "EXIHeaderEncoder.h" + +#include "appHandEXIDatatypes.h" +#include "ErrorCodes.h" + +#ifndef EXI_appHand_DATATYPES_ENCODER_C +#define EXI_appHand_DATATYPES_ENCODER_C + +static int errn; + +/* Forward Declarations */ +static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType); +static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq); +static int encode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes); + + + /* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)', derivedBy='RESTRICTION'. */ +static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType) { + int grammarID = 0; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 0: + /* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(appHandAppProtocolType->ProtocolNamespace.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, appHandAppProtocolType->ProtocolNamespace.characters, appHandAppProtocolType->ProtocolNamespace.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 1; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 1: + /* Element[START_ELEMENT(VersionNumberMajor)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, appHandAppProtocolType->VersionNumberMajor); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 2; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 2: + /* Element[START_ELEMENT(VersionNumberMinor)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, appHandAppProtocolType->VersionNumberMinor); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[START_ELEMENT(SchemaID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(appHandAppProtocolType->SchemaID - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 4: + /* Element[START_ELEMENT(Priority)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, (uint32_t)(appHandAppProtocolType->Priority - 1)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 5; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 5: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(AppProtocol{1-20})', derivedBy='RESTRICTION'. */ +static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) { + int grammarID = 7; + int done = 0; + + unsigned int appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 7: + /* FirstStartTag[START_ELEMENT(AppProtocol)] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 8; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 8: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 9; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 9: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 10; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 10: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 11; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 11: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 12; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 12: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 13; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 13: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 14; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 14: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 15; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 15: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 16; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 16: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 17; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 17: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 18; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 18: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 19; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 19: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 20; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 20: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 21; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 21: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 22; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 22: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 23; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 23: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 24; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 24: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 25; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 25: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 26; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 26: + /* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ + if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); + } + grammarID = 5; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 5: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(ResponseCode,SchemaID{0-1})', derivedBy='RESTRICTION'. */ +static int encode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) { + int grammarID = 27; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 27: + /* FirstStartTag[START_ELEMENT(ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, appHandAnonType_supportedAppProtocolRes->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 28; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 28: + /* Element[START_ELEMENT(SchemaID), END_ELEMENT] */ + if ( appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(appHandAnonType_supportedAppProtocolRes->SchemaID - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 5; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 5: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + + + +int encode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc) { + errn = writeEXIHeader(stream); + + if(errn == 0) { + /* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */ + if ( exiDoc->supportedAppProtocolReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq) */ + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_appHandAnonType_supportedAppProtocolReq(stream, &exiDoc->supportedAppProtocolReq ); + } + } else if ( exiDoc->supportedAppProtocolRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes) */ + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_appHandAnonType_supportedAppProtocolRes(stream, &exiDoc->supportedAppProtocolRes ); + } + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + + } + + if(errn == 0) { + /* flush any pending bits */ + errn = encodeFinish(stream); + } + + return errn; +} + + +#endif + diff --git a/src/codec/v2gNameTableEntries.h b/src/appHandshake/appHandEXIDatatypesEncoder.h similarity index 63% rename from src/codec/v2gNameTableEntries.h rename to src/appHandshake/appHandEXIDatatypesEncoder.h index adce5c2..59decd3 100644 --- a/src/codec/v2gNameTableEntries.h +++ b/src/appHandshake/appHandEXIDatatypesEncoder.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,26 +18,41 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: V2G_CI_AppProtocol.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 - + + +/** + * \file EXIDatatypesEncoder.h + * \brief Encoder for datatype definitions + * + */ + +#ifndef EXI_appHand_DATATYPES_ENCODER_H +#define EXI_appHand_DATATYPES_ENCODER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include "EXITypes.h" +#include "appHandEXIDatatypes.h" + + +int encode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/appHandshake/appHand_dataDeserialization.c b/src/appHandshake/appHand_dataDeserialization.c deleted file mode 100644 index 3280c1c..0000000 --- a/src/appHandshake/appHand_dataDeserialization.c +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index e11dfcc..0000000 --- a/src/appHandshake/appHand_dataSerialization.c +++ /dev/null @@ -1,424 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 02d170b..0000000 --- a/src/appHandshake/appHand_dataTypes.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index fc28224..0000000 --- a/src/appHandshake/appHand_dataTypes.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 1a3834e..0000000 --- a/src/appHandshake/appHand_service.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 index e22c553..1d8308f 100644 --- a/src/codec/AbstractDecoderChannel.c +++ b/src/codec/AbstractDecoderChannel.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,651 +18,727 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +#include "DecoderChannel.h" + +#include "EXIConfig.h" +#include "EXIOptions.h" +#include "BitInputStream.h" +#include "EXITypes.h" +#include "MethodsBag.h" +/*#include "v2gEXICoder.h"*/ +#include "ErrorCodes.h" + +#include "StringValueTable.h" + +#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION +#include "DynamicMemory.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_t* s) { + int errn = 0; + int extraChar = 0; +#if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII + extraChar = 1; /* null terminator */ +#endif /* STRING_REPRESENTATION_ASCII */ + + if ( (len + extraChar) > 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->characters); + s->len = len; + } + + return errn; +} + +/** + * Decode a length prefixed sequence of characters. + */ +int decodeString(bitstream_t* stream, exi_string_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 = exiAddStringValue(&state->stringTable, &(s->miss), qnameID); +# else /* EXI_v2gVALUE_MAX_LENGTH < 0 */ + if (L <= EXI_OPTION_VALUE_MAX_LENGTH) { + errn = exiAddStringValue(&state->stringTable, &(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.characters[i] = rcs->characters[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 = exiAddStringValue(&state->stringTable, &(s->miss), qnameID); +# else /* EXI_OPTION_VALUE_MAX_LENGTH < 0 */ + if (L <= EXI_OPTION_VALUE_MAX_LENGTH) { + errn = exiAddStringValue(&state->stringTable, &(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, exi_string_character_t* chars) { + unsigned int i; + int errn = 0; + +#if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII + uint8_t b; + for (i = 0; i < len && errn == 0; i++) { + errn = decode(stream, &b); + if(b < 128) { + chars[i] = (exi_string_character_t)b; + } else { + errn = EXI_ERROR_STRINGVALUES_CHARACTER; + } + } + /* null terminator \0 */ + chars[i] = '\0'; + +#endif /* STRING_REPRESENTATION_ASCII */ +#if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS + for (i = 0; i < len && errn == 0; i++) { + errn = decodeUnsignedInteger32(stream, &chars[i]); + } +#endif /* STRING_REPRESENTATION_UCS */ + + + + + return errn; +} + +int decodeRCSCharacters(bitstream_t* stream, uint16_t len, exi_string_character_t* chars, uint16_t rcsCodeLength, uint16_t rcsSize, const exi_string_character_t rcsSet[]) { + unsigned int i; + int errn = 0; + uint32_t uint32; +#if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII + uint8_t b; +#endif /* STRING_REPRESENTATION_ASCII */ + + + for (i = 0; i < len && errn == 0; i++) { + errn = decodeNBitUnsignedInteger(stream, rcsCodeLength, &uint32); + if(errn == 0) { + if ( uint32 == rcsSize ) { + /* RCS deviation */ +#if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII + errn = decode(stream, &b); + if(b < 128) { + chars[i] = (exi_string_character_t)b; + } else { + errn = EXI_ERROR_STRINGVALUES_CHARACTER; + } +#endif /* STRING_REPRESENTATION_ASCII */ +#if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS + errn = decodeUnsignedInteger32(stream, &chars[i]); +#endif /* STRING_REPRESENTATION_UCS */ + + } else { + /* RCS match */ +#if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII + chars[i] = rcsSet[uint32]; +#endif /* STRING_REPRESENTATION_ASCII */ +#if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS + chars[i] = rcsSet[uint32]; +#endif /* STRING_REPRESENTATION_UCS */ + } + } + } + + return errn; +} + + +/** + * Decode a binary value as a length-prefixed sequence of octets. + */ +int decodeBinary(bitstream_t* stream, exi_bytes_t* bytes) { + 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 */ + } + + errn = decodeBytes(stream, bytes->len, bytes->data); + } + + return errn; +} + + +int decodeBytes(bitstream_t* stream, uint16_t len, uint8_t* data) { + unsigned int i; + int errn = 0; + uint8_t b; + + for (i = 0; i < len && errn == 0; i++) { + errn = decode(stream, &b); + 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 index 2e6367f..bab270e 100644 --- a/src/codec/AbstractEncoderChannel.c +++ b/src/codec/AbstractEncoderChannel.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,522 +18,638 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +#include "EncoderChannel.h" +#include "EXIOptions.h" +#include "BitOutputStream.h" +#include "EXITypes.h" +#include "ErrorCodes.h" +#include "MethodsBag.h" +/*#include "v2gEXICoder.h"*/ + +#include "StringValueTable.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 encodeUnsignedInteger16(bitstream_t* stream, uint16_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 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 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 encodeInteger16(bitstream_t* stream, int16_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 = (int16_t)((-n) - 1); + } else { + errn = encodeBoolean(stream, 0); + } + if (errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_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 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_t* string) { + int errn = encodeUnsignedInteger32(stream, string->len); + if (errn == 0) { + errn = encodeCharacters(stream, string->characters, 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 = encodeCharacters(stream, string->miss.characters, + 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 = exiAddStringValue(&state->stringTable, &(string->miss), qnameID); +# else /* EXI_OPTION_VALUE_MAX_LENGTH < 0 */ + if (string->miss.len <= EXI_OPTION_VALUE_MAX_LENGTH) { + errn = exiAddStringValue(&state->stringTable, &(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->characters[k] == string->miss.characters[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 = exiAddStringValue(&state->stringTable, &(string->miss), qnameID); +#else /* EXI_OPTION_VALUE_MAX_LENGTH < 0 */ + if (string->miss.len <= EXI_OPTION_VALUE_MAX_LENGTH) { + errn = exiAddStringValue(&state->stringTable, &(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 encodeCharacters(bitstream_t* stream, exi_string_character_t* chars, uint16_t len) { + unsigned int i; + int errn = 0; + for (i = 0; i < len && errn == 0; i++) { +#if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII + errn = encode(stream, (uint8_t)chars[i]); +#endif /* STRING_REPRESENTATION_ASCII */ +#if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS + errn = encodeUnsignedInteger32(stream, chars[i]); +#endif /* STRING_REPRESENTATION_UCS */ + } + return errn; +} + + +int encodeRCSCharacters(bitstream_t* stream, exi_string_character_t* chars, uint16_t len, uint16_t rcsCodeLength, uint16_t rcsSize, const exi_string_character_t rcsSet[]) { + unsigned int i; + int k; + int errn = 0; + int rcsCode = -1; + + for (i = 0; i < len && errn == 0; i++) { + /* try to find short code */ + rcsCode = -1; + for(k=0; klen); + + if(errn == 0) { + errn = encodeBytes(stream, bytes->data, bytes->len); + } + + return errn; +} + +int encodeBytes(bitstream_t* stream, uint8_t* data, uint16_t len) { + unsigned int i; + int errn = 0; + + for (i = 0; i < len && errn == 0; i++) { + errn = encode(stream, 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 index e861e74..d6ee836 100644 --- a/src/codec/BitDecoderChannel.c +++ b/src/codec/BitDecoderChannel.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,60 +18,60 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +#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 index 60e6ab6..8ff744b 100644 --- a/src/codec/BitEncoderChannel.c +++ b/src/codec/BitEncoderChannel.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,75 +18,75 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - - - - - - - - - - - - + + +#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 index 46064ad..ff9efc7 100644 --- a/src/codec/BitInputStream.c +++ b/src/codec/BitInputStream.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,88 +18,88 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 + + +#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 index c44cceb..825c0af 100644 --- a/src/codec/BitInputStream.h +++ b/src/codec/BitInputStream.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,51 +18,50 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 + + +/** + * \file BitInputStream.h + * \brief Bit Input Stream + * + * Read bits and bytes from an underlying input stream. + * + */ + +#ifndef BIT_INPUT_STREAM_H +#define BIT_INPUT_STREAM_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.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); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/codec/BitOutputStream.c b/src/codec/BitOutputStream.c index 4698df2..3a550ca 100644 --- a/src/codec/BitOutputStream.c +++ b/src/codec/BitOutputStream.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,107 +18,107 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +#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)++] = (uint8_t)(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 index 809d011..3e01b10 100644 --- a/src/codec/BitOutputStream.h +++ b/src/codec/BitOutputStream.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,68 +18,68 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +/** + * \file BitOutputStream.h + * \brief Bit Output Stream + * + * Write bits and bytes to an underlying output stream. + * + */ + +#ifndef BIT_OUTPUT_STREAM_H +#define BIT_OUTPUT_STREAM_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include "EXITypes.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); + + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/src/codec/ByteDecoderChannel.c b/src/codec/ByteDecoderChannel.c index e498d9e..efe3705 100644 --- a/src/codec/ByteDecoderChannel.c +++ b/src/codec/ByteDecoderChannel.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,76 +18,76 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +#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 index 08901bb..de24da3 100644 --- a/src/codec/ByteEncoderChannel.c +++ b/src/codec/ByteEncoderChannel.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,126 +18,126 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - - - - - - - - - - - - + + +#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 index 6971dd8..ff8bc9a 100644 --- a/src/codec/ByteStream.c +++ b/src/codec/ByteStream.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,11 +18,11 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: V2G_CI_MsgDef.xsd

* * ********************************************************************/ @@ -42,7 +41,7 @@ #ifndef BYTE_STREAM_C #define BYTE_STREAM_C -int readBytesFromFile(const char * filename, uint8_t* data, uint32_t size, uint32_t* pos) { +int readBytesFromFile(const char * filename, uint8_t* data, uint16_t size, uint16_t* pos) { FILE* f; int character; int errn = 0; @@ -66,7 +65,7 @@ int readBytesFromFile(const char * filename, uint8_t* data, uint32_t size, uint3 return errn; } -int writeBytesToFile(uint8_t* data, uint32_t len, const char * filename) { +int writeBytesToFile(uint8_t* data, uint16_t len, const char * filename) { size_t rlen; FILE* f = fopen(filename, "wb+"); diff --git a/src/codec/ByteStream.h b/src/codec/ByteStream.h index 81ea97a..279ffe3 100644 --- a/src/codec/ByteStream.h +++ b/src/codec/ByteStream.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,23 +18,17 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: V2G_CI_MsgDef.xsd

* * ********************************************************************/ -#ifdef __cplusplus -extern "C" { -#endif - -#include "EXITypes.h" - /** * \file ByteStream.h * \brief Byte Stream utilities @@ -45,6 +38,12 @@ extern "C" { #ifndef BYTE_STREAM_H #define BYTE_STREAM_H +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + /** * \brief Write bytes to file * @@ -54,7 +53,7 @@ extern "C" { * \return Error-Code <> 0 * */ -int writeBytesToFile(uint8_t* data, uint32_t len, const char * filename); +int writeBytesToFile(uint8_t* data, uint16_t len, const char * filename); /** @@ -67,10 +66,10 @@ int writeBytesToFile(uint8_t* data, uint32_t len, const char * filename); * \return Error-Code <> 0 * */ -int readBytesFromFile(const char * filename, uint8_t* data, uint32_t size, uint32_t* pos); - -#endif /* BYTE_STREAM_H */ +int readBytesFromFile(const char * filename, uint8_t* data, uint16_t size, uint16_t* pos); #ifdef __cplusplus } #endif + +#endif /* BYTE_STREAM_H */ diff --git a/src/codec/DecoderChannel.h b/src/codec/DecoderChannel.h index ec347d3..bbb7a2a 100644 --- a/src/codec/DecoderChannel.h +++ b/src/codec/DecoderChannel.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,341 +18,369 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +/** + * \file DecoderChannel.h + * \brief EXI Decoder Channel + * + */ + +#ifndef DECODER_CHANNEL_H +#define DECODER_CHANNEL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXIOptions.h" +#include "EXITypes.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_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_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, exi_string_character_t* chars); + + +/** + * \brief Decode restricted character set characters + * + * Decode a sequence of characters according to a given length and rcs code-length, size and set. + * + * \param stream Input Stream + * \param len Length + * \param chars Characters (out) + * \param rcsCodeLength RCS code-length + * \param rcsCodeLength RCS size + * \param rcsCodeLength RCS set + * \return Error-Code <> 0 + * + */ +int decodeRCSCharacters(bitstream_t* stream, uint16_t len, exi_string_character_t* chars, uint16_t rcsCodeLength, uint16_t rcsSize, const exi_string_character_t rcsSet[]); + + + +/** + * \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 Binary data + * + * Decode a sequence of octets. + * + * \param stream Input Stream + * \param len Length + * \param data Bytes (out) + * \return Error-Code <> 0 + * + */ +int decodeBytes(bitstream_t* stream, uint16_t len, uint8_t* data); + +/** + * \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); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/codec/DynamicMemory.c b/src/codec/DynamicMemory.c deleted file mode 100644 index 25bd8b8..0000000 --- a/src/codec/DynamicMemory.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 5ec5606..0000000 --- a/src/codec/DynamicMemory.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 index a0e8d17..bb62b39 100644 --- a/src/codec/EXIConfig.h +++ b/src/codec/EXIConfig.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,23 +18,17 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: V2G_CI_MsgDef.xsd

* * ********************************************************************/ -#ifdef __cplusplus -extern "C" { -#endif - - - /** * \file EXIConfig.h * \brief EXI Configurations for the EXI Codec @@ -45,10 +38,9 @@ extern "C" { #ifndef EXI_CONFIG_H #define EXI_CONFIG_H - - - - +#ifdef __cplusplus +extern "C" { +#endif /** EXI stream - Option Byte Array */ @@ -78,26 +70,26 @@ extern "C" { +/** String representation ASCII */ +#define STRING_REPRESENTATION_ASCII 1 +/** String representation Universal Character Set (UCS) */ +#define STRING_REPRESENTATION_UCS 2 +/** */ +/** \brief String representation mode + * + * ASCII or UCS + * */ +#define STRING_REPRESENTATION STRING_REPRESENTATION_UCS + /** Maximum number of cascading elements, XML tree depth */ #define EXI_ELEMENT_STACK_SIZE 24 - - - - - - - - - - - -#endif /* EXI_CONFIG_H */ - - #ifdef __cplusplus } #endif + +#endif /* EXI_CONFIG_H */ + diff --git a/src/codec/EXIHeaderDecoder.c b/src/codec/EXIHeaderDecoder.c index 9d44038..616f231 100644 --- a/src/codec/EXIHeaderDecoder.c +++ b/src/codec/EXIHeaderDecoder.c @@ -1,34 +1,4 @@ -/* - * 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

- * - * - ********************************************************************/ - - +/* $EXI_SOURCE_PREAMBLE$ */ #include "EXIHeaderDecoder.h" #include "BitInputStream.h" @@ -39,8 +9,14 @@ #define EXI_HEADER_DECODER_C int readEXIHeader(bitstream_t* stream) { + int errn; uint32_t header = 0; - int errn = readBits(stream, 8, &header); + + /* init stream */ + stream->buffer = 0; + stream->capacity = 0; + + errn = readBits(stream, 8, &header); if (errn == 0) { if(header == '$') { /* we do not support "EXI Cookie" */ diff --git a/src/codec/EXIHeaderDecoder.h b/src/codec/EXIHeaderDecoder.h index ed67723..0b6a2e2 100644 --- a/src/codec/EXIHeaderDecoder.h +++ b/src/codec/EXIHeaderDecoder.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,23 +18,17 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: V2G_CI_MsgDef.xsd

* * ********************************************************************/ -#ifdef __cplusplus -extern "C" { -#endif - -#include "EXITypes.h" - /** * \file EXIHeaderDecoder.h * \brief EXI Header Decoder @@ -45,6 +38,12 @@ extern "C" { #ifndef EXI_HEADER_DECODER_H #define EXI_HEADER_DECODER_H +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + /** * \brief Reads EXI header * @@ -54,9 +53,8 @@ extern "C" { */ int readEXIHeader(bitstream_t* stream); -#endif - - #ifdef __cplusplus } #endif + +#endif diff --git a/src/codec/EXIHeaderEncoder.c b/src/codec/EXIHeaderEncoder.c index 9cac15a..6f237ad 100644 --- a/src/codec/EXIHeaderEncoder.c +++ b/src/codec/EXIHeaderEncoder.c @@ -1,34 +1,4 @@ -/* - * 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

- * - * - ********************************************************************/ - - +/* $EXI_SOURCE_PREAMBLE$ */ #include "EXIHeaderEncoder.h" #include "BitOutputStream.h" @@ -38,6 +8,10 @@ #define EXI_HEADER_ENCODER_C int writeEXIHeader(bitstream_t* stream) { + /* init stream */ + stream->buffer = 0; + stream->capacity = 8; + return writeBits(stream, 8, 128); } diff --git a/src/codec/EXIHeaderEncoder.h b/src/codec/EXIHeaderEncoder.h index 3ab0fde..925163d 100644 --- a/src/codec/EXIHeaderEncoder.h +++ b/src/codec/EXIHeaderEncoder.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,23 +18,17 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: V2G_CI_MsgDef.xsd

* * ********************************************************************/ -#ifdef __cplusplus -extern "C" { -#endif - -#include "EXITypes.h" - /** * \file EXIHeaderEncoder.h * \brief EXI Header Encoder @@ -45,6 +38,12 @@ extern "C" { #ifndef EXI_HEADER_ENCODER_H #define EXI_HEADER_ENCODER_H +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + /** * \brief Writes EXI header @@ -55,9 +54,8 @@ extern "C" { */ int writeEXIHeader(bitstream_t* stream); -#endif - - #ifdef __cplusplus } #endif + +#endif diff --git a/src/codec/EXIOptions.h b/src/codec/EXIOptions.h index ab2ce47..b144eae 100644 --- a/src/codec/EXIOptions.h +++ b/src/codec/EXIOptions.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,78 +18,76 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 + + +/** + * \file EXIOptions.h + * \brief EXI Options for the EXI Codec + * + */ + +#ifndef EXI_OPTIONS_H +#define EXI_OPTIONS_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** 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 + + +#ifdef __cplusplus +} +#endif + +#endif /* EXI_OPTIONS_H */ diff --git a/src/codec/EXITypes.h b/src/codec/EXITypes.h index eee4d6d..fa95110 100644 --- a/src/codec/EXITypes.h +++ b/src/codec/EXITypes.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,539 +18,575 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 + + +/** + * \file EXITypes.h + * \brief Basic type definitions and structs + * + */ + +#ifndef EXI_TYPES_H +#define EXI_TYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "EXIConfig.h" +#if EXI_STREAM == FILE_STREAM +#include +#endif + + +/** 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. + * + * # General + * .size defines the maximum size of the byte array (see .data) + * + * .data points to the input/output array of bytes (unsigned char*). + * + * .pos has to be set to an pointer to an 32 bit long unsigned integer (uint32_t *) + * as this variable is read/write. + * Therefore it is best practice to declare the variable itself and use the &-operator + * to assign the address. The value of that variable points to the position inside the + * buffer where the stream begins. Which is usually the first (0th) byte but can also be + * another value if there more information transferred in that stream. + * After processing .pos points to the next "available" byte (if any left). + * + * .buffer has to be set to 0 for internal use only (single byte buffer) + * + * # Receiving data (input) + * .capacity is used for addressing single bits in the actual byte (see .buffer) + * and has to be set to 0, which means there are 0 bits read so far and a new + * byte needs to be read from the input stream/data-array to the current byte buffer. + * + * # Sending data (output) + * .capacity is used for addressing single bits in the actual byte (see .buffer) + * and has to be set to 8, which means there are still 8 bits left to fill up + * the current byte buffer before writing the final byte to the output stream/data-array. + * + */ +typedef struct { +#if EXI_STREAM == BYTE_ARRAY + /** byte array size */ + uint16_t size; + /** byte array data */ + uint8_t* data; + /** byte array next position in array */ + uint16_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 EXI string character */ +/* Note: define whether you wan't to support ASCII only or UCS */ +#if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII +typedef char exi_string_character_t; +#endif /* STRING_REPRESENTATION_ASCII */ +#if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS +typedef uint32_t exi_string_character_t; +#endif /* STRING_REPRESENTATION_UCS */ + + + +/** \brief Universal Character Set (UCS) strings */ +typedef struct { + /** container size */ + uint16_t size; + /** string character container */ + exi_string_character_t* characters; + /** current string length == number of code-points, (len <= size) */ + uint16_t len; +} exi_string_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_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 */ + exi_string_character_t* characters; + /** 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_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_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; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/codec/EncoderChannel.h b/src/codec/EncoderChannel.h index f7e0dac..52965de 100644 --- a/src/codec/EncoderChannel.h +++ b/src/codec/EncoderChannel.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,305 +18,370 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +/** + * \file EncoderChannel.h + * \brief EXI Encoder Channel + * + */ + +#ifndef ENCODER_CHANNEL_H +#define ENCODER_CHANNEL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.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 16 bits + * \return Error-Code <> 0 + * + */ +int encodeUnsignedInteger16(bitstream_t* stream, uint16_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 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 16 bits + * \return Error-Code <> 0 + * + */ +int encodeInteger16(bitstream_t* stream, int16_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 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_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 encodeCharacters(bitstream_t* stream, exi_string_character_t* chars, uint16_t len); + + +/** + * \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 + * \param rcsCodeLength RCS code-length + * \param rcsCodeLength RCS size + * \param rcsCodeLength RCS set + * \return Error-Code <> 0 + * + */ +int encodeRCSCharacters(bitstream_t* stream, exi_string_character_t* chars, uint16_t len, uint16_t rcsCodeLength, uint16_t rcsSize, const exi_string_character_t rcsSet[]); + + + +/** + * \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 binary data + * + * Encode a sequence of octets. + * + * \param stream Output Stream + * \param data Byte values + * \param len Length + * \return Error-Code <> 0 + * + */ +int encodeBytes(bitstream_t* stream, uint8_t* data, uint16_t len); + +/** + * \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); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/codec/ErrorCodes.h b/src/codec/ErrorCodes.h index 77c932a..cde339d 100644 --- a/src/codec/ErrorCodes.h +++ b/src/codec/ErrorCodes.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,107 +10,110 @@ * 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 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 + + +/** + * \file ErrorCodes.h + * \brief Error Codes descriptions + * + */ + +#ifndef EXI_ERROR_CODES_H +#define EXI_ERROR_CODES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#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_GRAMMAR_ID -108 +#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_DATATYPE -140 +#define EXI_UNSUPPORTED_STRING_VALUE_TYPE -141 +#define EXI_UNSUPPORTED_INTEGER_VALUE_TYPE -142 +#define EXI_UNSUPPORTED_DATETIME_TYPE -143 + +#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_STRINGVALUES_CHARACTER -164 + +#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 + +#ifdef __cplusplus +} +#endif + + +#endif /* EXI_ERROR_CODES_H */ + diff --git a/src/codec/MethodsBag.c b/src/codec/MethodsBag.c index 7d030be..a4fc3c5 100644 --- a/src/codec/MethodsBag.c +++ b/src/codec/MethodsBag.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,100 +18,100 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +#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 index 2b8999b..4b50c0b 100644 --- a/src/codec/MethodsBag.h +++ b/src/codec/MethodsBag.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,52 +18,53 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +/** +* \file MethodsBag.h +* \brief Method bag for bit and octet functions +* +*/ + +#ifndef METHODS_BAG_H +#define METHODS_BAG_H + + + +#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 deleted file mode 100644 index 839977e..0000000 --- a/src/codec/StringNameTable.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index e2e05e1..0000000 --- a/src/codec/StringNameTable.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 index 9d361d2..5f29535 100644 --- a/src/codec/StringValueTable.c +++ b/src/codec/StringValueTable.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,177 +18,210 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +#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; +} + + +static int __exiAddStringValue(exi_value_table_t* valueTable, + exi_string_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.characters = oldStrs[i].str.characters; + } + /*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.characters, sv->characters, sv->len*sizeof(uint32_t)) == NULL ) { + errn = EXI_ERROR_STRINGVALUES_OUT_OF_MEMORY; + } + + valueTable->valueStringTable->len++; + } + } + + + return errn; +} + + + +int exiAddStringValue(exi_value_table_t* valueTable, exi_string_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 + valueTable->numberOfGlobalStrings++; +#else /* EXI_OPTION_VALUE_PARTITION_CAPACITY < 0 */ + if (valueTable->numberOfGlobalStrings < EXI_OPTION_VALUE_PARTITION_CAPACITY) { + valueTable->numberOfGlobalStrings++; + } +#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY < 0 */ + /* increment local string count */ + if (qnameID < valueTable->sizeLocalStrings) { +#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION + errn = __exiAddStringValue(valueTable, sv, qnameID); +#endif /* DYNAMIC_ALLOCATION */ + valueTable->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; +} + + + + +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_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_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 index aa08253..af15d59 100644 --- a/src/codec/StringValueTable.h +++ b/src/codec/StringValueTable.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,102 +18,102 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

- *

Schema: input/test_v2g/V2G_CI_MsgDef.xsd

+ *

Code generated by EXIdizer

+ *

Schema: 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 - + + +/** + * \file StringValueTable.h + * \brief Value string table implementation + * + */ + +#ifndef STRING_VALUE_TABLE_H +#define STRING_VALUE_TABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#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_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_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_t* sv); + + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/codec/UCSString.c b/src/codec/UCSString.c deleted file mode 100644 index 475436e..0000000 --- a/src/codec/UCSString.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 2054419..0000000 --- a/src/codec/UCSString.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 3b64088..0000000 --- a/src/codec/appHandCodec/appHandEXICoder.c +++ /dev/null @@ -1,722 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 9e67116..0000000 --- a/src/codec/appHandCodec/appHandEXICoder.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 0f9fff9..0000000 --- a/src/codec/appHandCodec/appHandEXIDecoder.c +++ /dev/null @@ -1,1746 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 1ea4c95..0000000 --- a/src/codec/appHandCodec/appHandEXIDecoder.h +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index ccf9927..0000000 --- a/src/codec/appHandCodec/appHandEXIEncoder.c +++ /dev/null @@ -1,1425 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index dc0ecf1..0000000 --- a/src/codec/appHandCodec/appHandEXIEncoder.h +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index b4d88b2..0000000 --- a/src/codec/appHandCodec/appHandNameTableEntries.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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/appHandQNameDefines.h b/src/codec/appHandCodec/appHandQNameDefines.h deleted file mode 100644 index 15e12bc..0000000 --- a/src/codec/appHandCodec/appHandQNameDefines.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index bbd7a9e..0000000 --- a/src/codec/appHandCodec/appHandQNames.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index cbd73d1..0000000 --- a/src/codec/appHandCodec/appHandQNames.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 974e814..0000000 --- a/src/codec/main_codec.c +++ /dev/null @@ -1,604 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 633b653..0000000 --- a/src/codec/v2gEXICoder.c +++ /dev/null @@ -1,3167 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index a21e102..0000000 --- a/src/codec/v2gEXICoder.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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/v2gEXIDatatypes.c b/src/codec/v2gEXIDatatypes.c new file mode 100644 index 0000000..dc8be7d --- /dev/null +++ b/src/codec/v2gEXIDatatypes.c @@ -0,0 +1,634 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.9 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer

+ *

Schema: V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +#include + +#include "v2gEXIDatatypes.h" +#include "EXITypes.h" + + +#ifndef EXI_v2g_DATATYPES_C +#define EXI_v2g_DATATYPES_C + + + +void init_v2gEXIDocument(struct v2gEXIDocument* exiDoc) { + exiDoc->V2G_Message_isUsed = 0u; + exiDoc->ServiceDiscoveryReq_isUsed = 0u; + exiDoc->ServiceDiscoveryRes_isUsed = 0u; + exiDoc->MeteringReceiptReq_isUsed = 0u; + exiDoc->PaymentDetailsReq_isUsed = 0u; + exiDoc->MeteringReceiptRes_isUsed = 0u; + exiDoc->PaymentDetailsRes_isUsed = 0u; + exiDoc->SessionSetupReq_isUsed = 0u; + exiDoc->SessionSetupRes_isUsed = 0u; + exiDoc->CableCheckReq_isUsed = 0u; + exiDoc->CableCheckRes_isUsed = 0u; + exiDoc->CertificateInstallationReq_isUsed = 0u; + exiDoc->CertificateInstallationRes_isUsed = 0u; + exiDoc->WeldingDetectionReq_isUsed = 0u; + exiDoc->WeldingDetectionRes_isUsed = 0u; + exiDoc->CertificateUpdateReq_isUsed = 0u; + exiDoc->CertificateUpdateRes_isUsed = 0u; + exiDoc->PaymentServiceSelectionReq_isUsed = 0u; + exiDoc->PowerDeliveryReq_isUsed = 0u; + exiDoc->PaymentServiceSelectionRes_isUsed = 0u; + exiDoc->PowerDeliveryRes_isUsed = 0u; + exiDoc->ChargingStatusReq_isUsed = 0u; + exiDoc->ChargingStatusRes_isUsed = 0u; + exiDoc->BodyElement_isUsed = 0u; + exiDoc->CurrentDemandReq_isUsed = 0u; + exiDoc->PreChargeReq_isUsed = 0u; + exiDoc->CurrentDemandRes_isUsed = 0u; + exiDoc->PreChargeRes_isUsed = 0u; + exiDoc->SessionStopReq_isUsed = 0u; + exiDoc->AuthorizationReq_isUsed = 0u; + exiDoc->SessionStopRes_isUsed = 0u; + exiDoc->AuthorizationRes_isUsed = 0u; + exiDoc->ChargeParameterDiscoveryReq_isUsed = 0u; + exiDoc->ChargeParameterDiscoveryRes_isUsed = 0u; + exiDoc->ServiceDetailReq_isUsed = 0u; + exiDoc->ServiceDetailRes_isUsed = 0u; + exiDoc->DC_EVSEStatus_isUsed = 0u; + exiDoc->RelativeTimeInterval_isUsed = 0u; + exiDoc->SalesTariffEntry_isUsed = 0u; + exiDoc->DC_EVPowerDeliveryParameter_isUsed = 0u; + exiDoc->SASchedules_isUsed = 0u; + exiDoc->AC_EVChargeParameter_isUsed = 0u; + exiDoc->SAScheduleList_isUsed = 0u; + exiDoc->DC_EVStatus_isUsed = 0u; + exiDoc->EVStatus_isUsed = 0u; + exiDoc->DC_EVChargeParameter_isUsed = 0u; + exiDoc->DC_EVSEChargeParameter_isUsed = 0u; + exiDoc->EVSEStatus_isUsed = 0u; + exiDoc->TimeInterval_isUsed = 0u; + exiDoc->EVPowerDeliveryParameter_isUsed = 0u; + exiDoc->EVSEChargeParameter_isUsed = 0u; + exiDoc->AC_EVSEStatus_isUsed = 0u; + exiDoc->Entry_isUsed = 0u; + exiDoc->AC_EVSEChargeParameter_isUsed = 0u; + exiDoc->PMaxScheduleEntry_isUsed = 0u; + exiDoc->EVChargeParameter_isUsed = 0u; + exiDoc->SignatureProperty_isUsed = 0u; + exiDoc->DSAKeyValue_isUsed = 0u; + exiDoc->SignatureProperties_isUsed = 0u; + exiDoc->KeyValue_isUsed = 0u; + exiDoc->Transforms_isUsed = 0u; + exiDoc->DigestMethod_isUsed = 0u; + exiDoc->Signature_isUsed = 0u; + exiDoc->RetrievalMethod_isUsed = 0u; + exiDoc->Manifest_isUsed = 0u; + exiDoc->Reference_isUsed = 0u; + exiDoc->CanonicalizationMethod_isUsed = 0u; + exiDoc->RSAKeyValue_isUsed = 0u; + exiDoc->Transform_isUsed = 0u; + exiDoc->PGPData_isUsed = 0u; + exiDoc->MgmtData_isUsed = 0u; + exiDoc->SignatureMethod_isUsed = 0u; + exiDoc->KeyInfo_isUsed = 0u; + exiDoc->SPKIData_isUsed = 0u; + exiDoc->X509Data_isUsed = 0u; + exiDoc->SignatureValue_isUsed = 0u; + exiDoc->KeyName_isUsed = 0u; + exiDoc->DigestValue_isUsed = 0u; + exiDoc->SignedInfo_isUsed = 0u; + exiDoc->Object_isUsed = 0u; +} + +void init_v2gServiceDetailResType(struct v2gServiceDetailResType* v2gServiceDetailResType) { + v2gServiceDetailResType->ServiceParameterList_isUsed = 0u; +} + +void init_v2gSPKIDataType(struct v2gSPKIDataType* v2gSPKIDataType) { + v2gSPKIDataType->SPKISexp.arrayLen = 0u; +} + +void init_v2gAuthorizationResType(struct v2gAuthorizationResType* v2gAuthorizationResType) { +} + +void init_v2gBodyType(struct v2gBodyType* v2gBodyType) { + v2gBodyType->BodyElement_isUsed = 0u; + v2gBodyType->SessionSetupReq_isUsed = 0u; + v2gBodyType->SessionSetupRes_isUsed = 0u; + v2gBodyType->ServiceDiscoveryReq_isUsed = 0u; + v2gBodyType->ServiceDiscoveryRes_isUsed = 0u; + v2gBodyType->ServiceDetailReq_isUsed = 0u; + v2gBodyType->ServiceDetailRes_isUsed = 0u; + v2gBodyType->PaymentServiceSelectionReq_isUsed = 0u; + v2gBodyType->PaymentServiceSelectionRes_isUsed = 0u; + v2gBodyType->PaymentDetailsReq_isUsed = 0u; + v2gBodyType->PaymentDetailsRes_isUsed = 0u; + v2gBodyType->AuthorizationReq_isUsed = 0u; + v2gBodyType->AuthorizationRes_isUsed = 0u; + v2gBodyType->ChargeParameterDiscoveryReq_isUsed = 0u; + v2gBodyType->ChargeParameterDiscoveryRes_isUsed = 0u; + v2gBodyType->PowerDeliveryReq_isUsed = 0u; + v2gBodyType->PowerDeliveryRes_isUsed = 0u; + v2gBodyType->MeteringReceiptReq_isUsed = 0u; + v2gBodyType->MeteringReceiptRes_isUsed = 0u; + v2gBodyType->SessionStopReq_isUsed = 0u; + v2gBodyType->SessionStopRes_isUsed = 0u; + v2gBodyType->CertificateUpdateReq_isUsed = 0u; + v2gBodyType->CertificateUpdateRes_isUsed = 0u; + v2gBodyType->CertificateInstallationReq_isUsed = 0u; + v2gBodyType->CertificateInstallationRes_isUsed = 0u; + v2gBodyType->ChargingStatusReq_isUsed = 0u; + v2gBodyType->ChargingStatusRes_isUsed = 0u; + v2gBodyType->CableCheckReq_isUsed = 0u; + v2gBodyType->CableCheckRes_isUsed = 0u; + v2gBodyType->PreChargeReq_isUsed = 0u; + v2gBodyType->PreChargeRes_isUsed = 0u; + v2gBodyType->CurrentDemandReq_isUsed = 0u; + v2gBodyType->CurrentDemandRes_isUsed = 0u; + v2gBodyType->WeldingDetectionReq_isUsed = 0u; + v2gBodyType->WeldingDetectionRes_isUsed = 0u; +} + +void init_v2gPaymentServiceSelectionReqType(struct v2gPaymentServiceSelectionReqType* v2gPaymentServiceSelectionReqType) { +} + +void init_v2gEVSEStatusType(struct v2gEVSEStatusType* v2gEVSEStatusType) { +} + +void init_v2gSelectedServiceType(struct v2gSelectedServiceType* v2gSelectedServiceType) { + v2gSelectedServiceType->ParameterSetID_isUsed = 0u; +} + +void init_v2gEntryType(struct v2gEntryType* v2gEntryType) { + v2gEntryType->TimeInterval_isUsed = 0u; + v2gEntryType->RelativeTimeInterval_isUsed = 0u; +} + +void init_v2gDC_EVSEChargeParameterType(struct v2gDC_EVSEChargeParameterType* v2gDC_EVSEChargeParameterType) { + v2gDC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed = 0u; + v2gDC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed = 0u; +} + +void init_v2gSalesTariffType(struct v2gSalesTariffType* v2gSalesTariffType) { + v2gSalesTariffType->Id_isUsed = 0u; + v2gSalesTariffType->SalesTariffDescription_isUsed = 0u; + v2gSalesTariffType->NumEPriceLevels_isUsed = 0u; + v2gSalesTariffType->SalesTariffEntry.arrayLen = 0u; +} + +void init_v2gPMaxScheduleType(struct v2gPMaxScheduleType* v2gPMaxScheduleType) { + v2gPMaxScheduleType->PMaxScheduleEntry.arrayLen = 0u; +} + +void init_v2gCostType(struct v2gCostType* v2gCostType) { + v2gCostType->amountMultiplier_isUsed = 0u; +} + +void init_v2gChargeServiceType(struct v2gChargeServiceType* v2gChargeServiceType) { + v2gChargeServiceType->ServiceName_isUsed = 0u; + v2gChargeServiceType->ServiceScope_isUsed = 0u; +} + +void init_v2gPMaxScheduleEntryType(struct v2gPMaxScheduleEntryType* v2gPMaxScheduleEntryType) { + v2gPMaxScheduleEntryType->TimeInterval_isUsed = 0u; + v2gPMaxScheduleEntryType->RelativeTimeInterval_isUsed = 0u; +} + +void init_v2gServiceListType(struct v2gServiceListType* v2gServiceListType) { + v2gServiceListType->Service.arrayLen = 0u; +} + +void init_v2gKeyValueType(struct v2gKeyValueType* v2gKeyValueType) { + v2gKeyValueType->DSAKeyValue_isUsed = 0u; + v2gKeyValueType->RSAKeyValue_isUsed = 0u; +} + +void init_v2gPaymentServiceSelectionResType(struct v2gPaymentServiceSelectionResType* v2gPaymentServiceSelectionResType) { +} + +void init_v2gSignatureMethodType(struct v2gSignatureMethodType* v2gSignatureMethodType) { + v2gSignatureMethodType->HMACOutputLength_isUsed = 0u; +} + +void init_v2gMeteringReceiptResType(struct v2gMeteringReceiptResType* v2gMeteringReceiptResType) { + v2gMeteringReceiptResType->EVSEStatus_isUsed = 0u; + v2gMeteringReceiptResType->AC_EVSEStatus_isUsed = 0u; + v2gMeteringReceiptResType->DC_EVSEStatus_isUsed = 0u; +} + +void init_v2gMessageHeaderType(struct v2gMessageHeaderType* v2gMessageHeaderType) { + v2gMessageHeaderType->Notification_isUsed = 0u; + v2gMessageHeaderType->Signature_isUsed = 0u; +} + +void init_v2gRetrievalMethodType(struct v2gRetrievalMethodType* v2gRetrievalMethodType) { + v2gRetrievalMethodType->URI_isUsed = 0u; + v2gRetrievalMethodType->Type_isUsed = 0u; + v2gRetrievalMethodType->Transforms_isUsed = 0u; +} + +void init_v2gEVChargeParameterType(struct v2gEVChargeParameterType* v2gEVChargeParameterType) { + v2gEVChargeParameterType->DepartureTime_isUsed = 0u; +} + +void init_v2gCertificateInstallationReqType(struct v2gCertificateInstallationReqType* v2gCertificateInstallationReqType) { +} + +void init_v2gChargeParameterDiscoveryResType(struct v2gChargeParameterDiscoveryResType* v2gChargeParameterDiscoveryResType) { + v2gChargeParameterDiscoveryResType->SASchedules_isUsed = 0u; + v2gChargeParameterDiscoveryResType->SAScheduleList_isUsed = 0u; + v2gChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed = 0u; + v2gChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 0u; + v2gChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 0u; +} + +void init_v2gWeldingDetectionReqType(struct v2gWeldingDetectionReqType* v2gWeldingDetectionReqType) { +} + +void init_v2gCableCheckReqType(struct v2gCableCheckReqType* v2gCableCheckReqType) { +} + +void init_v2gParameterType(struct v2gParameterType* v2gParameterType) { + v2gParameterType->boolValue_isUsed = 0u; + v2gParameterType->byteValue_isUsed = 0u; + v2gParameterType->shortValue_isUsed = 0u; + v2gParameterType->intValue_isUsed = 0u; + v2gParameterType->physicalValue_isUsed = 0u; + v2gParameterType->stringValue_isUsed = 0u; +} + +void init_v2gEVSEChargeParameterType(struct v2gEVSEChargeParameterType* v2gEVSEChargeParameterType) { +} + +void init_v2gManifestType(struct v2gManifestType* v2gManifestType) { + v2gManifestType->Id_isUsed = 0u; + v2gManifestType->Reference.arrayLen = 0u; +} + +void init_v2gDC_EVStatusType(struct v2gDC_EVStatusType* v2gDC_EVStatusType) { +} + +void init_v2gPaymentDetailsReqType(struct v2gPaymentDetailsReqType* v2gPaymentDetailsReqType) { +} + +void init_v2gSAScheduleListType(struct v2gSAScheduleListType* v2gSAScheduleListType) { + v2gSAScheduleListType->SAScheduleTuple.arrayLen = 0u; +} + +void init_v2gRSAKeyValueType(struct v2gRSAKeyValueType* v2gRSAKeyValueType) { +} + +void init_v2gAC_EVSEChargeParameterType(struct v2gAC_EVSEChargeParameterType* v2gAC_EVSEChargeParameterType) { +} + +void init_v2gTransformsType(struct v2gTransformsType* v2gTransformsType) { + v2gTransformsType->Transform.arrayLen = 0u; +} + +void init_v2gWeldingDetectionResType(struct v2gWeldingDetectionResType* v2gWeldingDetectionResType) { +} + +void init_v2gConsumptionCostType(struct v2gConsumptionCostType* v2gConsumptionCostType) { + v2gConsumptionCostType->Cost.arrayLen = 0u; +} + +void init_v2gChargingStatusResType(struct v2gChargingStatusResType* v2gChargingStatusResType) { + v2gChargingStatusResType->EVSEMaxCurrent_isUsed = 0u; + v2gChargingStatusResType->MeterInfo_isUsed = 0u; + v2gChargingStatusResType->ReceiptRequired_isUsed = 0u; +} + +void init_v2gEVStatusType(struct v2gEVStatusType* v2gEVStatusType) { +} + +void init_v2gPGPDataType(struct v2gPGPDataType* v2gPGPDataType) { + v2gPGPDataType->PGPKeyID_isUsed = 0u; + v2gPGPDataType->PGPKeyPacket_isUsed = 0u; +} + +void init_v2gSessionStopResType(struct v2gSessionStopResType* v2gSessionStopResType) { +} + +void init_v2gServiceDiscoveryReqType(struct v2gServiceDiscoveryReqType* v2gServiceDiscoveryReqType) { + v2gServiceDiscoveryReqType->ServiceScope_isUsed = 0u; + v2gServiceDiscoveryReqType->ServiceCategory_isUsed = 0u; +} + +void init_v2gAuthorizationReqType(struct v2gAuthorizationReqType* v2gAuthorizationReqType) { + v2gAuthorizationReqType->Id_isUsed = 0u; + v2gAuthorizationReqType->GenChallenge_isUsed = 0u; +} + +void init_v2gSAScheduleTupleType(struct v2gSAScheduleTupleType* v2gSAScheduleTupleType) { + v2gSAScheduleTupleType->SalesTariff_isUsed = 0u; +} + +void init_v2gPhysicalValueType(struct v2gPhysicalValueType* v2gPhysicalValueType) { +} + +void init_v2gDigestMethodType(struct v2gDigestMethodType* v2gDigestMethodType) { +} + +void init_v2gAC_EVSEStatusType(struct v2gAC_EVSEStatusType* v2gAC_EVSEStatusType) { +} + +void init_v2gSessionSetupResType(struct v2gSessionSetupResType* v2gSessionSetupResType) { + v2gSessionSetupResType->EVSETimeStamp_isUsed = 0u; +} + +void init_v2gX509IssuerSerialType(struct v2gX509IssuerSerialType* v2gX509IssuerSerialType) { +} + +void init_v2gSessionStopReqType(struct v2gSessionStopReqType* v2gSessionStopReqType) { +} + +void init_v2gDC_EVSEStatusType(struct v2gDC_EVSEStatusType* v2gDC_EVSEStatusType) { + v2gDC_EVSEStatusType->EVSEIsolationStatus_isUsed = 0u; +} + +void init_v2gDiffieHellmanPublickeyType(struct v2gDiffieHellmanPublickeyType* v2gDiffieHellmanPublickeyType) { +} + +void init_v2gCertificateUpdateReqType(struct v2gCertificateUpdateReqType* v2gCertificateUpdateReqType) { +} + +void init_v2gBodyBaseType(struct v2gBodyBaseType* v2gBodyBaseType) { +} + +void init_v2gDC_EVChargeParameterType(struct v2gDC_EVChargeParameterType* v2gDC_EVChargeParameterType) { + v2gDC_EVChargeParameterType->DepartureTime_isUsed = 0u; + v2gDC_EVChargeParameterType->EVMaximumPowerLimit_isUsed = 0u; + v2gDC_EVChargeParameterType->EVEnergyCapacity_isUsed = 0u; + v2gDC_EVChargeParameterType->EVEnergyRequest_isUsed = 0u; + v2gDC_EVChargeParameterType->FullSOC_isUsed = 0u; + v2gDC_EVChargeParameterType->BulkSOC_isUsed = 0u; +} + +void init_v2gSubCertificatesType(struct v2gSubCertificatesType* v2gSubCertificatesType) { + v2gSubCertificatesType->Certificate.arrayLen = 0u; +} + +void init_v2gSupportedEnergyTransferModeType(struct v2gSupportedEnergyTransferModeType* v2gSupportedEnergyTransferModeType) { + v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen = 0u; +} + +void init_v2gChargingStatusReqType(struct v2gChargingStatusReqType* v2gChargingStatusReqType) { +} + +void init_v2gSignaturePropertyType(struct v2gSignaturePropertyType* v2gSignaturePropertyType) { + v2gSignaturePropertyType->Id_isUsed = 0u; +} + +void init_v2gContractSignatureEncryptedPrivateKeyType(struct v2gContractSignatureEncryptedPrivateKeyType* v2gContractSignatureEncryptedPrivateKeyType) { +} + +void init_v2gReferenceType(struct v2gReferenceType* v2gReferenceType) { + v2gReferenceType->Id_isUsed = 0u; + v2gReferenceType->URI_isUsed = 0u; + v2gReferenceType->Type_isUsed = 0u; + v2gReferenceType->Transforms_isUsed = 0u; +} + +void init_v2gCurrentDemandResType(struct v2gCurrentDemandResType* v2gCurrentDemandResType) { + v2gCurrentDemandResType->EVSEMaximumVoltageLimit_isUsed = 0u; + v2gCurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 0u; + v2gCurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 0u; + v2gCurrentDemandResType->MeterInfo_isUsed = 0u; + v2gCurrentDemandResType->ReceiptRequired_isUsed = 0u; +} + +void init_v2gCanonicalizationMethodType(struct v2gCanonicalizationMethodType* v2gCanonicalizationMethodType) { +} + +void init_v2gTransformType(struct v2gTransformType* v2gTransformType) { + v2gTransformType->XPath.arrayLen = 0u; +} + +void init_v2gCertificateChainType(struct v2gCertificateChainType* v2gCertificateChainType) { + v2gCertificateChainType->Id_isUsed = 0u; + v2gCertificateChainType->SubCertificates_isUsed = 0u; +} + +void init_v2gSignatureValueType(struct v2gSignatureValueType* v2gSignatureValueType) { + v2gSignatureValueType->Id_isUsed = 0u; +} + +void init_v2gEVPowerDeliveryParameterType(struct v2gEVPowerDeliveryParameterType* v2gEVPowerDeliveryParameterType) { +} + +void init_v2gServiceDetailReqType(struct v2gServiceDetailReqType* v2gServiceDetailReqType) { +} + +void init_v2gPaymentDetailsResType(struct v2gPaymentDetailsResType* v2gPaymentDetailsResType) { +} + +void init_v2gX509DataType(struct v2gX509DataType* v2gX509DataType) { + v2gX509DataType->X509IssuerSerial.arrayLen = 0u; + v2gX509DataType->X509SKI.arrayLen = 0u; + v2gX509DataType->X509SubjectName.arrayLen = 0u; + v2gX509DataType->X509Certificate.arrayLen = 0u; + v2gX509DataType->X509CRL.arrayLen = 0u; +} + +void init_v2gDSAKeyValueType(struct v2gDSAKeyValueType* v2gDSAKeyValueType) { + v2gDSAKeyValueType->P_isUsed = 0u; + v2gDSAKeyValueType->Q_isUsed = 0u; + v2gDSAKeyValueType->G_isUsed = 0u; + v2gDSAKeyValueType->J_isUsed = 0u; + v2gDSAKeyValueType->Seed_isUsed = 0u; + v2gDSAKeyValueType->PgenCounter_isUsed = 0u; +} + +void init_v2gPowerDeliveryResType(struct v2gPowerDeliveryResType* v2gPowerDeliveryResType) { + v2gPowerDeliveryResType->EVSEStatus_isUsed = 0u; + v2gPowerDeliveryResType->AC_EVSEStatus_isUsed = 0u; + v2gPowerDeliveryResType->DC_EVSEStatus_isUsed = 0u; +} + +void init_v2gChargeParameterDiscoveryReqType(struct v2gChargeParameterDiscoveryReqType* v2gChargeParameterDiscoveryReqType) { + v2gChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple_isUsed = 0u; + v2gChargeParameterDiscoveryReqType->EVChargeParameter_isUsed = 0u; + v2gChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 0u; + v2gChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 0u; +} + +void init_v2gParameterSetType(struct v2gParameterSetType* v2gParameterSetType) { + v2gParameterSetType->Parameter.arrayLen = 0u; +} + +void init_v2gServiceDiscoveryResType(struct v2gServiceDiscoveryResType* v2gServiceDiscoveryResType) { + v2gServiceDiscoveryResType->ServiceList_isUsed = 0u; +} + +void init_v2gAnonType_V2G_Message(struct v2gAnonType_V2G_Message* v2gAnonType_V2G_Message) { +} + +void init_v2gSignatureType(struct v2gSignatureType* v2gSignatureType) { + v2gSignatureType->Id_isUsed = 0u; + v2gSignatureType->KeyInfo_isUsed = 0u; + v2gSignatureType->Object.arrayLen = 0u; +} + +void init_v2gEMAIDType(struct v2gEMAIDType* v2gEMAIDType) { +} + +void init_v2gCertificateInstallationResType(struct v2gCertificateInstallationResType* v2gCertificateInstallationResType) { +} + +void init_v2gCableCheckResType(struct v2gCableCheckResType* v2gCableCheckResType) { +} + +void init_v2gMeterInfoType(struct v2gMeterInfoType* v2gMeterInfoType) { + v2gMeterInfoType->MeterReading_isUsed = 0u; + v2gMeterInfoType->SigMeterReading_isUsed = 0u; + v2gMeterInfoType->MeterStatus_isUsed = 0u; + v2gMeterInfoType->TMeter_isUsed = 0u; +} + +void init_v2gAC_EVChargeParameterType(struct v2gAC_EVChargeParameterType* v2gAC_EVChargeParameterType) { + v2gAC_EVChargeParameterType->DepartureTime_isUsed = 0u; +} + +void init_v2gServiceParameterListType(struct v2gServiceParameterListType* v2gServiceParameterListType) { + v2gServiceParameterListType->ParameterSet.arrayLen = 0u; +} + +void init_v2gCurrentDemandReqType(struct v2gCurrentDemandReqType* v2gCurrentDemandReqType) { + v2gCurrentDemandReqType->EVMaximumVoltageLimit_isUsed = 0u; + v2gCurrentDemandReqType->EVMaximumCurrentLimit_isUsed = 0u; + v2gCurrentDemandReqType->EVMaximumPowerLimit_isUsed = 0u; + v2gCurrentDemandReqType->BulkChargingComplete_isUsed = 0u; + v2gCurrentDemandReqType->RemainingTimeToFullSoC_isUsed = 0u; + v2gCurrentDemandReqType->RemainingTimeToBulkSoC_isUsed = 0u; +} + +void init_v2gSASchedulesType(struct v2gSASchedulesType* v2gSASchedulesType) { +} + +void init_v2gIntervalType(struct v2gIntervalType* v2gIntervalType) { +} + +void init_v2gPreChargeResType(struct v2gPreChargeResType* v2gPreChargeResType) { +} + +void init_v2gSalesTariffEntryType(struct v2gSalesTariffEntryType* v2gSalesTariffEntryType) { + v2gSalesTariffEntryType->TimeInterval_isUsed = 0u; + v2gSalesTariffEntryType->RelativeTimeInterval_isUsed = 0u; + v2gSalesTariffEntryType->EPriceLevel_isUsed = 0u; + v2gSalesTariffEntryType->ConsumptionCost.arrayLen = 0u; +} + +void init_v2gPaymentOptionListType(struct v2gPaymentOptionListType* v2gPaymentOptionListType) { + v2gPaymentOptionListType->PaymentOption.arrayLen = 0u; +} + +void init_v2gSignedInfoType(struct v2gSignedInfoType* v2gSignedInfoType) { + v2gSignedInfoType->Id_isUsed = 0u; + v2gSignedInfoType->Reference.arrayLen = 0u; +} + +void init_v2gSessionSetupReqType(struct v2gSessionSetupReqType* v2gSessionSetupReqType) { +} + +void init_v2gSignaturePropertiesType(struct v2gSignaturePropertiesType* v2gSignaturePropertiesType) { + v2gSignaturePropertiesType->Id_isUsed = 0u; + v2gSignaturePropertiesType->SignatureProperty.arrayLen = 0u; +} + +void init_v2gProfileEntryType(struct v2gProfileEntryType* v2gProfileEntryType) { + v2gProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed = 0u; +} + +void init_v2gPreChargeReqType(struct v2gPreChargeReqType* v2gPreChargeReqType) { +} + +void init_v2gListOfRootCertificateIDsType(struct v2gListOfRootCertificateIDsType* v2gListOfRootCertificateIDsType) { + v2gListOfRootCertificateIDsType->RootCertificateID.arrayLen = 0u; +} + +void init_v2gDC_EVPowerDeliveryParameterType(struct v2gDC_EVPowerDeliveryParameterType* v2gDC_EVPowerDeliveryParameterType) { + v2gDC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed = 0u; +} + +void init_v2gRelativeTimeIntervalType(struct v2gRelativeTimeIntervalType* v2gRelativeTimeIntervalType) { + v2gRelativeTimeIntervalType->duration_isUsed = 0u; +} + +void init_v2gChargingProfileType(struct v2gChargingProfileType* v2gChargingProfileType) { + v2gChargingProfileType->ProfileEntry.arrayLen = 0u; +} + +void init_v2gCertificateUpdateResType(struct v2gCertificateUpdateResType* v2gCertificateUpdateResType) { + v2gCertificateUpdateResType->RetryCounter_isUsed = 0u; +} + +void init_v2gMeteringReceiptReqType(struct v2gMeteringReceiptReqType* v2gMeteringReceiptReqType) { + v2gMeteringReceiptReqType->Id_isUsed = 0u; + v2gMeteringReceiptReqType->SAScheduleTupleID_isUsed = 0u; +} + +void init_v2gServiceType(struct v2gServiceType* v2gServiceType) { + v2gServiceType->ServiceName_isUsed = 0u; + v2gServiceType->ServiceScope_isUsed = 0u; +} + +void init_v2gNotificationType(struct v2gNotificationType* v2gNotificationType) { + v2gNotificationType->FaultMsg_isUsed = 0u; +} + +void init_v2gKeyInfoType(struct v2gKeyInfoType* v2gKeyInfoType) { + v2gKeyInfoType->Id_isUsed = 0u; + v2gKeyInfoType->KeyName.arrayLen = 0u; + v2gKeyInfoType->KeyValue.arrayLen = 0u; + v2gKeyInfoType->RetrievalMethod.arrayLen = 0u; + v2gKeyInfoType->X509Data.arrayLen = 0u; + v2gKeyInfoType->PGPData.arrayLen = 0u; + v2gKeyInfoType->SPKIData.arrayLen = 0u; + v2gKeyInfoType->MgmtData.arrayLen = 0u; +} + +void init_v2gSelectedServiceListType(struct v2gSelectedServiceListType* v2gSelectedServiceListType) { + v2gSelectedServiceListType->SelectedService.arrayLen = 0u; +} + +void init_v2gPowerDeliveryReqType(struct v2gPowerDeliveryReqType* v2gPowerDeliveryReqType) { + v2gPowerDeliveryReqType->ChargingProfile_isUsed = 0u; + v2gPowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 0u; + v2gPowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 0u; +} + +void init_v2gObjectType(struct v2gObjectType* v2gObjectType) { + v2gObjectType->Id_isUsed = 0u; + v2gObjectType->MimeType_isUsed = 0u; + v2gObjectType->Encoding_isUsed = 0u; +} + + + + + +#endif + diff --git a/src/codec/v2gEXIDatatypes.h b/src/codec/v2gEXIDatatypes.h new file mode 100644 index 0000000..99b8d67 --- /dev/null +++ b/src/codec/v2gEXIDatatypes.h @@ -0,0 +1,2225 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.9 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer

+ *

Schema: V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + +/** + * \file EXIDatatypes.h + * \brief Datatype definitions and structs for given XML Schema definitions and initialization methods + * + */ + +#ifndef EXI_v2g_DATATYPES_H +#define EXI_v2g_DATATYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#include + +#include "EXITypes.h" + + +/* Datatype definitions and structs for given XML Schema definitions */ + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SPKIDataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SPKISexp,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-1}){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +#define v2gSPKIDataType_SPKISexp_BYTES_SIZE 350 +#define v2gSPKIDataType_SPKISexp_ARRAY_SIZE 0 +struct v2gSPKIDataType { + /* element: "http://www.w3.org/2000/09/xmldsig#":SPKISexp, http://www.w3.org/2001/XMLSchema,base64Binary */ + struct { + struct { + uint8_t bytes[v2gSPKIDataType_SPKISexp_BYTES_SIZE]; + uint16_t bytesLen; + } array[v2gSPKIDataType_SPKISexp_ARRAY_SIZE]; + uint16_t arrayLen; + } SPKISexp; +}; + +typedef enum { + DC_EVErrorCodeType_NO_ERROR = 0, + DC_EVErrorCodeType_FAILED_RESSTemperatureInhibit = 1, + DC_EVErrorCodeType_FAILED_EVShiftPosition = 2, + DC_EVErrorCodeType_FAILED_ChargerConnectorLockFault = 3, + DC_EVErrorCodeType_FAILED_EVRESSMalfunction = 4, + DC_EVErrorCodeType_FAILED_ChargingCurrentdifferential = 5, + DC_EVErrorCodeType_FAILED_ChargingVoltageOutOfRange = 6, + DC_EVErrorCodeType_Reserved_A = 7, + DC_EVErrorCodeType_Reserved_B = 8, + DC_EVErrorCodeType_Reserved_C = 9, + DC_EVErrorCodeType_FAILED_ChargingSystemIncompatibility = 10, + DC_EVErrorCodeType_NoData = 11 +} v2gDC_EVErrorCodeType; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SelectedServiceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID{0-1})', derivedBy='RESTRICTION'. */ +struct v2gSelectedServiceType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ServiceID, urn:iso:15118:2:2013:MsgDataTypes,serviceIDType */ + uint16_t ServiceID ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID, http://www.w3.org/2001/XMLSchema,short */ + int16_t ParameterSetID ; + unsigned int ParameterSetID_isUsed:1; +}; + +typedef enum { + chargeProgressType_Start = 0, + chargeProgressType_Stop = 1, + chargeProgressType_Renegotiate = 2 +} v2gchargeProgressType; + +typedef enum { + isolationLevelType_Invalid = 0, + isolationLevelType_Valid = 1, + isolationLevelType_Warning = 2, + isolationLevelType_Fault = 3, + isolationLevelType_No_IMD = 4 +} v2gisolationLevelType; + +typedef enum { + paymentOptionType_Contract = 0, + paymentOptionType_ExternalPayment = 1 +} v2gpaymentOptionType; + +typedef enum { + responseCodeType_OK = 0, + responseCodeType_OK_NewSessionEstablished = 1, + responseCodeType_OK_OldSessionJoined = 2, + responseCodeType_OK_CertificateExpiresSoon = 3, + responseCodeType_FAILED = 4, + responseCodeType_FAILED_SequenceError = 5, + responseCodeType_FAILED_ServiceIDInvalid = 6, + responseCodeType_FAILED_UnknownSession = 7, + responseCodeType_FAILED_ServiceSelectionInvalid = 8, + responseCodeType_FAILED_PaymentSelectionInvalid = 9, + responseCodeType_FAILED_CertificateExpired = 10, + responseCodeType_FAILED_SignatureError = 11, + responseCodeType_FAILED_NoCertificateAvailable = 12, + responseCodeType_FAILED_CertChainError = 13, + responseCodeType_FAILED_ChallengeInvalid = 14, + responseCodeType_FAILED_ContractCanceled = 15, + responseCodeType_FAILED_WrongChargeParameter = 16, + responseCodeType_FAILED_PowerDeliveryNotApplied = 17, + responseCodeType_FAILED_TariffSelectionInvalid = 18, + responseCodeType_FAILED_ChargingProfileInvalid = 19, + responseCodeType_FAILED_MeteringSignatureNotValid = 20, + responseCodeType_FAILED_NoChargeServiceSelected = 21, + responseCodeType_FAILED_WrongEnergyTransferMode = 22, + responseCodeType_FAILED_ContactorError = 23, + responseCodeType__FAILED_CertificateNotAllowedAtThisEVSE = 24, + responseCodeType_FAILED_CertificateRevoked = 25 +} v2gresponseCodeType; + +typedef enum { + EVSENotificationType_None = 0, + EVSENotificationType_StopCharging = 1, + EVSENotificationType_ReNegotiation = 2 +} v2gEVSENotificationType; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":HMACOutputLength{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gSignatureMethodType_Algorithm_CHARACTERS_SIZE 50 +struct v2gSignatureMethodType { + /* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */ + struct { + exi_string_character_t characters[v2gSignatureMethodType_Algorithm_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Algorithm ; + /* element: "http://www.w3.org/2000/09/xmldsig#":HMACOutputLength, http://www.w3.org/2000/09/xmldsig#,HMACOutputLengthType */ + int64_t HMACOutputLength ; + unsigned int HMACOutputLength_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentServiceSelectionResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode)', derivedBy='EXTENSION'. */ +struct v2gPaymentServiceSelectionResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; +}; + +typedef enum { + valueType_bool = 0, + valueType_byte = 1, + valueType_short = 2, + valueType_int = 3, + valueType_physicalValue = 4, + valueType_string = 5 +} v2gvalueType; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVChargeParameterType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1})', derivedBy='RESTRICTION'. */ +struct v2gEVChargeParameterType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":DepartureTime, http://www.w3.org/2001/XMLSchema,unsignedInt */ + uint32_t DepartureTime ; + unsigned int DepartureTime_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVSEChargeParameterType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +struct v2gEVSEChargeParameterType { + int noContent; /* avoid warning */ +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVStatusType', base type name='EVStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EVReady,"urn:iso:15118:2:2013:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2013:MsgDataTypes":EVRESSSOC)', derivedBy='EXTENSION'. */ +struct v2gDC_EVStatusType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVReady, http://www.w3.org/2001/XMLSchema,boolean */ + int EVReady ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVErrorCode, urn:iso:15118:2:2013:MsgDataTypes,DC_EVErrorCodeType */ + v2gDC_EVErrorCodeType EVErrorCode ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVRESSSOC, urn:iso:15118:2:2013:MsgDataTypes,percentValueType */ + int8_t EVRESSSOC ; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,RSAKeyValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Modulus,"http://www.w3.org/2000/09/xmldsig#":Exponent)', derivedBy='RESTRICTION'. */ +#define v2gRSAKeyValueType_Modulus_BYTES_SIZE 350 +#define v2gRSAKeyValueType_Exponent_BYTES_SIZE 350 +struct v2gRSAKeyValueType { + /* element: "http://www.w3.org/2000/09/xmldsig#":Modulus, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */ + struct { + uint8_t bytes[v2gRSAKeyValueType_Modulus_BYTES_SIZE]; + uint16_t bytesLen; + } Modulus ; + /* element: "http://www.w3.org/2000/09/xmldsig#":Exponent, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */ + struct { + uint8_t bytes[v2gRSAKeyValueType_Exponent_BYTES_SIZE]; + uint16_t bytesLen; + } Exponent ; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,PGPDataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":PGPKeyID,"http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})|("http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED}))', derivedBy='RESTRICTION'. */ +#define v2gPGPDataType_PGPKeyID_BYTES_SIZE 350 +#define v2gPGPDataType_PGPKeyPacket_BYTES_SIZE 350 +struct v2gPGPDataType { + /* element: "http://www.w3.org/2000/09/xmldsig#":PGPKeyID, http://www.w3.org/2001/XMLSchema,base64Binary */ + struct { + uint8_t bytes[v2gPGPDataType_PGPKeyID_BYTES_SIZE]; + uint16_t bytesLen; + } PGPKeyID ; + unsigned int PGPKeyID_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket, http://www.w3.org/2001/XMLSchema,base64Binary */ + struct { + uint8_t bytes[v2gPGPDataType_PGPKeyPacket_BYTES_SIZE]; + uint16_t bytesLen; + } PGPKeyPacket ; + unsigned int PGPKeyPacket_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVStatusType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +struct v2gEVStatusType { + int noContent; /* avoid warning */ +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionStopResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode)', derivedBy='EXTENSION'. */ +struct v2gSessionStopResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,AuthorizationReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":GenChallenge{0-1})', derivedBy='EXTENSION'. */ +#define v2gAuthorizationReqType_Id_CHARACTERS_SIZE 50 +#define v2gAuthorizationReqType_GenChallenge_BYTES_SIZE 16 /* XML schema facet length for urn:iso:15118:2:2013:MsgDataTypes,genChallengeType is 16 */ +struct v2gAuthorizationReqType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gAuthorizationReqType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":GenChallenge, urn:iso:15118:2:2013:MsgDataTypes,genChallengeType */ + struct { + uint8_t bytes[v2gAuthorizationReqType_GenChallenge_BYTES_SIZE]; + uint16_t bytesLen; + } GenChallenge ; + unsigned int GenChallenge_isUsed:1; +}; + +typedef enum { + serviceCategoryType_EVCharging = 0, + serviceCategoryType_Internet = 1, + serviceCategoryType_ContractCertificate = 2, + serviceCategoryType_OtherCustom = 3 +} v2gserviceCategoryType; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,DigestMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gDigestMethodType_Algorithm_CHARACTERS_SIZE 50 +struct v2gDigestMethodType { + /* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */ + struct { + exi_string_character_t characters[v2gDigestMethodType_Algorithm_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Algorithm ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":RCD))', derivedBy='EXTENSION'. */ +struct v2gAC_EVSEStatusType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay, http://www.w3.org/2001/XMLSchema,unsignedShort */ + uint16_t NotificationMaxDelay ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSENotification, urn:iso:15118:2:2013:MsgDataTypes,EVSENotificationType */ + v2gEVSENotificationType EVSENotification ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":RCD, http://www.w3.org/2001/XMLSchema,boolean */ + int RCD ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionSetupResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":EVSETimeStamp{0-1})', derivedBy='EXTENSION'. */ +#define v2gSessionSetupResType_EVSEID_CHARACTERS_SIZE 37 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,evseIDType is 37 */ +struct v2gSessionSetupResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEID, urn:iso:15118:2:2013:MsgDataTypes,evseIDType */ + struct { + exi_string_character_t characters[v2gSessionSetupResType_EVSEID_CHARACTERS_SIZE]; + uint16_t charactersLen; + } EVSEID ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSETimeStamp, http://www.w3.org/2001/XMLSchema,long */ + int64_t EVSETimeStamp ; + unsigned int EVSETimeStamp_isUsed:1; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509IssuerSerialType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":X509IssuerName,"http://www.w3.org/2000/09/xmldsig#":X509SerialNumber)', derivedBy='RESTRICTION'. */ +#define v2gX509IssuerSerialType_X509IssuerName_CHARACTERS_SIZE 50 +struct v2gX509IssuerSerialType { + /* element: "http://www.w3.org/2000/09/xmldsig#":X509IssuerName, http://www.w3.org/2001/XMLSchema,string */ + struct { + exi_string_character_t characters[v2gX509IssuerSerialType_X509IssuerName_CHARACTERS_SIZE]; + uint16_t charactersLen; + } X509IssuerName ; + /* element: "http://www.w3.org/2000/09/xmldsig#":X509SerialNumber, http://www.w3.org/2001/XMLSchema,integer */ + int64_t X509SerialNumber ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DiffieHellmanPublickeyType', base type name='dHpublickeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +#define v2gDiffieHellmanPublickeyType_Id_CHARACTERS_SIZE 50 +#define v2gDiffieHellmanPublickeyType_CONTENT_BYTES_SIZE 350 +struct v2gDiffieHellmanPublickeyType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gDiffieHellmanPublickeyType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + /* simple content: urn:iso:15118:2:2013:MsgDataTypes,dHpublickeyType */ + struct { + uint8_t bytes[v2gDiffieHellmanPublickeyType_CONTENT_BYTES_SIZE]; + uint16_t bytesLen; + } CONTENT ; +}; + +typedef enum { + costKindType_relativePricePercentage = 0, + costKindType_RenewableGenerationPercentage = 1, + costKindType_CarbonDioxideEmission = 2 +} v2gcostKindType; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,BodyBaseType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +struct v2gBodyBaseType { + int noContent; /* avoid warning */ +}; + +typedef enum { + faultCodeType_ParsingError = 0, + faultCodeType_NoTLSRootCertificatAvailable = 1, + faultCodeType_UnknownError = 2 +} v2gfaultCodeType; + +typedef enum { + EnergyTransferModeType_AC_single_phase_core = 0, + EnergyTransferModeType_AC_three_phase_core = 1, + EnergyTransferModeType_DC_core = 2, + EnergyTransferModeType_DC_extended = 3, + EnergyTransferModeType_DC_combo_core = 4, + EnergyTransferModeType_DC_unique = 5 +} v2gEnergyTransferModeType; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SubCertificatesType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate{1-4})', derivedBy='RESTRICTION'. */ +#define v2gSubCertificatesType_Certificate_BYTES_SIZE 800 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,certificateType is 800 */ +#define v2gSubCertificatesType_Certificate_ARRAY_SIZE 4 +struct v2gSubCertificatesType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":Certificate, urn:iso:15118:2:2013:MsgDataTypes,certificateType */ + struct { + struct { + uint8_t bytes[v2gSubCertificatesType_Certificate_BYTES_SIZE]; + uint16_t bytesLen; + } array[v2gSubCertificatesType_Certificate_ARRAY_SIZE]; + uint16_t arrayLen; + } Certificate; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargingStatusReqType', base type name='BodyBaseType', content type='EMPTY', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +struct v2gChargingStatusReqType { + int noContent; /* avoid warning */ +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SupportedEnergyTransferModeType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EnergyTransferMode{1-6})', derivedBy='RESTRICTION'. */ +#define v2gSupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE 5 +struct v2gSupportedEnergyTransferModeType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EnergyTransferMode, urn:iso:15118:2:2013:MsgDataTypes,EnergyTransferModeType */ + struct { + v2gEnergyTransferModeType array[v2gSupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE]; + uint16_t arrayLen; + } EnergyTransferMode; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertyType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +#define v2gSignaturePropertyType_Target_CHARACTERS_SIZE 50 +#define v2gSignaturePropertyType_Id_CHARACTERS_SIZE 50 +struct v2gSignaturePropertyType { + /* attribute: Target {http://www.w3.org/2001/XMLSchema,anyURI} */ + struct { + exi_string_character_t characters[v2gSignaturePropertyType_Target_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Target ; + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gSignaturePropertyType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; +}; + +typedef enum { + chargingSessionType_Terminate = 0, + chargingSessionType_Pause = 1 +} v2gchargingSessionType; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ContractSignatureEncryptedPrivateKeyType', base type name='privateKeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +#define v2gContractSignatureEncryptedPrivateKeyType_Id_CHARACTERS_SIZE 50 +#define v2gContractSignatureEncryptedPrivateKeyType_CONTENT_BYTES_SIZE 350 +struct v2gContractSignatureEncryptedPrivateKeyType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gContractSignatureEncryptedPrivateKeyType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + /* simple content: urn:iso:15118:2:2013:MsgDataTypes,privateKeyType */ + struct { + uint8_t bytes[v2gContractSignatureEncryptedPrivateKeyType_CONTENT_BYTES_SIZE]; + uint16_t bytesLen; + } CONTENT ; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,CanonicalizationMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##any]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gCanonicalizationMethodType_Algorithm_CHARACTERS_SIZE 50 +struct v2gCanonicalizationMethodType { + /* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */ + struct { + exi_string_character_t characters[v2gCanonicalizationMethodType_Algorithm_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Algorithm ; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])|"http://www.w3.org/2000/09/xmldsig#":XPath){0-UNBOUNDED}', derivedBy='RESTRICTION'. */ +#define v2gTransformType_Algorithm_CHARACTERS_SIZE 50 +#define v2gTransformType_XPath_CHARACTERS_SIZE 50 +#define v2gTransformType_XPath_ARRAY_SIZE 0 +struct v2gTransformType { + /* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */ + struct { + exi_string_character_t characters[v2gTransformType_Algorithm_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Algorithm ; + /* element: "http://www.w3.org/2000/09/xmldsig#":XPath, http://www.w3.org/2001/XMLSchema,string */ + struct { + struct { + exi_string_character_t characters[v2gTransformType_XPath_CHARACTERS_SIZE]; + uint16_t charactersLen; + } array[v2gTransformType_XPath_ARRAY_SIZE]; + uint16_t arrayLen; + } XPath; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CertificateChainType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate,"urn:iso:15118:2:2013:MsgDataTypes":SubCertificates{0-1})', derivedBy='RESTRICTION'. */ +#define v2gCertificateChainType_Id_CHARACTERS_SIZE 50 +#define v2gCertificateChainType_Certificate_BYTES_SIZE 800 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,certificateType is 800 */ +struct v2gCertificateChainType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gCertificateChainType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":Certificate, urn:iso:15118:2:2013:MsgDataTypes,certificateType */ + struct { + uint8_t bytes[v2gCertificateChainType_Certificate_BYTES_SIZE]; + uint16_t bytesLen; + } Certificate ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SubCertificates, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SubCertificatesType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate{1-4})', derivedBy='RESTRICTION'. */ + struct v2gSubCertificatesType SubCertificates ; + unsigned int SubCertificates_isUsed:1; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureValueType', base type name='base64Binary', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +#define v2gSignatureValueType_Id_CHARACTERS_SIZE 50 +#define v2gSignatureValueType_CONTENT_BYTES_SIZE 350 +struct v2gSignatureValueType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gSignatureValueType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* simple content: http://www.w3.org/2001/XMLSchema,base64Binary */ + struct { + uint8_t bytes[v2gSignatureValueType_CONTENT_BYTES_SIZE]; + uint16_t bytesLen; + } CONTENT ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVPowerDeliveryParameterType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +struct v2gEVPowerDeliveryParameterType { + int noContent; /* avoid warning */ +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentDetailsResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":GenChallenge,"urn:iso:15118:2:2013:MsgBody":EVSETimeStamp)', derivedBy='EXTENSION'. */ +#define v2gPaymentDetailsResType_GenChallenge_BYTES_SIZE 16 /* XML schema facet length for urn:iso:15118:2:2013:MsgDataTypes,genChallengeType is 16 */ +struct v2gPaymentDetailsResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":GenChallenge, urn:iso:15118:2:2013:MsgDataTypes,genChallengeType */ + struct { + uint8_t bytes[v2gPaymentDetailsResType_GenChallenge_BYTES_SIZE]; + uint16_t bytesLen; + } GenChallenge ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSETimeStamp, http://www.w3.org/2001/XMLSchema,long */ + int64_t EVSETimeStamp ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDetailReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ServiceID)', derivedBy='EXTENSION'. */ +struct v2gServiceDetailReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":ServiceID, urn:iso:15118:2:2013:MsgDataTypes,serviceIDType */ + uint16_t ServiceID ; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509DataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":X509IssuerSerial|"http://www.w3.org/2000/09/xmldsig#":X509SKI|"http://www.w3.org/2000/09/xmldsig#":X509SubjectName|"http://www.w3.org/2000/09/xmldsig#":X509Certificate|"http://www.w3.org/2000/09/xmldsig#":X509CRL|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +#define v2gX509DataType_X509IssuerSerial_ARRAY_SIZE 0 +#define v2gX509DataType_X509SKI_BYTES_SIZE 350 +#define v2gX509DataType_X509SKI_ARRAY_SIZE 0 +#define v2gX509DataType_X509SubjectName_CHARACTERS_SIZE 50 +#define v2gX509DataType_X509SubjectName_ARRAY_SIZE 0 +#define v2gX509DataType_X509Certificate_BYTES_SIZE 350 +#define v2gX509DataType_X509Certificate_ARRAY_SIZE 0 +#define v2gX509DataType_X509CRL_BYTES_SIZE 350 +#define v2gX509DataType_X509CRL_ARRAY_SIZE 0 +struct v2gX509DataType { + /* element: "http://www.w3.org/2000/09/xmldsig#":X509IssuerSerial, Complex type name='http://www.w3.org/2000/09/xmldsig#,X509IssuerSerialType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":X509IssuerName,"http://www.w3.org/2000/09/xmldsig#":X509SerialNumber)', derivedBy='RESTRICTION'. */ + struct { + struct v2gX509IssuerSerialType array[v2gX509DataType_X509IssuerSerial_ARRAY_SIZE]; + uint16_t arrayLen; + } X509IssuerSerial; + /* element: "http://www.w3.org/2000/09/xmldsig#":X509SKI, http://www.w3.org/2001/XMLSchema,base64Binary */ + struct { + struct { + uint8_t bytes[v2gX509DataType_X509SKI_BYTES_SIZE]; + uint16_t bytesLen; + } array[v2gX509DataType_X509SKI_ARRAY_SIZE]; + uint16_t arrayLen; + } X509SKI; + /* element: "http://www.w3.org/2000/09/xmldsig#":X509SubjectName, http://www.w3.org/2001/XMLSchema,string */ + struct { + struct { + exi_string_character_t characters[v2gX509DataType_X509SubjectName_CHARACTERS_SIZE]; + uint16_t charactersLen; + } array[v2gX509DataType_X509SubjectName_ARRAY_SIZE]; + uint16_t arrayLen; + } X509SubjectName; + /* element: "http://www.w3.org/2000/09/xmldsig#":X509Certificate, http://www.w3.org/2001/XMLSchema,base64Binary */ + struct { + struct { + uint8_t bytes[v2gX509DataType_X509Certificate_BYTES_SIZE]; + uint16_t bytesLen; + } array[v2gX509DataType_X509Certificate_ARRAY_SIZE]; + uint16_t arrayLen; + } X509Certificate; + /* element: "http://www.w3.org/2000/09/xmldsig#":X509CRL, http://www.w3.org/2001/XMLSchema,base64Binary */ + struct { + struct { + uint8_t bytes[v2gX509DataType_X509CRL_BYTES_SIZE]; + uint16_t bytesLen; + } array[v2gX509DataType_X509CRL_ARRAY_SIZE]; + uint16_t arrayLen; + } X509CRL; +}; + +typedef enum { + EVSEProcessingType_Finished = 0, + EVSEProcessingType_Ongoing = 1, + EVSEProcessingType_Ongoing_WaitingForCustomerInteraction = 2 +} v2gEVSEProcessingType; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,DSAKeyValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":P,"http://www.w3.org/2000/09/xmldsig#":Q){0-1},"http://www.w3.org/2000/09/xmldsig#":G{0-1},"http://www.w3.org/2000/09/xmldsig#":Y,"http://www.w3.org/2000/09/xmldsig#":J{0-1},("http://www.w3.org/2000/09/xmldsig#":Seed,"http://www.w3.org/2000/09/xmldsig#":PgenCounter){0-1})', derivedBy='RESTRICTION'. */ +#define v2gDSAKeyValueType_P_BYTES_SIZE 350 +#define v2gDSAKeyValueType_Q_BYTES_SIZE 350 +#define v2gDSAKeyValueType_G_BYTES_SIZE 350 +#define v2gDSAKeyValueType_Y_BYTES_SIZE 350 +#define v2gDSAKeyValueType_J_BYTES_SIZE 350 +#define v2gDSAKeyValueType_Seed_BYTES_SIZE 350 +#define v2gDSAKeyValueType_PgenCounter_BYTES_SIZE 350 +struct v2gDSAKeyValueType { + /* element: "http://www.w3.org/2000/09/xmldsig#":P, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */ + struct { + uint8_t bytes[v2gDSAKeyValueType_P_BYTES_SIZE]; + uint16_t bytesLen; + } P ; + unsigned int P_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":Q, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */ + struct { + uint8_t bytes[v2gDSAKeyValueType_Q_BYTES_SIZE]; + uint16_t bytesLen; + } Q ; + unsigned int Q_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":G, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */ + struct { + uint8_t bytes[v2gDSAKeyValueType_G_BYTES_SIZE]; + uint16_t bytesLen; + } G ; + unsigned int G_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":Y, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */ + struct { + uint8_t bytes[v2gDSAKeyValueType_Y_BYTES_SIZE]; + uint16_t bytesLen; + } Y ; + /* element: "http://www.w3.org/2000/09/xmldsig#":J, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */ + struct { + uint8_t bytes[v2gDSAKeyValueType_J_BYTES_SIZE]; + uint16_t bytesLen; + } J ; + unsigned int J_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":Seed, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */ + struct { + uint8_t bytes[v2gDSAKeyValueType_Seed_BYTES_SIZE]; + uint16_t bytesLen; + } Seed ; + unsigned int Seed_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":PgenCounter, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */ + struct { + uint8_t bytes[v2gDSAKeyValueType_PgenCounter_BYTES_SIZE]; + uint16_t bytesLen; + } PgenCounter ; + unsigned int PgenCounter_isUsed:1; +}; + +typedef enum { + DC_EVSEStatusCodeType_EVSE_NotReady = 0, + DC_EVSEStatusCodeType_EVSE_Ready = 1, + DC_EVSEStatusCodeType_EVSE_Shutdown = 2, + DC_EVSEStatusCodeType_EVSE_UtilityInterruptEvent = 3, + DC_EVSEStatusCodeType_EVSE_IsolationMonitoringActive = 4, + DC_EVSEStatusCodeType_EVSE_EmergencyShutdown = 5, + DC_EVSEStatusCodeType_EVSE_Malfunction = 6, + DC_EVSEStatusCodeType_Reserved_8 = 7, + DC_EVSEStatusCodeType_Reserved_9 = 8, + DC_EVSEStatusCodeType_Reserved_A = 9, + DC_EVSEStatusCodeType_Reserved_B = 10, + DC_EVSEStatusCodeType_Reserved_C = 11 +} v2gDC_EVSEStatusCodeType; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EMAIDType', base type name='eMAIDType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +#define v2gEMAIDType_Id_CHARACTERS_SIZE 50 +#define v2gEMAIDType_CONTENT_CHARACTERS_SIZE 50 +struct v2gEMAIDType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gEMAIDType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + /* simple content: urn:iso:15118:2:2013:MsgDataTypes,eMAIDType */ + struct { + exi_string_character_t characters[v2gEMAIDType_CONTENT_CHARACTERS_SIZE]; + uint16_t charactersLen; + } CONTENT ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,MeterInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":MeterID,"urn:iso:15118:2:2013:MsgDataTypes":MeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SigMeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":MeterStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":TMeter{0-1})', derivedBy='RESTRICTION'. */ +#define v2gMeterInfoType_MeterID_CHARACTERS_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,meterIDType is 32 */ +#define v2gMeterInfoType_SigMeterReading_BYTES_SIZE 64 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,sigMeterReadingType is 64 */ +struct v2gMeterInfoType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":MeterID, urn:iso:15118:2:2013:MsgDataTypes,meterIDType */ + struct { + exi_string_character_t characters[v2gMeterInfoType_MeterID_CHARACTERS_SIZE]; + uint16_t charactersLen; + } MeterID ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":MeterReading, http://www.w3.org/2001/XMLSchema,unsignedLong */ + uint64_t MeterReading ; + unsigned int MeterReading_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SigMeterReading, urn:iso:15118:2:2013:MsgDataTypes,sigMeterReadingType */ + struct { + uint8_t bytes[v2gMeterInfoType_SigMeterReading_BYTES_SIZE]; + uint16_t bytesLen; + } SigMeterReading ; + unsigned int SigMeterReading_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":MeterStatus, urn:iso:15118:2:2013:MsgDataTypes,meterStatusType */ + int16_t MeterStatus ; + unsigned int MeterStatus_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":TMeter, http://www.w3.org/2001/XMLSchema,long */ + int64_t TMeter ; + unsigned int TMeter_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,IntervalType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +struct v2gIntervalType { + int noContent; /* avoid warning */ +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SASchedulesType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +struct v2gSASchedulesType { + int noContent; /* avoid warning */ +}; + +typedef enum { + unitSymbolType_h = 0, + unitSymbolType_m = 1, + unitSymbolType_s = 2, + unitSymbolType_A = 3, + unitSymbolType_V = 4, + unitSymbolType_W = 5, + unitSymbolType_Wh = 6 +} v2gunitSymbolType; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PaymentOptionListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":PaymentOption{1-2})', derivedBy='RESTRICTION'. */ +#define v2gPaymentOptionListType_PaymentOption_ARRAY_SIZE 2 +struct v2gPaymentOptionListType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":PaymentOption, urn:iso:15118:2:2013:MsgDataTypes,paymentOptionType */ + struct { + v2gpaymentOptionType array[v2gPaymentOptionListType_PaymentOption_ARRAY_SIZE]; + uint16_t arrayLen; + } PaymentOption; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertiesType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SignatureProperty{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gSignaturePropertiesType_Id_CHARACTERS_SIZE 50 +#define v2gSignaturePropertiesType_SignatureProperty_ARRAY_SIZE 0 +struct v2gSignaturePropertiesType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gSignaturePropertiesType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":SignatureProperty, Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertyType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ + struct { + struct v2gSignaturePropertyType array[v2gSignaturePropertiesType_SignatureProperty_ARRAY_SIZE]; + uint16_t arrayLen; + } SignatureProperty; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionSetupReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":EVCCID)', derivedBy='EXTENSION'. */ +#define v2gSessionSetupReqType_EVCCID_BYTES_SIZE 6 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,evccIDType is 6 */ +struct v2gSessionSetupReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":EVCCID, urn:iso:15118:2:2013:MsgDataTypes,evccIDType */ + struct { + uint8_t bytes[v2gSessionSetupReqType_EVCCID_BYTES_SIZE]; + uint16_t bytesLen; + } EVCCID ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ListOfRootCertificateIDsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":RootCertificateID{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE 5 +struct v2gListOfRootCertificateIDsType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":RootCertificateID, Complex type name='http://www.w3.org/2000/09/xmldsig#,X509IssuerSerialType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":X509IssuerName,"http://www.w3.org/2000/09/xmldsig#":X509SerialNumber)', derivedBy='RESTRICTION'. */ + struct { + struct v2gX509IssuerSerialType array[v2gListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE]; + uint16_t arrayLen; + } RootCertificateID; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVPowerDeliveryParameterType', base type name='EVPowerDeliveryParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2013:MsgDataTypes":BulkChargingComplete{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ChargingComplete)', derivedBy='EXTENSION'. */ +struct v2gDC_EVPowerDeliveryParameterType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVStatusType', base type name='EVStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EVReady,"urn:iso:15118:2:2013:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2013:MsgDataTypes":EVRESSSOC)', derivedBy='EXTENSION'. */ + struct v2gDC_EVStatusType DC_EVStatus ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":BulkChargingComplete, http://www.w3.org/2001/XMLSchema,boolean */ + int BulkChargingComplete ; + unsigned int BulkChargingComplete_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ChargingComplete, http://www.w3.org/2001/XMLSchema,boolean */ + int ChargingComplete ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,RelativeTimeIntervalType', base type name='IntervalType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":start,"urn:iso:15118:2:2013:MsgDataTypes":duration{0-1})', derivedBy='EXTENSION'. */ +struct v2gRelativeTimeIntervalType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":start, urn:iso:15118:2:2013:MsgDataTypes,#AnonType_startRelativeTimeIntervalType */ + uint32_t start ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":duration, urn:iso:15118:2:2013:MsgDataTypes,#AnonType_durationRelativeTimeIntervalType */ + uint32_t duration ; + unsigned int duration_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateUpdateResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2013:MsgBody":DHpublickey,"urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":RetryCounter{0-1})', derivedBy='EXTENSION'. */ +struct v2gCertificateUpdateResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CertificateChainType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate,"urn:iso:15118:2:2013:MsgDataTypes":SubCertificates{0-1})', derivedBy='RESTRICTION'. */ + struct v2gCertificateChainType SAProvisioningCertificateChain ; + /* element: "urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CertificateChainType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate,"urn:iso:15118:2:2013:MsgDataTypes":SubCertificates{0-1})', derivedBy='RESTRICTION'. */ + struct v2gCertificateChainType ContractSignatureCertChain ; + /* element: "urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ContractSignatureEncryptedPrivateKeyType', base type name='privateKeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ + struct v2gContractSignatureEncryptedPrivateKeyType ContractSignatureEncryptedPrivateKey ; + /* element: "urn:iso:15118:2:2013:MsgBody":DHpublickey, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DiffieHellmanPublickeyType', base type name='dHpublickeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ + struct v2gDiffieHellmanPublickeyType DHpublickey ; + /* element: "urn:iso:15118:2:2013:MsgBody":eMAID, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EMAIDType', base type name='eMAIDType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ + struct v2gEMAIDType eMAID ; + /* element: "urn:iso:15118:2:2013:MsgBody":RetryCounter, http://www.w3.org/2001/XMLSchema,short */ + int16_t RetryCounter ; + unsigned int RetryCounter_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,MeteringReceiptReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":SessionID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2013:MsgBody":MeterInfo)', derivedBy='EXTENSION'. */ +#define v2gMeteringReceiptReqType_Id_CHARACTERS_SIZE 50 +#define v2gMeteringReceiptReqType_SessionID_BYTES_SIZE 8 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,sessionIDType is 8 */ +struct v2gMeteringReceiptReqType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gMeteringReceiptReqType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":SessionID, urn:iso:15118:2:2013:MsgDataTypes,sessionIDType */ + struct { + uint8_t bytes[v2gMeteringReceiptReqType_SessionID_BYTES_SIZE]; + uint16_t bytesLen; + } SessionID ; + /* element: "urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID, urn:iso:15118:2:2013:MsgDataTypes,SAIDType */ + uint8_t SAScheduleTupleID ; + unsigned int SAScheduleTupleID_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":MeterInfo, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,MeterInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":MeterID,"urn:iso:15118:2:2013:MsgDataTypes":MeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SigMeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":MeterStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":TMeter{0-1})', derivedBy='RESTRICTION'. */ + struct v2gMeterInfoType MeterInfo ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2013:MsgDataTypes":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FreeService)', derivedBy='RESTRICTION'. */ +#define v2gServiceType_ServiceName_CHARACTERS_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,serviceNameType is 32 */ +#define v2gServiceType_ServiceScope_CHARACTERS_SIZE 64 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,serviceScopeType is 64 */ +struct v2gServiceType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ServiceID, urn:iso:15118:2:2013:MsgDataTypes,serviceIDType */ + uint16_t ServiceID ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ServiceName, urn:iso:15118:2:2013:MsgDataTypes,serviceNameType */ + struct { + exi_string_character_t characters[v2gServiceType_ServiceName_CHARACTERS_SIZE]; + uint16_t charactersLen; + } ServiceName ; + unsigned int ServiceName_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory, urn:iso:15118:2:2013:MsgDataTypes,serviceCategoryType */ + v2gserviceCategoryType ServiceCategory ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ServiceScope, urn:iso:15118:2:2013:MsgDataTypes,serviceScopeType */ + struct { + exi_string_character_t characters[v2gServiceType_ServiceScope_CHARACTERS_SIZE]; + uint16_t charactersLen; + } ServiceScope ; + unsigned int ServiceScope_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":FreeService, http://www.w3.org/2001/XMLSchema,boolean */ + int FreeService ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,NotificationType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":FaultCode,"urn:iso:15118:2:2013:MsgDataTypes":FaultMsg{0-1})', derivedBy='RESTRICTION'. */ +#define v2gNotificationType_FaultMsg_CHARACTERS_SIZE 64 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,faultMsgType is 64 */ +struct v2gNotificationType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":FaultCode, urn:iso:15118:2:2013:MsgDataTypes,faultCodeType */ + v2gfaultCodeType FaultCode ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":FaultMsg, urn:iso:15118:2:2013:MsgDataTypes,faultMsgType */ + struct { + exi_string_character_t characters[v2gNotificationType_FaultMsg_CHARACTERS_SIZE]; + uint16_t charactersLen; + } FaultMsg ; + unsigned int FaultMsg_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SelectedServiceListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SelectedService{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gSelectedServiceListType_SelectedService_ARRAY_SIZE 5 +struct v2gSelectedServiceListType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SelectedService, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SelectedServiceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID{0-1})', derivedBy='RESTRICTION'. */ + struct { + struct v2gSelectedServiceType array[v2gSelectedServiceListType_SelectedService_ARRAY_SIZE]; + uint16_t arrayLen; + } SelectedService; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ObjectType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##any])){0-UNBOUNDED}', derivedBy='RESTRICTION'. */ +#define v2gObjectType_Id_CHARACTERS_SIZE 50 +#define v2gObjectType_MimeType_CHARACTERS_SIZE 50 +#define v2gObjectType_Encoding_CHARACTERS_SIZE 50 +struct v2gObjectType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gObjectType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* attribute: MimeType {http://www.w3.org/2001/XMLSchema,string} */ + struct { + exi_string_character_t characters[v2gObjectType_MimeType_CHARACTERS_SIZE]; + uint16_t charactersLen; + } MimeType ; + unsigned int MimeType_isUsed:1; + /* attribute: Encoding {http://www.w3.org/2001/XMLSchema,anyURI} */ + struct { + exi_string_character_t characters[v2gObjectType_Encoding_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Encoding ; + unsigned int Encoding_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,AuthorizationResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing)', derivedBy='EXTENSION'. */ +struct v2gAuthorizationResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEProcessing, urn:iso:15118:2:2013:MsgDataTypes,EVSEProcessingType */ + v2gEVSEProcessingType EVSEProcessing ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVSEStatusType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification)', derivedBy='RESTRICTION'. */ +struct v2gEVSEStatusType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay, http://www.w3.org/2001/XMLSchema,unsignedShort */ + uint16_t NotificationMaxDelay ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSENotification, urn:iso:15118:2:2013:MsgDataTypes,EVSENotificationType */ + v2gEVSENotificationType EVSENotification ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentServiceSelectionReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":SelectedPaymentOption,"urn:iso:15118:2:2013:MsgBody":SelectedServiceList)', derivedBy='EXTENSION'. */ +struct v2gPaymentServiceSelectionReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":SelectedPaymentOption, urn:iso:15118:2:2013:MsgDataTypes,paymentOptionType */ + v2gpaymentOptionType SelectedPaymentOption ; + /* element: "urn:iso:15118:2:2013:MsgBody":SelectedServiceList, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SelectedServiceListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SelectedService{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gSelectedServiceListType SelectedServiceList ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EntryType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval)', derivedBy='RESTRICTION'. */ +struct v2gEntryType { + union { /* substitutionGroup */ + /* element: "urn:iso:15118:2:2013:MsgDataTypes":TimeInterval, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,IntervalType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ + struct v2gIntervalType TimeInterval ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":RelativeTimeInterval, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,RelativeTimeIntervalType', base type name='IntervalType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":start,"urn:iso:15118:2:2013:MsgDataTypes":duration{0-1})', derivedBy='EXTENSION'. */ + struct v2gRelativeTimeIntervalType RelativeTimeInterval ; + }; /* union */ + unsigned int TimeInterval_isUsed:1; + unsigned int RelativeTimeInterval_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CostType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":costKind,"urn:iso:15118:2:2013:MsgDataTypes":amount,"urn:iso:15118:2:2013:MsgDataTypes":amountMultiplier{0-1})', derivedBy='RESTRICTION'. */ +struct v2gCostType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":costKind, urn:iso:15118:2:2013:MsgDataTypes,costKindType */ + v2gcostKindType costKind ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":amount, http://www.w3.org/2001/XMLSchema,unsignedInt */ + uint32_t amount ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":amountMultiplier, urn:iso:15118:2:2013:MsgDataTypes,unitMultiplierType */ + int8_t amountMultiplier ; + unsigned int amountMultiplier_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ChargeServiceType', base type name='ServiceType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2013:MsgDataTypes":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FreeService),("urn:iso:15118:2:2013:MsgDataTypes":SupportedEnergyTransferMode))', derivedBy='EXTENSION'. */ +#define v2gChargeServiceType_ServiceName_CHARACTERS_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,serviceNameType is 32 */ +#define v2gChargeServiceType_ServiceScope_CHARACTERS_SIZE 64 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,serviceScopeType is 64 */ +struct v2gChargeServiceType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ServiceID, urn:iso:15118:2:2013:MsgDataTypes,serviceIDType */ + uint16_t ServiceID ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ServiceName, urn:iso:15118:2:2013:MsgDataTypes,serviceNameType */ + struct { + exi_string_character_t characters[v2gChargeServiceType_ServiceName_CHARACTERS_SIZE]; + uint16_t charactersLen; + } ServiceName ; + unsigned int ServiceName_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory, urn:iso:15118:2:2013:MsgDataTypes,serviceCategoryType */ + v2gserviceCategoryType ServiceCategory ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ServiceScope, urn:iso:15118:2:2013:MsgDataTypes,serviceScopeType */ + struct { + exi_string_character_t characters[v2gChargeServiceType_ServiceScope_CHARACTERS_SIZE]; + uint16_t charactersLen; + } ServiceScope ; + unsigned int ServiceScope_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":FreeService, http://www.w3.org/2001/XMLSchema,boolean */ + int FreeService ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SupportedEnergyTransferMode, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SupportedEnergyTransferModeType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EnergyTransferMode{1-6})', derivedBy='RESTRICTION'. */ + struct v2gSupportedEnergyTransferModeType SupportedEnergyTransferMode ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Service{1-8})', derivedBy='RESTRICTION'. */ +#define v2gServiceListType_Service_ARRAY_SIZE 5 +struct v2gServiceListType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":Service, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2013:MsgDataTypes":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FreeService)', derivedBy='RESTRICTION'. */ + struct { + struct v2gServiceType array[v2gServiceListType_Service_ARRAY_SIZE]; + uint16_t arrayLen; + } Service; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyValueType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":DSAKeyValue|"http://www.w3.org/2000/09/xmldsig#":RSAKeyValue|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))', derivedBy='RESTRICTION'. */ +struct v2gKeyValueType { + /* element: "http://www.w3.org/2000/09/xmldsig#":DSAKeyValue, Complex type name='http://www.w3.org/2000/09/xmldsig#,DSAKeyValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":P,"http://www.w3.org/2000/09/xmldsig#":Q){0-1},"http://www.w3.org/2000/09/xmldsig#":G{0-1},"http://www.w3.org/2000/09/xmldsig#":Y,"http://www.w3.org/2000/09/xmldsig#":J{0-1},("http://www.w3.org/2000/09/xmldsig#":Seed,"http://www.w3.org/2000/09/xmldsig#":PgenCounter){0-1})', derivedBy='RESTRICTION'. */ + struct v2gDSAKeyValueType DSAKeyValue ; + unsigned int DSAKeyValue_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":RSAKeyValue, Complex type name='http://www.w3.org/2000/09/xmldsig#,RSAKeyValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Modulus,"http://www.w3.org/2000/09/xmldsig#":Exponent)', derivedBy='RESTRICTION'. */ + struct v2gRSAKeyValueType RSAKeyValue ; + unsigned int RSAKeyValue_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateInstallationReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":OEMProvisioningCert,"urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs)', derivedBy='EXTENSION'. */ +#define v2gCertificateInstallationReqType_Id_CHARACTERS_SIZE 50 +#define v2gCertificateInstallationReqType_OEMProvisioningCert_BYTES_SIZE 800 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,certificateType is 800 */ +struct v2gCertificateInstallationReqType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gCertificateInstallationReqType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + /* element: "urn:iso:15118:2:2013:MsgBody":OEMProvisioningCert, urn:iso:15118:2:2013:MsgDataTypes,certificateType */ + struct { + uint8_t bytes[v2gCertificateInstallationReqType_OEMProvisioningCert_BYTES_SIZE]; + uint16_t bytesLen; + } OEMProvisioningCert ; + /* element: "urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ListOfRootCertificateIDsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":RootCertificateID{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gListOfRootCertificateIDsType ListOfRootCertificateIDs ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CableCheckReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus)', derivedBy='EXTENSION'. */ +struct v2gCableCheckReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":DC_EVStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVStatusType', base type name='EVStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EVReady,"urn:iso:15118:2:2013:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2013:MsgDataTypes":EVRESSSOC)', derivedBy='EXTENSION'. */ + struct v2gDC_EVStatusType DC_EVStatus ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,WeldingDetectionReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus)', derivedBy='EXTENSION'. */ +struct v2gWeldingDetectionReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":DC_EVStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVStatusType', base type name='EVStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EVReady,"urn:iso:15118:2:2013:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2013:MsgDataTypes":EVRESSSOC)', derivedBy='EXTENSION'. */ + struct v2gDC_EVStatusType DC_EVStatus ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentDetailsReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain)', derivedBy='EXTENSION'. */ +#define v2gPaymentDetailsReqType_eMAID_CHARACTERS_SIZE 15 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,eMAIDType is 15 */ +struct v2gPaymentDetailsReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":eMAID, urn:iso:15118:2:2013:MsgDataTypes,eMAIDType */ + struct { + exi_string_character_t characters[v2gPaymentDetailsReqType_eMAID_CHARACTERS_SIZE]; + uint16_t charactersLen; + } eMAID ; + /* element: "urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CertificateChainType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate,"urn:iso:15118:2:2013:MsgDataTypes":SubCertificates{0-1})', derivedBy='RESTRICTION'. */ + struct v2gCertificateChainType ContractSignatureCertChain ; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transform{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gTransformsType_Transform_ARRAY_SIZE 0 +struct v2gTransformsType { + /* element: "http://www.w3.org/2000/09/xmldsig#":Transform, Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])|"http://www.w3.org/2000/09/xmldsig#":XPath){0-UNBOUNDED}', derivedBy='RESTRICTION'. */ + struct { + struct v2gTransformType array[v2gTransformsType_Transform_ARRAY_SIZE]; + uint16_t arrayLen; + } Transform; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDiscoveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgBody":ServiceCategory{0-1})', derivedBy='EXTENSION'. */ +#define v2gServiceDiscoveryReqType_ServiceScope_CHARACTERS_SIZE 64 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,serviceScopeType is 64 */ +struct v2gServiceDiscoveryReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":ServiceScope, urn:iso:15118:2:2013:MsgDataTypes,serviceScopeType */ + struct { + exi_string_character_t characters[v2gServiceDiscoveryReqType_ServiceScope_CHARACTERS_SIZE]; + uint16_t charactersLen; + } ServiceScope ; + unsigned int ServiceScope_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":ServiceCategory, urn:iso:15118:2:2013:MsgDataTypes,serviceCategoryType */ + v2gserviceCategoryType ServiceCategory ; + unsigned int ServiceCategory_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ +struct v2gPhysicalValueType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":Multiplier, urn:iso:15118:2:2013:MsgDataTypes,unitMultiplierType */ + int8_t Multiplier ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":Unit, urn:iso:15118:2:2013:MsgDataTypes,unitSymbolType */ + v2gunitSymbolType Unit ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":Value, http://www.w3.org/2001/XMLSchema,short */ + int16_t Value ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionStopReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ChargingSession)', derivedBy='EXTENSION'. */ +struct v2gSessionStopReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":ChargingSession, urn:iso:15118:2:2013:MsgDataTypes,chargingSessionType */ + v2gchargingSessionType ChargingSession ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode))', derivedBy='EXTENSION'. */ +struct v2gDC_EVSEStatusType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay, http://www.w3.org/2001/XMLSchema,unsignedShort */ + uint16_t NotificationMaxDelay ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSENotification, urn:iso:15118:2:2013:MsgDataTypes,EVSENotificationType */ + v2gEVSENotificationType EVSENotification ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus, urn:iso:15118:2:2013:MsgDataTypes,isolationLevelType */ + v2gisolationLevelType EVSEIsolationStatus ; + unsigned int EVSEIsolationStatus_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode, urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusCodeType */ + v2gDC_EVSEStatusCodeType EVSEStatusCode ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateUpdateReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs)', derivedBy='EXTENSION'. */ +#define v2gCertificateUpdateReqType_Id_CHARACTERS_SIZE 50 +#define v2gCertificateUpdateReqType_eMAID_CHARACTERS_SIZE 15 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,eMAIDType is 15 */ +struct v2gCertificateUpdateReqType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gCertificateUpdateReqType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + /* element: "urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CertificateChainType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate,"urn:iso:15118:2:2013:MsgDataTypes":SubCertificates{0-1})', derivedBy='RESTRICTION'. */ + struct v2gCertificateChainType ContractSignatureCertChain ; + /* element: "urn:iso:15118:2:2013:MsgBody":eMAID, urn:iso:15118:2:2013:MsgDataTypes,eMAIDType */ + struct { + exi_string_character_t characters[v2gCertificateUpdateReqType_eMAID_CHARACTERS_SIZE]; + uint16_t charactersLen; + } eMAID ; + /* element: "urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ListOfRootCertificateIDsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":RootCertificateID{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gListOfRootCertificateIDsType ListOfRootCertificateIDs ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVChargeParameterType', base type name='EVChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1}),("urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVEnergyCapacity{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVEnergyRequest{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FullSOC{0-1},"urn:iso:15118:2:2013:MsgDataTypes":BulkSOC{0-1}))', derivedBy='EXTENSION'. */ +struct v2gDC_EVChargeParameterType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":DepartureTime, http://www.w3.org/2001/XMLSchema,unsignedInt */ + uint32_t DepartureTime ; + unsigned int DepartureTime_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVStatusType', base type name='EVStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EVReady,"urn:iso:15118:2:2013:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2013:MsgDataTypes":EVRESSSOC)', derivedBy='EXTENSION'. */ + struct v2gDC_EVStatusType DC_EVStatus ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVMaximumCurrentLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVMaximumCurrentLimit ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVMaximumPowerLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVMaximumPowerLimit ; + unsigned int EVMaximumPowerLimit_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVMaximumVoltageLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVMaximumVoltageLimit ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVEnergyCapacity, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVEnergyCapacity ; + unsigned int EVEnergyCapacity_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVEnergyRequest, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVEnergyRequest ; + unsigned int EVEnergyRequest_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":FullSOC, urn:iso:15118:2:2013:MsgDataTypes,percentValueType */ + int8_t FullSOC ; + unsigned int FullSOC_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":BulkSOC, urn:iso:15118:2:2013:MsgDataTypes,percentValueType */ + int8_t BulkSOC ; + unsigned int BulkSOC_isUsed:1; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ReferenceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1},"http://www.w3.org/2000/09/xmldsig#":DigestMethod,"http://www.w3.org/2000/09/xmldsig#":DigestValue)', derivedBy='RESTRICTION'. */ +#define v2gReferenceType_Id_CHARACTERS_SIZE 50 +#define v2gReferenceType_URI_CHARACTERS_SIZE 50 +#define v2gReferenceType_Type_CHARACTERS_SIZE 50 +#define v2gReferenceType_DigestValue_BYTES_SIZE 350 +struct v2gReferenceType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gReferenceType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* attribute: URI {http://www.w3.org/2001/XMLSchema,anyURI} */ + struct { + exi_string_character_t characters[v2gReferenceType_URI_CHARACTERS_SIZE]; + uint16_t charactersLen; + } URI ; + unsigned int URI_isUsed:1; + /* attribute: Type {http://www.w3.org/2001/XMLSchema,anyURI} */ + struct { + exi_string_character_t characters[v2gReferenceType_Type_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Type ; + unsigned int Type_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":Transforms, Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transform{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gTransformsType Transforms ; + unsigned int Transforms_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":DigestMethod, Complex type name='http://www.w3.org/2000/09/xmldsig#,DigestMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gDigestMethodType DigestMethod ; + /* element: "http://www.w3.org/2000/09/xmldsig#":DigestValue, http://www.w3.org/2000/09/xmldsig#,DigestValueType */ + struct { + uint8_t bytes[v2gReferenceType_DigestValue_BYTES_SIZE]; + uint16_t bytesLen; + } DigestValue ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CurrentDemandResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage,"urn:iso:15118:2:2013:MsgBody":EVSEPresentCurrent,"urn:iso:15118:2:2013:MsgBody":EVSECurrentLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEVoltageLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEPowerLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEMaximumVoltageLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEMaximumCurrentLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2013:MsgBody":ReceiptRequired{0-1})', derivedBy='EXTENSION'. */ +#define v2gCurrentDemandResType_EVSEID_CHARACTERS_SIZE 37 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,evseIDType is 37 */ +struct v2gCurrentDemandResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode))', derivedBy='EXTENSION'. */ + struct v2gDC_EVSEStatusType DC_EVSEStatus ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEPresentVoltage ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEPresentCurrent, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEPresentCurrent ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSECurrentLimitAchieved, http://www.w3.org/2001/XMLSchema,boolean */ + int EVSECurrentLimitAchieved ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEVoltageLimitAchieved, http://www.w3.org/2001/XMLSchema,boolean */ + int EVSEVoltageLimitAchieved ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEPowerLimitAchieved, http://www.w3.org/2001/XMLSchema,boolean */ + int EVSEPowerLimitAchieved ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEMaximumVoltageLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEMaximumVoltageLimit ; + unsigned int EVSEMaximumVoltageLimit_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEMaximumCurrentLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEMaximumCurrentLimit ; + unsigned int EVSEMaximumCurrentLimit_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEMaximumPowerLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEMaximumPowerLimit ; + unsigned int EVSEMaximumPowerLimit_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEID, urn:iso:15118:2:2013:MsgDataTypes,evseIDType */ + struct { + exi_string_character_t characters[v2gCurrentDemandResType_EVSEID_CHARACTERS_SIZE]; + uint16_t charactersLen; + } EVSEID ; + /* element: "urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID, urn:iso:15118:2:2013:MsgDataTypes,SAIDType */ + uint8_t SAScheduleTupleID ; + /* element: "urn:iso:15118:2:2013:MsgBody":MeterInfo, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,MeterInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":MeterID,"urn:iso:15118:2:2013:MsgDataTypes":MeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SigMeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":MeterStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":TMeter{0-1})', derivedBy='RESTRICTION'. */ + struct v2gMeterInfoType MeterInfo ; + unsigned int MeterInfo_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":ReceiptRequired, http://www.w3.org/2001/XMLSchema,boolean */ + int ReceiptRequired ; + unsigned int ReceiptRequired_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PowerDeliveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus)', derivedBy='EXTENSION'. */ +struct v2gPowerDeliveryResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVSEStatusType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification)', derivedBy='RESTRICTION'. */ + struct v2gEVSEStatusType EVSEStatus ; + unsigned int EVSEStatus_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":AC_EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":RCD))', derivedBy='EXTENSION'. */ + struct v2gAC_EVSEStatusType AC_EVSEStatus ; + unsigned int AC_EVSEStatus_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode))', derivedBy='EXTENSION'. */ + struct v2gDC_EVSEStatusType DC_EVSEStatus ; + unsigned int DC_EVSEStatus_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDiscoveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":PaymentOptionList,"urn:iso:15118:2:2013:MsgBody":ChargeService,"urn:iso:15118:2:2013:MsgBody":ServiceList{0-1})', derivedBy='EXTENSION'. */ +struct v2gServiceDiscoveryResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":PaymentOptionList, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PaymentOptionListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":PaymentOption{1-2})', derivedBy='RESTRICTION'. */ + struct v2gPaymentOptionListType PaymentOptionList ; + /* element: "urn:iso:15118:2:2013:MsgBody":ChargeService, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ChargeServiceType', base type name='ServiceType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2013:MsgDataTypes":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FreeService),("urn:iso:15118:2:2013:MsgDataTypes":SupportedEnergyTransferMode))', derivedBy='EXTENSION'. */ + struct v2gChargeServiceType ChargeService ; + /* element: "urn:iso:15118:2:2013:MsgBody":ServiceList, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Service{1-8})', derivedBy='RESTRICTION'. */ + struct v2gServiceListType ServiceList ; + unsigned int ServiceList_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateInstallationResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2013:MsgBody":DHpublickey,"urn:iso:15118:2:2013:MsgBody":eMAID)', derivedBy='EXTENSION'. */ +struct v2gCertificateInstallationResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CertificateChainType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate,"urn:iso:15118:2:2013:MsgDataTypes":SubCertificates{0-1})', derivedBy='RESTRICTION'. */ + struct v2gCertificateChainType SAProvisioningCertificateChain ; + /* element: "urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CertificateChainType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate,"urn:iso:15118:2:2013:MsgDataTypes":SubCertificates{0-1})', derivedBy='RESTRICTION'. */ + struct v2gCertificateChainType ContractSignatureCertChain ; + /* element: "urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ContractSignatureEncryptedPrivateKeyType', base type name='privateKeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ + struct v2gContractSignatureEncryptedPrivateKeyType ContractSignatureEncryptedPrivateKey ; + /* element: "urn:iso:15118:2:2013:MsgBody":DHpublickey, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DiffieHellmanPublickeyType', base type name='dHpublickeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ + struct v2gDiffieHellmanPublickeyType DHpublickey ; + /* element: "urn:iso:15118:2:2013:MsgBody":eMAID, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EMAIDType', base type name='eMAIDType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ + struct v2gEMAIDType eMAID ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CableCheckResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing)', derivedBy='EXTENSION'. */ +struct v2gCableCheckResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode))', derivedBy='EXTENSION'. */ + struct v2gDC_EVSEStatusType DC_EVSEStatus ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEProcessing, urn:iso:15118:2:2013:MsgDataTypes,EVSEProcessingType */ + v2gEVSEProcessingType EVSEProcessing ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVChargeParameterType', base type name='EVChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1}),("urn:iso:15118:2:2013:MsgDataTypes":EAmount,"urn:iso:15118:2:2013:MsgDataTypes":EVMaxVoltage,"urn:iso:15118:2:2013:MsgDataTypes":EVMaxCurrent,"urn:iso:15118:2:2013:MsgDataTypes":EVMinCurrent))', derivedBy='EXTENSION'. */ +struct v2gAC_EVChargeParameterType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":DepartureTime, http://www.w3.org/2001/XMLSchema,unsignedInt */ + uint32_t DepartureTime ; + unsigned int DepartureTime_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EAmount, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EAmount ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVMaxVoltage, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVMaxVoltage ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVMaxCurrent, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVMaxCurrent ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVMinCurrent, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVMinCurrent ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CurrentDemandReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus,"urn:iso:15118:2:2013:MsgBody":EVTargetCurrent,"urn:iso:15118:2:2013:MsgBody":EVMaximumVoltageLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVMaximumCurrentLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgBody":BulkChargingComplete{0-1},"urn:iso:15118:2:2013:MsgBody":ChargingComplete,"urn:iso:15118:2:2013:MsgBody":RemainingTimeToFullSoC{0-1},"urn:iso:15118:2:2013:MsgBody":RemainingTimeToBulkSoC{0-1},"urn:iso:15118:2:2013:MsgBody":EVTargetVoltage)', derivedBy='EXTENSION'. */ +struct v2gCurrentDemandReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":DC_EVStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVStatusType', base type name='EVStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EVReady,"urn:iso:15118:2:2013:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2013:MsgDataTypes":EVRESSSOC)', derivedBy='EXTENSION'. */ + struct v2gDC_EVStatusType DC_EVStatus ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVTargetCurrent, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVTargetCurrent ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVMaximumVoltageLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVMaximumVoltageLimit ; + unsigned int EVMaximumVoltageLimit_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":EVMaximumCurrentLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVMaximumCurrentLimit ; + unsigned int EVMaximumCurrentLimit_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":EVMaximumPowerLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVMaximumPowerLimit ; + unsigned int EVMaximumPowerLimit_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":BulkChargingComplete, http://www.w3.org/2001/XMLSchema,boolean */ + int BulkChargingComplete ; + unsigned int BulkChargingComplete_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":ChargingComplete, http://www.w3.org/2001/XMLSchema,boolean */ + int ChargingComplete ; + /* element: "urn:iso:15118:2:2013:MsgBody":RemainingTimeToFullSoC, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType RemainingTimeToFullSoC ; + unsigned int RemainingTimeToFullSoC_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":RemainingTimeToBulkSoC, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType RemainingTimeToBulkSoC ; + unsigned int RemainingTimeToBulkSoC_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":EVTargetVoltage, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVTargetVoltage ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PreChargeResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage)', derivedBy='EXTENSION'. */ +struct v2gPreChargeResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode))', derivedBy='EXTENSION'. */ + struct v2gDC_EVSEStatusType DC_EVSEStatus ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEPresentVoltage ; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignedInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":CanonicalizationMethod,"http://www.w3.org/2000/09/xmldsig#":SignatureMethod,"http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gSignedInfoType_Id_CHARACTERS_SIZE 50 +#define v2gSignedInfoType_Reference_ARRAY_SIZE 0 +struct v2gSignedInfoType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gSignedInfoType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":CanonicalizationMethod, Complex type name='http://www.w3.org/2000/09/xmldsig#,CanonicalizationMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##any]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gCanonicalizationMethodType CanonicalizationMethod ; + /* element: "http://www.w3.org/2000/09/xmldsig#":SignatureMethod, Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":HMACOutputLength{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gSignatureMethodType SignatureMethod ; + /* element: "http://www.w3.org/2000/09/xmldsig#":Reference, Complex type name='http://www.w3.org/2000/09/xmldsig#,ReferenceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1},"http://www.w3.org/2000/09/xmldsig#":DigestMethod,"http://www.w3.org/2000/09/xmldsig#":DigestValue)', derivedBy='RESTRICTION'. */ + struct { + struct v2gReferenceType array[v2gSignedInfoType_Reference_ARRAY_SIZE]; + uint16_t arrayLen; + } Reference; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ProfileEntryType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryStart,"urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxPower,"urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxNumberOfPhasesInUse{0-1})', derivedBy='RESTRICTION'. */ +struct v2gProfileEntryType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryStart, http://www.w3.org/2001/XMLSchema,unsignedInt */ + uint32_t ChargingProfileEntryStart ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxPower, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType ChargingProfileEntryMaxPower ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxNumberOfPhasesInUse, urn:iso:15118:2:2013:MsgDataTypes,maxNumPhasesType */ + int8_t ChargingProfileEntryMaxNumberOfPhasesInUse ; + unsigned int ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PreChargeReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus,"urn:iso:15118:2:2013:MsgBody":EVTargetVoltage,"urn:iso:15118:2:2013:MsgBody":EVTargetCurrent)', derivedBy='EXTENSION'. */ +struct v2gPreChargeReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":DC_EVStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVStatusType', base type name='EVStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EVReady,"urn:iso:15118:2:2013:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2013:MsgDataTypes":EVRESSSOC)', derivedBy='EXTENSION'. */ + struct v2gDC_EVStatusType DC_EVStatus ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVTargetVoltage, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVTargetVoltage ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVTargetCurrent, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVTargetCurrent ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ChargingProfileType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ProfileEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gChargingProfileType_ProfileEntry_ARRAY_SIZE 5 +struct v2gChargingProfileType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ProfileEntry, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ProfileEntryType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryStart,"urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxPower,"urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxNumberOfPhasesInUse{0-1})', derivedBy='RESTRICTION'. */ + struct { + struct v2gProfileEntryType array[v2gChargingProfileType_ProfileEntry_ARRAY_SIZE]; + uint16_t arrayLen; + } ProfileEntry; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PowerDeliveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ChargeProgress,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":ChargingProfile{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVPowerDeliveryParameter{0-1})', derivedBy='EXTENSION'. */ +struct v2gPowerDeliveryReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":ChargeProgress, urn:iso:15118:2:2013:MsgDataTypes,chargeProgressType */ + v2gchargeProgressType ChargeProgress ; + /* element: "urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID, urn:iso:15118:2:2013:MsgDataTypes,SAIDType */ + uint8_t SAScheduleTupleID ; + /* element: "urn:iso:15118:2:2013:MsgBody":ChargingProfile, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ChargingProfileType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ProfileEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gChargingProfileType ChargingProfile ; + unsigned int ChargingProfile_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVPowerDeliveryParameter, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVPowerDeliveryParameterType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ + struct v2gEVPowerDeliveryParameterType EVPowerDeliveryParameter ; + unsigned int EVPowerDeliveryParameter_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":DC_EVPowerDeliveryParameter, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVPowerDeliveryParameterType', base type name='EVPowerDeliveryParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2013:MsgDataTypes":BulkChargingComplete{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ChargingComplete)', derivedBy='EXTENSION'. */ + struct v2gDC_EVPowerDeliveryParameterType DC_EVPowerDeliveryParameter ; + unsigned int DC_EVPowerDeliveryParameter_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEChargeParameterType', base type name='EVSEChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumPowerLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSECurrentRegulationTolerance{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEPeakCurrentRipple,"urn:iso:15118:2:2013:MsgDataTypes":EVSEEnergyToBeDelivered{0-1})', derivedBy='EXTENSION'. */ +struct v2gDC_EVSEChargeParameterType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode))', derivedBy='EXTENSION'. */ + struct v2gDC_EVSEStatusType DC_EVSEStatus ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumCurrentLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEMaximumCurrentLimit ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumPowerLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEMaximumPowerLimit ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumVoltageLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEMaximumVoltageLimit ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumCurrentLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEMinimumCurrentLimit ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumVoltageLimit, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEMinimumVoltageLimit ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSECurrentRegulationTolerance, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSECurrentRegulationTolerance ; + unsigned int EVSECurrentRegulationTolerance_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEPeakCurrentRipple, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEPeakCurrentRipple ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEEnergyToBeDelivered, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEEnergyToBeDelivered ; + unsigned int EVSEEnergyToBeDelivered_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PMaxScheduleEntryType', base type name='EntryType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2013:MsgDataTypes":PMax))', derivedBy='EXTENSION'. */ +struct v2gPMaxScheduleEntryType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":TimeInterval, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,IntervalType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ + struct v2gIntervalType TimeInterval ; + unsigned int TimeInterval_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":RelativeTimeInterval, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,RelativeTimeIntervalType', base type name='IntervalType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":start,"urn:iso:15118:2:2013:MsgDataTypes":duration{0-1})', derivedBy='EXTENSION'. */ + struct v2gRelativeTimeIntervalType RelativeTimeInterval ; + unsigned int RelativeTimeInterval_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":PMax, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType PMax ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,MeteringReceiptResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus)', derivedBy='EXTENSION'. */ +struct v2gMeteringReceiptResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVSEStatusType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification)', derivedBy='RESTRICTION'. */ + struct v2gEVSEStatusType EVSEStatus ; + unsigned int EVSEStatus_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":AC_EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":RCD))', derivedBy='EXTENSION'. */ + struct v2gAC_EVSEStatusType AC_EVSEStatus ; + unsigned int AC_EVSEStatus_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode))', derivedBy='EXTENSION'. */ + struct v2gDC_EVSEStatusType DC_EVSEStatus ; + unsigned int DC_EVSEStatus_isUsed:1; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,RetrievalMethodType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1})', derivedBy='RESTRICTION'. */ +#define v2gRetrievalMethodType_URI_CHARACTERS_SIZE 50 +#define v2gRetrievalMethodType_Type_CHARACTERS_SIZE 50 +struct v2gRetrievalMethodType { + /* attribute: URI {http://www.w3.org/2001/XMLSchema,anyURI} */ + struct { + exi_string_character_t characters[v2gRetrievalMethodType_URI_CHARACTERS_SIZE]; + uint16_t charactersLen; + } URI ; + unsigned int URI_isUsed:1; + /* attribute: Type {http://www.w3.org/2001/XMLSchema,anyURI} */ + struct { + exi_string_character_t characters[v2gRetrievalMethodType_Type_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Type ; + unsigned int Type_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":Transforms, Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transform{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gTransformsType Transforms ; + unsigned int Transforms_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ParameterType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":boolValue|"urn:iso:15118:2:2013:MsgDataTypes":byteValue|"urn:iso:15118:2:2013:MsgDataTypes":shortValue|"urn:iso:15118:2:2013:MsgDataTypes":intValue|"urn:iso:15118:2:2013:MsgDataTypes":physicalValue|"urn:iso:15118:2:2013:MsgDataTypes":stringValue)', derivedBy='RESTRICTION'. */ +#define v2gParameterType_Name_CHARACTERS_SIZE 50 +#define v2gParameterType_stringValue_CHARACTERS_SIZE 50 +struct v2gParameterType { + /* attribute: Name {http://www.w3.org/2001/XMLSchema,string} */ + struct { + exi_string_character_t characters[v2gParameterType_Name_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Name ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":boolValue, http://www.w3.org/2001/XMLSchema,boolean */ + int boolValue ; + unsigned int boolValue_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":byteValue, http://www.w3.org/2001/XMLSchema,byte */ + int8_t byteValue ; + unsigned int byteValue_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":shortValue, http://www.w3.org/2001/XMLSchema,short */ + int16_t shortValue ; + unsigned int shortValue_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":intValue, http://www.w3.org/2001/XMLSchema,int */ + int32_t intValue ; + unsigned int intValue_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":physicalValue, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType physicalValue ; + unsigned int physicalValue_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":stringValue, http://www.w3.org/2001/XMLSchema,string */ + struct { + exi_string_character_t characters[v2gParameterType_stringValue_CHARACTERS_SIZE]; + uint16_t charactersLen; + } stringValue ; + unsigned int stringValue_isUsed:1; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ManifestType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gManifestType_Id_CHARACTERS_SIZE 50 +#define v2gManifestType_Reference_ARRAY_SIZE 0 +struct v2gManifestType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gManifestType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":Reference, Complex type name='http://www.w3.org/2000/09/xmldsig#,ReferenceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1},"http://www.w3.org/2000/09/xmldsig#":DigestMethod,"http://www.w3.org/2000/09/xmldsig#":DigestValue)', derivedBy='RESTRICTION'. */ + struct { + struct v2gReferenceType array[v2gManifestType_Reference_ARRAY_SIZE]; + uint16_t arrayLen; + } Reference; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEChargeParameterType', base type name='EVSEChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":AC_EVSEStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVSENominalVoltage,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaxCurrent)', derivedBy='EXTENSION'. */ +struct v2gAC_EVSEChargeParameterType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":AC_EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":RCD))', derivedBy='EXTENSION'. */ + struct v2gAC_EVSEStatusType AC_EVSEStatus ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSENominalVoltage, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSENominalVoltage ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEMaxCurrent, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEMaxCurrent ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,WeldingDetectionResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage)', derivedBy='EXTENSION'. */ +struct v2gWeldingDetectionResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode))', derivedBy='EXTENSION'. */ + struct v2gDC_EVSEStatusType DC_EVSEStatus ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEPresentVoltage ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ConsumptionCostType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":startValue,"urn:iso:15118:2:2013:MsgDataTypes":Cost{1-3})', derivedBy='RESTRICTION'. */ +#define v2gConsumptionCostType_Cost_ARRAY_SIZE 3 +struct v2gConsumptionCostType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":startValue, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType startValue ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":Cost, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CostType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":costKind,"urn:iso:15118:2:2013:MsgDataTypes":amount,"urn:iso:15118:2:2013:MsgDataTypes":amountMultiplier{0-1})', derivedBy='RESTRICTION'. */ + struct { + struct v2gCostType array[v2gConsumptionCostType_Cost_ARRAY_SIZE]; + uint16_t arrayLen; + } Cost; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargingStatusResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":EVSEMaxCurrent{0-1},"urn:iso:15118:2:2013:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2013:MsgBody":ReceiptRequired{0-1},"urn:iso:15118:2:2013:MsgBody":AC_EVSEStatus)', derivedBy='EXTENSION'. */ +#define v2gChargingStatusResType_EVSEID_CHARACTERS_SIZE 37 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,evseIDType is 37 */ +struct v2gChargingStatusResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEID, urn:iso:15118:2:2013:MsgDataTypes,evseIDType */ + struct { + exi_string_character_t characters[v2gChargingStatusResType_EVSEID_CHARACTERS_SIZE]; + uint16_t charactersLen; + } EVSEID ; + /* element: "urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID, urn:iso:15118:2:2013:MsgDataTypes,SAIDType */ + uint8_t SAScheduleTupleID ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEMaxCurrent, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ + struct v2gPhysicalValueType EVSEMaxCurrent ; + unsigned int EVSEMaxCurrent_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":MeterInfo, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,MeterInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":MeterID,"urn:iso:15118:2:2013:MsgDataTypes":MeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SigMeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":MeterStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":TMeter{0-1})', derivedBy='RESTRICTION'. */ + struct v2gMeterInfoType MeterInfo ; + unsigned int MeterInfo_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":ReceiptRequired, http://www.w3.org/2001/XMLSchema,boolean */ + int ReceiptRequired ; + unsigned int ReceiptRequired_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":AC_EVSEStatus, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":RCD))', derivedBy='EXTENSION'. */ + struct v2gAC_EVSEStatusType AC_EVSEStatus ; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargeParameterDiscoveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":MaxEntriesSAScheduleTuple{0-1},"urn:iso:15118:2:2013:MsgBody":RequestedEnergyTransferMode,"urn:iso:15118:2:2013:MsgDataTypes":EVChargeParameter)', derivedBy='EXTENSION'. */ +struct v2gChargeParameterDiscoveryReqType { + /* element: "urn:iso:15118:2:2013:MsgBody":MaxEntriesSAScheduleTuple, http://www.w3.org/2001/XMLSchema,unsignedShort */ + uint16_t MaxEntriesSAScheduleTuple ; + unsigned int MaxEntriesSAScheduleTuple_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgBody":RequestedEnergyTransferMode, urn:iso:15118:2:2013:MsgDataTypes,EnergyTransferModeType */ + v2gEnergyTransferModeType RequestedEnergyTransferMode ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVChargeParameter, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVChargeParameterType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1})', derivedBy='RESTRICTION'. */ + struct v2gEVChargeParameterType EVChargeParameter ; + unsigned int EVChargeParameter_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":AC_EVChargeParameter, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVChargeParameterType', base type name='EVChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1}),("urn:iso:15118:2:2013:MsgDataTypes":EAmount,"urn:iso:15118:2:2013:MsgDataTypes":EVMaxVoltage,"urn:iso:15118:2:2013:MsgDataTypes":EVMaxCurrent,"urn:iso:15118:2:2013:MsgDataTypes":EVMinCurrent))', derivedBy='EXTENSION'. */ + struct v2gAC_EVChargeParameterType AC_EVChargeParameter ; + unsigned int AC_EVChargeParameter_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":DC_EVChargeParameter, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVChargeParameterType', base type name='EVChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1}),("urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVEnergyCapacity{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVEnergyRequest{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FullSOC{0-1},"urn:iso:15118:2:2013:MsgDataTypes":BulkSOC{0-1}))', derivedBy='EXTENSION'. */ + struct v2gDC_EVChargeParameterType DC_EVChargeParameter ; + unsigned int DC_EVChargeParameter_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ParameterSetType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID,"urn:iso:15118:2:2013:MsgDataTypes":Parameter{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gParameterSetType_Parameter_ARRAY_SIZE 5 +struct v2gParameterSetType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID, http://www.w3.org/2001/XMLSchema,short */ + int16_t ParameterSetID ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":Parameter, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ParameterType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":boolValue|"urn:iso:15118:2:2013:MsgDataTypes":byteValue|"urn:iso:15118:2:2013:MsgDataTypes":shortValue|"urn:iso:15118:2:2013:MsgDataTypes":intValue|"urn:iso:15118:2:2013:MsgDataTypes":physicalValue|"urn:iso:15118:2:2013:MsgDataTypes":stringValue)', derivedBy='RESTRICTION'. */ + struct { + struct v2gParameterType array[v2gParameterSetType_Parameter_ARRAY_SIZE]; + uint16_t arrayLen; + } Parameter; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceParameterListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ParameterSet{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gServiceParameterListType_ParameterSet_ARRAY_SIZE 5 +struct v2gServiceParameterListType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ParameterSet, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ParameterSetType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID,"urn:iso:15118:2:2013:MsgDataTypes":Parameter{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct { + struct v2gParameterSetType array[v2gServiceParameterListType_ParameterSet_ARRAY_SIZE]; + uint16_t arrayLen; + } ParameterSet; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SalesTariffEntryType', base type name='EntryType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2013:MsgDataTypes":EPriceLevel{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ConsumptionCost{0-3}))', derivedBy='EXTENSION'. */ +#define v2gSalesTariffEntryType_ConsumptionCost_ARRAY_SIZE 3 +struct v2gSalesTariffEntryType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":TimeInterval, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,IntervalType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ + struct v2gIntervalType TimeInterval ; + unsigned int TimeInterval_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":RelativeTimeInterval, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,RelativeTimeIntervalType', base type name='IntervalType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":start,"urn:iso:15118:2:2013:MsgDataTypes":duration{0-1})', derivedBy='EXTENSION'. */ + struct v2gRelativeTimeIntervalType RelativeTimeInterval ; + unsigned int RelativeTimeInterval_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EPriceLevel, http://www.w3.org/2001/XMLSchema,unsignedByte */ + uint8_t EPriceLevel ; + unsigned int EPriceLevel_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":ConsumptionCost, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ConsumptionCostType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":startValue,"urn:iso:15118:2:2013:MsgDataTypes":Cost{1-3})', derivedBy='RESTRICTION'. */ + struct { + struct v2gConsumptionCostType array[v2gSalesTariffEntryType_ConsumptionCost_ARRAY_SIZE]; + uint16_t arrayLen; + } ConsumptionCost; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyInfoType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":KeyName|"http://www.w3.org/2000/09/xmldsig#":KeyValue|"http://www.w3.org/2000/09/xmldsig#":RetrievalMethod|"http://www.w3.org/2000/09/xmldsig#":X509Data|"http://www.w3.org/2000/09/xmldsig#":PGPData|"http://www.w3.org/2000/09/xmldsig#":SPKIData|"http://www.w3.org/2000/09/xmldsig#":MgmtData|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +#define v2gKeyInfoType_Id_CHARACTERS_SIZE 50 +#define v2gKeyInfoType_KeyName_CHARACTERS_SIZE 50 +#define v2gKeyInfoType_KeyName_ARRAY_SIZE 0 +#define v2gKeyInfoType_KeyValue_ARRAY_SIZE 0 +#define v2gKeyInfoType_RetrievalMethod_ARRAY_SIZE 0 +#define v2gKeyInfoType_X509Data_ARRAY_SIZE 0 +#define v2gKeyInfoType_PGPData_ARRAY_SIZE 0 +#define v2gKeyInfoType_SPKIData_ARRAY_SIZE 0 +#define v2gKeyInfoType_MgmtData_CHARACTERS_SIZE 50 +#define v2gKeyInfoType_MgmtData_ARRAY_SIZE 0 +struct v2gKeyInfoType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gKeyInfoType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":KeyName, http://www.w3.org/2001/XMLSchema,string */ + struct { + struct { + exi_string_character_t characters[v2gKeyInfoType_KeyName_CHARACTERS_SIZE]; + uint16_t charactersLen; + } array[v2gKeyInfoType_KeyName_ARRAY_SIZE]; + uint16_t arrayLen; + } KeyName; + /* element: "http://www.w3.org/2000/09/xmldsig#":KeyValue, Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyValueType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":DSAKeyValue|"http://www.w3.org/2000/09/xmldsig#":RSAKeyValue|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))', derivedBy='RESTRICTION'. */ + struct { + struct v2gKeyValueType array[v2gKeyInfoType_KeyValue_ARRAY_SIZE]; + uint16_t arrayLen; + } KeyValue; + /* element: "http://www.w3.org/2000/09/xmldsig#":RetrievalMethod, Complex type name='http://www.w3.org/2000/09/xmldsig#,RetrievalMethodType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1})', derivedBy='RESTRICTION'. */ + struct { + struct v2gRetrievalMethodType array[v2gKeyInfoType_RetrievalMethod_ARRAY_SIZE]; + uint16_t arrayLen; + } RetrievalMethod; + /* element: "http://www.w3.org/2000/09/xmldsig#":X509Data, Complex type name='http://www.w3.org/2000/09/xmldsig#,X509DataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":X509IssuerSerial|"http://www.w3.org/2000/09/xmldsig#":X509SKI|"http://www.w3.org/2000/09/xmldsig#":X509SubjectName|"http://www.w3.org/2000/09/xmldsig#":X509Certificate|"http://www.w3.org/2000/09/xmldsig#":X509CRL|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ + struct { + struct v2gX509DataType array[v2gKeyInfoType_X509Data_ARRAY_SIZE]; + uint16_t arrayLen; + } X509Data; + /* element: "http://www.w3.org/2000/09/xmldsig#":PGPData, Complex type name='http://www.w3.org/2000/09/xmldsig#,PGPDataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":PGPKeyID,"http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})|("http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED}))', derivedBy='RESTRICTION'. */ + struct { + struct v2gPGPDataType array[v2gKeyInfoType_PGPData_ARRAY_SIZE]; + uint16_t arrayLen; + } PGPData; + /* element: "http://www.w3.org/2000/09/xmldsig#":SPKIData, Complex type name='http://www.w3.org/2000/09/xmldsig#,SPKIDataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SPKISexp,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-1}){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ + struct { + struct v2gSPKIDataType array[v2gKeyInfoType_SPKIData_ARRAY_SIZE]; + uint16_t arrayLen; + } SPKIData; + /* element: "http://www.w3.org/2000/09/xmldsig#":MgmtData, http://www.w3.org/2001/XMLSchema,string */ + struct { + struct { + exi_string_character_t characters[v2gKeyInfoType_MgmtData_CHARACTERS_SIZE]; + uint16_t charactersLen; + } array[v2gKeyInfoType_MgmtData_ARRAY_SIZE]; + uint16_t arrayLen; + } MgmtData; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDetailResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":ServiceID,"urn:iso:15118:2:2013:MsgBody":ServiceParameterList{0-1})', derivedBy='EXTENSION'. */ +struct v2gServiceDetailResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":ServiceID, urn:iso:15118:2:2013:MsgDataTypes,serviceIDType */ + uint16_t ServiceID ; + /* element: "urn:iso:15118:2:2013:MsgBody":ServiceParameterList, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceParameterListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ParameterSet{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gServiceParameterListType ServiceParameterList ; + unsigned int ServiceParameterList_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SalesTariffType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SalesTariffID,"urn:iso:15118:2:2013:MsgDataTypes":SalesTariffDescription{0-1},"urn:iso:15118:2:2013:MsgDataTypes":NumEPriceLevels{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SalesTariffEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gSalesTariffType_Id_CHARACTERS_SIZE 50 +#define v2gSalesTariffType_SalesTariffDescription_CHARACTERS_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,tariffDescriptionType is 32 */ +#define v2gSalesTariffType_SalesTariffEntry_ARRAY_SIZE 5 +struct v2gSalesTariffType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gSalesTariffType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SalesTariffID, urn:iso:15118:2:2013:MsgDataTypes,SAIDType */ + uint8_t SalesTariffID ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SalesTariffDescription, urn:iso:15118:2:2013:MsgDataTypes,tariffDescriptionType */ + struct { + exi_string_character_t characters[v2gSalesTariffType_SalesTariffDescription_CHARACTERS_SIZE]; + uint16_t charactersLen; + } SalesTariffDescription ; + unsigned int SalesTariffDescription_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":NumEPriceLevels, http://www.w3.org/2001/XMLSchema,unsignedByte */ + uint8_t NumEPriceLevels ; + unsigned int NumEPriceLevels_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SalesTariffEntry, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SalesTariffEntryType', base type name='EntryType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2013:MsgDataTypes":EPriceLevel{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ConsumptionCost{0-3}))', derivedBy='EXTENSION'. */ + struct { + struct v2gSalesTariffEntryType array[v2gSalesTariffType_SalesTariffEntry_ARRAY_SIZE]; + uint16_t arrayLen; + } SalesTariffEntry; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PMaxScheduleType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":PMaxScheduleEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gPMaxScheduleType_PMaxScheduleEntry_ARRAY_SIZE 5 +struct v2gPMaxScheduleType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":PMaxScheduleEntry, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PMaxScheduleEntryType', base type name='EntryType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2013:MsgDataTypes":PMax))', derivedBy='EXTENSION'. */ + struct { + struct v2gPMaxScheduleEntryType array[v2gPMaxScheduleType_PMaxScheduleEntry_ARRAY_SIZE]; + uint16_t arrayLen; + } PMaxScheduleEntry; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SAScheduleTupleType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgDataTypes":PMaxSchedule,"urn:iso:15118:2:2013:MsgDataTypes":SalesTariff{0-1})', derivedBy='RESTRICTION'. */ +struct v2gSAScheduleTupleType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTupleID, urn:iso:15118:2:2013:MsgDataTypes,SAIDType */ + uint8_t SAScheduleTupleID ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":PMaxSchedule, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PMaxScheduleType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":PMaxScheduleEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gPMaxScheduleType PMaxSchedule ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SalesTariff, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SalesTariffType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SalesTariffID,"urn:iso:15118:2:2013:MsgDataTypes":SalesTariffDescription{0-1},"urn:iso:15118:2:2013:MsgDataTypes":NumEPriceLevels{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SalesTariffEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gSalesTariffType SalesTariff ; + unsigned int SalesTariff_isUsed:1; +}; + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SignedInfo,"http://www.w3.org/2000/09/xmldsig#":SignatureValue,"http://www.w3.org/2000/09/xmldsig#":KeyInfo{0-1},"http://www.w3.org/2000/09/xmldsig#":Object{0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +#define v2gSignatureType_Id_CHARACTERS_SIZE 50 +#define v2gSignatureType_Object_ARRAY_SIZE 0 +struct v2gSignatureType { + /* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ + struct { + exi_string_character_t characters[v2gSignatureType_Id_CHARACTERS_SIZE]; + uint16_t charactersLen; + } Id ; + unsigned int Id_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":SignedInfo, Complex type name='http://www.w3.org/2000/09/xmldsig#,SignedInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":CanonicalizationMethod,"http://www.w3.org/2000/09/xmldsig#":SignatureMethod,"http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gSignedInfoType SignedInfo ; + /* element: "http://www.w3.org/2000/09/xmldsig#":SignatureValue, Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureValueType', base type name='base64Binary', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ + struct v2gSignatureValueType SignatureValue ; + /* element: "http://www.w3.org/2000/09/xmldsig#":KeyInfo, Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyInfoType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":KeyName|"http://www.w3.org/2000/09/xmldsig#":KeyValue|"http://www.w3.org/2000/09/xmldsig#":RetrievalMethod|"http://www.w3.org/2000/09/xmldsig#":X509Data|"http://www.w3.org/2000/09/xmldsig#":PGPData|"http://www.w3.org/2000/09/xmldsig#":SPKIData|"http://www.w3.org/2000/09/xmldsig#":MgmtData|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ + struct v2gKeyInfoType KeyInfo ; + unsigned int KeyInfo_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":Object, Complex type name='http://www.w3.org/2000/09/xmldsig#,ObjectType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##any])){0-UNBOUNDED}', derivedBy='RESTRICTION'. */ + struct { + struct v2gObjectType array[v2gSignatureType_Object_ARRAY_SIZE]; + uint16_t arrayLen; + } Object; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgHeader,MessageHeaderType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgHeader":SessionID,"urn:iso:15118:2:2013:MsgHeader":Notification{0-1},"http://www.w3.org/2000/09/xmldsig#":Signature{0-1})', derivedBy='RESTRICTION'. */ +#define v2gMessageHeaderType_SessionID_BYTES_SIZE 8 /* XML schema facet maxLength for urn:iso:15118:2:2013:MsgDataTypes,sessionIDType is 8 */ +struct v2gMessageHeaderType { + /* element: "urn:iso:15118:2:2013:MsgHeader":SessionID, urn:iso:15118:2:2013:MsgDataTypes,sessionIDType */ + struct { + uint8_t bytes[v2gMessageHeaderType_SessionID_BYTES_SIZE]; + uint16_t bytesLen; + } SessionID ; + /* element: "urn:iso:15118:2:2013:MsgHeader":Notification, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,NotificationType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":FaultCode,"urn:iso:15118:2:2013:MsgDataTypes":FaultMsg{0-1})', derivedBy='RESTRICTION'. */ + struct v2gNotificationType Notification ; + unsigned int Notification_isUsed:1; + /* element: "http://www.w3.org/2000/09/xmldsig#":Signature, Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SignedInfo,"http://www.w3.org/2000/09/xmldsig#":SignatureValue,"http://www.w3.org/2000/09/xmldsig#":KeyInfo{0-1},"http://www.w3.org/2000/09/xmldsig#":Object{0-UNBOUNDED})', derivedBy='RESTRICTION'. */ + struct v2gSignatureType Signature ; + unsigned int Signature_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SAScheduleListType', base type name='SASchedulesType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTuple{1-3})', derivedBy='EXTENSION'. */ +#define v2gSAScheduleListType_SAScheduleTuple_ARRAY_SIZE 3 +struct v2gSAScheduleListType { + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTuple, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SAScheduleTupleType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgDataTypes":PMaxSchedule,"urn:iso:15118:2:2013:MsgDataTypes":SalesTariff{0-1})', derivedBy='RESTRICTION'. */ + struct { + struct v2gSAScheduleTupleType array[v2gSAScheduleListType_SAScheduleTuple_ARRAY_SIZE]; + uint16_t arrayLen; + } SAScheduleTuple; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargeParameterDiscoveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing,"urn:iso:15118:2:2013:MsgDataTypes":SASchedules{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEChargeParameter)', derivedBy='EXTENSION'. */ +struct v2gChargeParameterDiscoveryResType { + /* element: "urn:iso:15118:2:2013:MsgBody":ResponseCode, urn:iso:15118:2:2013:MsgDataTypes,responseCodeType */ + v2gresponseCodeType ResponseCode ; + /* element: "urn:iso:15118:2:2013:MsgBody":EVSEProcessing, urn:iso:15118:2:2013:MsgDataTypes,EVSEProcessingType */ + v2gEVSEProcessingType EVSEProcessing ; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SASchedules, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SASchedulesType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ + struct v2gSASchedulesType SASchedules ; + unsigned int SASchedules_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":SAScheduleList, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SAScheduleListType', base type name='SASchedulesType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTuple{1-3})', derivedBy='EXTENSION'. */ + struct v2gSAScheduleListType SAScheduleList ; + unsigned int SAScheduleList_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":EVSEChargeParameter, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVSEChargeParameterType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ + struct v2gEVSEChargeParameterType EVSEChargeParameter ; + unsigned int EVSEChargeParameter_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":AC_EVSEChargeParameter, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEChargeParameterType', base type name='EVSEChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":AC_EVSEStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVSENominalVoltage,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaxCurrent)', derivedBy='EXTENSION'. */ + struct v2gAC_EVSEChargeParameterType AC_EVSEChargeParameter ; + unsigned int AC_EVSEChargeParameter_isUsed:1; + /* element: "urn:iso:15118:2:2013:MsgDataTypes":DC_EVSEChargeParameter, Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEChargeParameterType', base type name='EVSEChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumPowerLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSECurrentRegulationTolerance{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEPeakCurrentRipple,"urn:iso:15118:2:2013:MsgDataTypes":EVSEEnergyToBeDelivered{0-1})', derivedBy='EXTENSION'. */ + struct v2gDC_EVSEChargeParameterType DC_EVSEChargeParameter ; + unsigned int DC_EVSEChargeParameter_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,BodyType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":BodyElement{0-1})', derivedBy='RESTRICTION'. */ +struct v2gBodyType { + union { /* substitutionGroup */ + /* element: "urn:iso:15118:2:2013:MsgBody":BodyElement, Complex type name='urn:iso:15118:2:2013:MsgBody,BodyBaseType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ + struct v2gBodyBaseType BodyElement ; + /* element: "urn:iso:15118:2:2013:MsgBody":SessionSetupReq, Complex type name='urn:iso:15118:2:2013:MsgBody,SessionSetupReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":EVCCID)', derivedBy='EXTENSION'. */ + struct v2gSessionSetupReqType SessionSetupReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":SessionSetupRes, Complex type name='urn:iso:15118:2:2013:MsgBody,SessionSetupResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":EVSETimeStamp{0-1})', derivedBy='EXTENSION'. */ + struct v2gSessionSetupResType SessionSetupRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":ServiceDiscoveryReq, Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDiscoveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgBody":ServiceCategory{0-1})', derivedBy='EXTENSION'. */ + struct v2gServiceDiscoveryReqType ServiceDiscoveryReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":ServiceDiscoveryRes, Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDiscoveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":PaymentOptionList,"urn:iso:15118:2:2013:MsgBody":ChargeService,"urn:iso:15118:2:2013:MsgBody":ServiceList{0-1})', derivedBy='EXTENSION'. */ + struct v2gServiceDiscoveryResType ServiceDiscoveryRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":ServiceDetailReq, Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDetailReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ServiceID)', derivedBy='EXTENSION'. */ + struct v2gServiceDetailReqType ServiceDetailReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":ServiceDetailRes, Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDetailResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":ServiceID,"urn:iso:15118:2:2013:MsgBody":ServiceParameterList{0-1})', derivedBy='EXTENSION'. */ + struct v2gServiceDetailResType ServiceDetailRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":PaymentServiceSelectionReq, Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentServiceSelectionReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":SelectedPaymentOption,"urn:iso:15118:2:2013:MsgBody":SelectedServiceList)', derivedBy='EXTENSION'. */ + struct v2gPaymentServiceSelectionReqType PaymentServiceSelectionReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":PaymentServiceSelectionRes, Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentServiceSelectionResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode)', derivedBy='EXTENSION'. */ + struct v2gPaymentServiceSelectionResType PaymentServiceSelectionRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":PaymentDetailsReq, Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentDetailsReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain)', derivedBy='EXTENSION'. */ + struct v2gPaymentDetailsReqType PaymentDetailsReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":PaymentDetailsRes, Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentDetailsResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":GenChallenge,"urn:iso:15118:2:2013:MsgBody":EVSETimeStamp)', derivedBy='EXTENSION'. */ + struct v2gPaymentDetailsResType PaymentDetailsRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":AuthorizationReq, Complex type name='urn:iso:15118:2:2013:MsgBody,AuthorizationReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":GenChallenge{0-1})', derivedBy='EXTENSION'. */ + struct v2gAuthorizationReqType AuthorizationReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":AuthorizationRes, Complex type name='urn:iso:15118:2:2013:MsgBody,AuthorizationResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing)', derivedBy='EXTENSION'. */ + struct v2gAuthorizationResType AuthorizationRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":ChargeParameterDiscoveryReq, Complex type name='urn:iso:15118:2:2013:MsgBody,ChargeParameterDiscoveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":MaxEntriesSAScheduleTuple{0-1},"urn:iso:15118:2:2013:MsgBody":RequestedEnergyTransferMode,"urn:iso:15118:2:2013:MsgDataTypes":EVChargeParameter)', derivedBy='EXTENSION'. */ + struct v2gChargeParameterDiscoveryReqType ChargeParameterDiscoveryReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":ChargeParameterDiscoveryRes, Complex type name='urn:iso:15118:2:2013:MsgBody,ChargeParameterDiscoveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing,"urn:iso:15118:2:2013:MsgDataTypes":SASchedules{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEChargeParameter)', derivedBy='EXTENSION'. */ + struct v2gChargeParameterDiscoveryResType ChargeParameterDiscoveryRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":PowerDeliveryReq, Complex type name='urn:iso:15118:2:2013:MsgBody,PowerDeliveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ChargeProgress,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":ChargingProfile{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVPowerDeliveryParameter{0-1})', derivedBy='EXTENSION'. */ + struct v2gPowerDeliveryReqType PowerDeliveryReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":PowerDeliveryRes, Complex type name='urn:iso:15118:2:2013:MsgBody,PowerDeliveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus)', derivedBy='EXTENSION'. */ + struct v2gPowerDeliveryResType PowerDeliveryRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":MeteringReceiptReq, Complex type name='urn:iso:15118:2:2013:MsgBody,MeteringReceiptReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":SessionID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2013:MsgBody":MeterInfo)', derivedBy='EXTENSION'. */ + struct v2gMeteringReceiptReqType MeteringReceiptReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":MeteringReceiptRes, Complex type name='urn:iso:15118:2:2013:MsgBody,MeteringReceiptResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus)', derivedBy='EXTENSION'. */ + struct v2gMeteringReceiptResType MeteringReceiptRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":SessionStopReq, Complex type name='urn:iso:15118:2:2013:MsgBody,SessionStopReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ChargingSession)', derivedBy='EXTENSION'. */ + struct v2gSessionStopReqType SessionStopReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":SessionStopRes, Complex type name='urn:iso:15118:2:2013:MsgBody,SessionStopResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode)', derivedBy='EXTENSION'. */ + struct v2gSessionStopResType SessionStopRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":CertificateUpdateReq, Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateUpdateReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs)', derivedBy='EXTENSION'. */ + struct v2gCertificateUpdateReqType CertificateUpdateReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":CertificateUpdateRes, Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateUpdateResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2013:MsgBody":DHpublickey,"urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":RetryCounter{0-1})', derivedBy='EXTENSION'. */ + struct v2gCertificateUpdateResType CertificateUpdateRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":CertificateInstallationReq, Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateInstallationReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":OEMProvisioningCert,"urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs)', derivedBy='EXTENSION'. */ + struct v2gCertificateInstallationReqType CertificateInstallationReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":CertificateInstallationRes, Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateInstallationResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2013:MsgBody":DHpublickey,"urn:iso:15118:2:2013:MsgBody":eMAID)', derivedBy='EXTENSION'. */ + struct v2gCertificateInstallationResType CertificateInstallationRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":ChargingStatusReq, Complex type name='urn:iso:15118:2:2013:MsgBody,ChargingStatusReqType', base type name='BodyBaseType', content type='EMPTY', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ + struct v2gChargingStatusReqType ChargingStatusReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":ChargingStatusRes, Complex type name='urn:iso:15118:2:2013:MsgBody,ChargingStatusResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":EVSEMaxCurrent{0-1},"urn:iso:15118:2:2013:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2013:MsgBody":ReceiptRequired{0-1},"urn:iso:15118:2:2013:MsgBody":AC_EVSEStatus)', derivedBy='EXTENSION'. */ + struct v2gChargingStatusResType ChargingStatusRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":CableCheckReq, Complex type name='urn:iso:15118:2:2013:MsgBody,CableCheckReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus)', derivedBy='EXTENSION'. */ + struct v2gCableCheckReqType CableCheckReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":CableCheckRes, Complex type name='urn:iso:15118:2:2013:MsgBody,CableCheckResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing)', derivedBy='EXTENSION'. */ + struct v2gCableCheckResType CableCheckRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":PreChargeReq, Complex type name='urn:iso:15118:2:2013:MsgBody,PreChargeReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus,"urn:iso:15118:2:2013:MsgBody":EVTargetVoltage,"urn:iso:15118:2:2013:MsgBody":EVTargetCurrent)', derivedBy='EXTENSION'. */ + struct v2gPreChargeReqType PreChargeReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":PreChargeRes, Complex type name='urn:iso:15118:2:2013:MsgBody,PreChargeResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage)', derivedBy='EXTENSION'. */ + struct v2gPreChargeResType PreChargeRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":CurrentDemandReq, Complex type name='urn:iso:15118:2:2013:MsgBody,CurrentDemandReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus,"urn:iso:15118:2:2013:MsgBody":EVTargetCurrent,"urn:iso:15118:2:2013:MsgBody":EVMaximumVoltageLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVMaximumCurrentLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgBody":BulkChargingComplete{0-1},"urn:iso:15118:2:2013:MsgBody":ChargingComplete,"urn:iso:15118:2:2013:MsgBody":RemainingTimeToFullSoC{0-1},"urn:iso:15118:2:2013:MsgBody":RemainingTimeToBulkSoC{0-1},"urn:iso:15118:2:2013:MsgBody":EVTargetVoltage)', derivedBy='EXTENSION'. */ + struct v2gCurrentDemandReqType CurrentDemandReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":CurrentDemandRes, Complex type name='urn:iso:15118:2:2013:MsgBody,CurrentDemandResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage,"urn:iso:15118:2:2013:MsgBody":EVSEPresentCurrent,"urn:iso:15118:2:2013:MsgBody":EVSECurrentLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEVoltageLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEPowerLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEMaximumVoltageLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEMaximumCurrentLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2013:MsgBody":ReceiptRequired{0-1})', derivedBy='EXTENSION'. */ + struct v2gCurrentDemandResType CurrentDemandRes ; + /* element: "urn:iso:15118:2:2013:MsgBody":WeldingDetectionReq, Complex type name='urn:iso:15118:2:2013:MsgBody,WeldingDetectionReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus)', derivedBy='EXTENSION'. */ + struct v2gWeldingDetectionReqType WeldingDetectionReq ; + /* element: "urn:iso:15118:2:2013:MsgBody":WeldingDetectionRes, Complex type name='urn:iso:15118:2:2013:MsgBody,WeldingDetectionResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage)', derivedBy='EXTENSION'. */ + struct v2gWeldingDetectionResType WeldingDetectionRes ; + }; /* union */ + unsigned int BodyElement_isUsed:1; + unsigned int SessionSetupReq_isUsed:1; + unsigned int SessionSetupRes_isUsed:1; + unsigned int ServiceDiscoveryReq_isUsed:1; + unsigned int ServiceDiscoveryRes_isUsed:1; + unsigned int ServiceDetailReq_isUsed:1; + unsigned int ServiceDetailRes_isUsed:1; + unsigned int PaymentServiceSelectionReq_isUsed:1; + unsigned int PaymentServiceSelectionRes_isUsed:1; + unsigned int PaymentDetailsReq_isUsed:1; + unsigned int PaymentDetailsRes_isUsed:1; + unsigned int AuthorizationReq_isUsed:1; + unsigned int AuthorizationRes_isUsed:1; + unsigned int ChargeParameterDiscoveryReq_isUsed:1; + unsigned int ChargeParameterDiscoveryRes_isUsed:1; + unsigned int PowerDeliveryReq_isUsed:1; + unsigned int PowerDeliveryRes_isUsed:1; + unsigned int MeteringReceiptReq_isUsed:1; + unsigned int MeteringReceiptRes_isUsed:1; + unsigned int SessionStopReq_isUsed:1; + unsigned int SessionStopRes_isUsed:1; + unsigned int CertificateUpdateReq_isUsed:1; + unsigned int CertificateUpdateRes_isUsed:1; + unsigned int CertificateInstallationReq_isUsed:1; + unsigned int CertificateInstallationRes_isUsed:1; + unsigned int ChargingStatusReq_isUsed:1; + unsigned int ChargingStatusRes_isUsed:1; + unsigned int CableCheckReq_isUsed:1; + unsigned int CableCheckRes_isUsed:1; + unsigned int PreChargeReq_isUsed:1; + unsigned int PreChargeRes_isUsed:1; + unsigned int CurrentDemandReq_isUsed:1; + unsigned int CurrentDemandRes_isUsed:1; + unsigned int WeldingDetectionReq_isUsed:1; + unsigned int WeldingDetectionRes_isUsed:1; +}; + +/* Complex type name='urn:iso:15118:2:2013:MsgDef,#AnonType_V2G_Message', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDef":Header,"urn:iso:15118:2:2013:MsgDef":Body)', derivedBy='RESTRICTION'. */ +struct v2gAnonType_V2G_Message { + /* element: "urn:iso:15118:2:2013:MsgDef":Header, Complex type name='urn:iso:15118:2:2013:MsgHeader,MessageHeaderType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgHeader":SessionID,"urn:iso:15118:2:2013:MsgHeader":Notification{0-1},"http://www.w3.org/2000/09/xmldsig#":Signature{0-1})', derivedBy='RESTRICTION'. */ + struct v2gMessageHeaderType Header ; + /* element: "urn:iso:15118:2:2013:MsgDef":Body, Complex type name='urn:iso:15118:2:2013:MsgBody,BodyType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":BodyElement{0-1})', derivedBy='RESTRICTION'. */ + struct v2gBodyType Body ; +}; + + + +#define EXIDocument_MgmtData_CHARACTERS_SIZE 50 +#define EXIDocument_KeyName_CHARACTERS_SIZE 50 +#define EXIDocument_DigestValue_BYTES_SIZE 350 + + +/* Possible root elements of EXI Document */ +struct v2gEXIDocument { +#define USE_UNION_FOR_GLOBAL_ELEMENTS 1 +#ifdef USE_UNION_FOR_GLOBAL_ELEMENTS + union { +#endif + struct v2gAnonType_V2G_Message V2G_Message ; + struct v2gServiceDiscoveryReqType ServiceDiscoveryReq ; + struct v2gServiceDiscoveryResType ServiceDiscoveryRes ; + struct v2gMeteringReceiptReqType MeteringReceiptReq ; + struct v2gPaymentDetailsReqType PaymentDetailsReq ; + struct v2gMeteringReceiptResType MeteringReceiptRes ; + struct v2gPaymentDetailsResType PaymentDetailsRes ; + struct v2gSessionSetupReqType SessionSetupReq ; + struct v2gSessionSetupResType SessionSetupRes ; + struct v2gCableCheckReqType CableCheckReq ; + struct v2gCableCheckResType CableCheckRes ; + struct v2gCertificateInstallationReqType CertificateInstallationReq ; + struct v2gCertificateInstallationResType CertificateInstallationRes ; + struct v2gWeldingDetectionReqType WeldingDetectionReq ; + struct v2gWeldingDetectionResType WeldingDetectionRes ; + struct v2gCertificateUpdateReqType CertificateUpdateReq ; + struct v2gCertificateUpdateResType CertificateUpdateRes ; + struct v2gPaymentServiceSelectionReqType PaymentServiceSelectionReq ; + struct v2gPowerDeliveryReqType PowerDeliveryReq ; + struct v2gPaymentServiceSelectionResType PaymentServiceSelectionRes ; + struct v2gPowerDeliveryResType PowerDeliveryRes ; + struct v2gChargingStatusReqType ChargingStatusReq ; + struct v2gChargingStatusResType ChargingStatusRes ; + struct v2gBodyBaseType BodyElement ; + struct v2gCurrentDemandReqType CurrentDemandReq ; + struct v2gPreChargeReqType PreChargeReq ; + struct v2gCurrentDemandResType CurrentDemandRes ; + struct v2gPreChargeResType PreChargeRes ; + struct v2gSessionStopReqType SessionStopReq ; + struct v2gAuthorizationReqType AuthorizationReq ; + struct v2gSessionStopResType SessionStopRes ; + struct v2gAuthorizationResType AuthorizationRes ; + struct v2gChargeParameterDiscoveryReqType ChargeParameterDiscoveryReq ; + struct v2gChargeParameterDiscoveryResType ChargeParameterDiscoveryRes ; + struct v2gServiceDetailReqType ServiceDetailReq ; + struct v2gServiceDetailResType ServiceDetailRes ; + struct v2gDC_EVSEStatusType DC_EVSEStatus ; + struct v2gRelativeTimeIntervalType RelativeTimeInterval ; + struct v2gSalesTariffEntryType SalesTariffEntry ; + struct v2gDC_EVPowerDeliveryParameterType DC_EVPowerDeliveryParameter ; + struct v2gSASchedulesType SASchedules ; + struct v2gAC_EVChargeParameterType AC_EVChargeParameter ; + struct v2gSAScheduleListType SAScheduleList ; + struct v2gDC_EVStatusType DC_EVStatus ; + struct v2gEVStatusType EVStatus ; + struct v2gDC_EVChargeParameterType DC_EVChargeParameter ; + struct v2gDC_EVSEChargeParameterType DC_EVSEChargeParameter ; + struct v2gEVSEStatusType EVSEStatus ; + struct v2gIntervalType TimeInterval ; + struct v2gEVPowerDeliveryParameterType EVPowerDeliveryParameter ; + struct v2gEVSEChargeParameterType EVSEChargeParameter ; + struct v2gAC_EVSEStatusType AC_EVSEStatus ; + struct v2gEntryType Entry ; + struct v2gAC_EVSEChargeParameterType AC_EVSEChargeParameter ; + struct v2gPMaxScheduleEntryType PMaxScheduleEntry ; + struct v2gEVChargeParameterType EVChargeParameter ; + struct v2gSignaturePropertyType SignatureProperty ; + struct v2gDSAKeyValueType DSAKeyValue ; + struct v2gSignaturePropertiesType SignatureProperties ; + struct v2gKeyValueType KeyValue ; + struct v2gTransformsType Transforms ; + struct v2gDigestMethodType DigestMethod ; + struct v2gSignatureType Signature ; + struct v2gRetrievalMethodType RetrievalMethod ; + struct v2gManifestType Manifest ; + struct v2gReferenceType Reference ; + struct v2gCanonicalizationMethodType CanonicalizationMethod ; + struct v2gRSAKeyValueType RSAKeyValue ; + struct v2gTransformType Transform ; + struct v2gPGPDataType PGPData ; + struct { + exi_string_character_t characters[EXIDocument_MgmtData_CHARACTERS_SIZE]; + uint16_t charactersLen; + } MgmtData ; + struct v2gSignatureMethodType SignatureMethod ; + struct v2gKeyInfoType KeyInfo ; + struct v2gSPKIDataType SPKIData ; + struct v2gX509DataType X509Data ; + struct v2gSignatureValueType SignatureValue ; + struct { + exi_string_character_t characters[EXIDocument_KeyName_CHARACTERS_SIZE]; + uint16_t charactersLen; + } KeyName ; + struct { + uint8_t bytes[EXIDocument_DigestValue_BYTES_SIZE]; + uint16_t bytesLen; + } DigestValue ; + struct v2gSignedInfoType SignedInfo ; + struct v2gObjectType Object ; +#ifdef USE_UNION_FOR_GLOBAL_ELEMENTS + }; +#endif + unsigned int V2G_Message_isUsed:1; + unsigned int ServiceDiscoveryReq_isUsed:1; + unsigned int ServiceDiscoveryRes_isUsed:1; + unsigned int MeteringReceiptReq_isUsed:1; + unsigned int PaymentDetailsReq_isUsed:1; + unsigned int MeteringReceiptRes_isUsed:1; + unsigned int PaymentDetailsRes_isUsed:1; + unsigned int SessionSetupReq_isUsed:1; + unsigned int SessionSetupRes_isUsed:1; + unsigned int CableCheckReq_isUsed:1; + unsigned int CableCheckRes_isUsed:1; + unsigned int CertificateInstallationReq_isUsed:1; + unsigned int CertificateInstallationRes_isUsed:1; + unsigned int WeldingDetectionReq_isUsed:1; + unsigned int WeldingDetectionRes_isUsed:1; + unsigned int CertificateUpdateReq_isUsed:1; + unsigned int CertificateUpdateRes_isUsed:1; + unsigned int PaymentServiceSelectionReq_isUsed:1; + unsigned int PowerDeliveryReq_isUsed:1; + unsigned int PaymentServiceSelectionRes_isUsed:1; + unsigned int PowerDeliveryRes_isUsed:1; + unsigned int ChargingStatusReq_isUsed:1; + unsigned int ChargingStatusRes_isUsed:1; + unsigned int BodyElement_isUsed:1; + unsigned int CurrentDemandReq_isUsed:1; + unsigned int PreChargeReq_isUsed:1; + unsigned int CurrentDemandRes_isUsed:1; + unsigned int PreChargeRes_isUsed:1; + unsigned int SessionStopReq_isUsed:1; + unsigned int AuthorizationReq_isUsed:1; + unsigned int SessionStopRes_isUsed:1; + unsigned int AuthorizationRes_isUsed:1; + unsigned int ChargeParameterDiscoveryReq_isUsed:1; + unsigned int ChargeParameterDiscoveryRes_isUsed:1; + unsigned int ServiceDetailReq_isUsed:1; + unsigned int ServiceDetailRes_isUsed:1; + unsigned int DC_EVSEStatus_isUsed:1; + unsigned int RelativeTimeInterval_isUsed:1; + unsigned int SalesTariffEntry_isUsed:1; + unsigned int DC_EVPowerDeliveryParameter_isUsed:1; + unsigned int SASchedules_isUsed:1; + unsigned int AC_EVChargeParameter_isUsed:1; + unsigned int SAScheduleList_isUsed:1; + unsigned int DC_EVStatus_isUsed:1; + unsigned int EVStatus_isUsed:1; + unsigned int DC_EVChargeParameter_isUsed:1; + unsigned int DC_EVSEChargeParameter_isUsed:1; + unsigned int EVSEStatus_isUsed:1; + unsigned int TimeInterval_isUsed:1; + unsigned int EVPowerDeliveryParameter_isUsed:1; + unsigned int EVSEChargeParameter_isUsed:1; + unsigned int AC_EVSEStatus_isUsed:1; + unsigned int Entry_isUsed:1; + unsigned int AC_EVSEChargeParameter_isUsed:1; + unsigned int PMaxScheduleEntry_isUsed:1; + unsigned int EVChargeParameter_isUsed:1; + unsigned int SignatureProperty_isUsed:1; + unsigned int DSAKeyValue_isUsed:1; + unsigned int SignatureProperties_isUsed:1; + unsigned int KeyValue_isUsed:1; + unsigned int Transforms_isUsed:1; + unsigned int DigestMethod_isUsed:1; + unsigned int Signature_isUsed:1; + unsigned int RetrievalMethod_isUsed:1; + unsigned int Manifest_isUsed:1; + unsigned int Reference_isUsed:1; + unsigned int CanonicalizationMethod_isUsed:1; + unsigned int RSAKeyValue_isUsed:1; + unsigned int Transform_isUsed:1; + unsigned int PGPData_isUsed:1; + unsigned int MgmtData_isUsed:1; + unsigned int SignatureMethod_isUsed:1; + unsigned int KeyInfo_isUsed:1; + unsigned int SPKIData_isUsed:1; + unsigned int X509Data_isUsed:1; + unsigned int SignatureValue_isUsed:1; + unsigned int KeyName_isUsed:1; + unsigned int DigestValue_isUsed:1; + unsigned int SignedInfo_isUsed:1; + unsigned int Object_isUsed:1; + + + int _warning_; +}; + +/* Initialization methods for structs */ + +void init_v2gEXIDocument(struct v2gEXIDocument* exiDoc); +void init_v2gServiceDetailResType(struct v2gServiceDetailResType* v2gServiceDetailResType); +void init_v2gSPKIDataType(struct v2gSPKIDataType* v2gSPKIDataType); +void init_v2gAuthorizationResType(struct v2gAuthorizationResType* v2gAuthorizationResType); +void init_v2gBodyType(struct v2gBodyType* v2gBodyType); +void init_v2gPaymentServiceSelectionReqType(struct v2gPaymentServiceSelectionReqType* v2gPaymentServiceSelectionReqType); +void init_v2gEVSEStatusType(struct v2gEVSEStatusType* v2gEVSEStatusType); +void init_v2gSelectedServiceType(struct v2gSelectedServiceType* v2gSelectedServiceType); +void init_v2gEntryType(struct v2gEntryType* v2gEntryType); +void init_v2gDC_EVSEChargeParameterType(struct v2gDC_EVSEChargeParameterType* v2gDC_EVSEChargeParameterType); +void init_v2gSalesTariffType(struct v2gSalesTariffType* v2gSalesTariffType); +void init_v2gPMaxScheduleType(struct v2gPMaxScheduleType* v2gPMaxScheduleType); +void init_v2gCostType(struct v2gCostType* v2gCostType); +void init_v2gChargeServiceType(struct v2gChargeServiceType* v2gChargeServiceType); +void init_v2gPMaxScheduleEntryType(struct v2gPMaxScheduleEntryType* v2gPMaxScheduleEntryType); +void init_v2gServiceListType(struct v2gServiceListType* v2gServiceListType); +void init_v2gKeyValueType(struct v2gKeyValueType* v2gKeyValueType); +void init_v2gPaymentServiceSelectionResType(struct v2gPaymentServiceSelectionResType* v2gPaymentServiceSelectionResType); +void init_v2gSignatureMethodType(struct v2gSignatureMethodType* v2gSignatureMethodType); +void init_v2gMeteringReceiptResType(struct v2gMeteringReceiptResType* v2gMeteringReceiptResType); +void init_v2gMessageHeaderType(struct v2gMessageHeaderType* v2gMessageHeaderType); +void init_v2gRetrievalMethodType(struct v2gRetrievalMethodType* v2gRetrievalMethodType); +void init_v2gEVChargeParameterType(struct v2gEVChargeParameterType* v2gEVChargeParameterType); +void init_v2gCertificateInstallationReqType(struct v2gCertificateInstallationReqType* v2gCertificateInstallationReqType); +void init_v2gChargeParameterDiscoveryResType(struct v2gChargeParameterDiscoveryResType* v2gChargeParameterDiscoveryResType); +void init_v2gWeldingDetectionReqType(struct v2gWeldingDetectionReqType* v2gWeldingDetectionReqType); +void init_v2gCableCheckReqType(struct v2gCableCheckReqType* v2gCableCheckReqType); +void init_v2gParameterType(struct v2gParameterType* v2gParameterType); +void init_v2gEVSEChargeParameterType(struct v2gEVSEChargeParameterType* v2gEVSEChargeParameterType); +void init_v2gManifestType(struct v2gManifestType* v2gManifestType); +void init_v2gDC_EVStatusType(struct v2gDC_EVStatusType* v2gDC_EVStatusType); +void init_v2gPaymentDetailsReqType(struct v2gPaymentDetailsReqType* v2gPaymentDetailsReqType); +void init_v2gSAScheduleListType(struct v2gSAScheduleListType* v2gSAScheduleListType); +void init_v2gRSAKeyValueType(struct v2gRSAKeyValueType* v2gRSAKeyValueType); +void init_v2gAC_EVSEChargeParameterType(struct v2gAC_EVSEChargeParameterType* v2gAC_EVSEChargeParameterType); +void init_v2gTransformsType(struct v2gTransformsType* v2gTransformsType); +void init_v2gWeldingDetectionResType(struct v2gWeldingDetectionResType* v2gWeldingDetectionResType); +void init_v2gConsumptionCostType(struct v2gConsumptionCostType* v2gConsumptionCostType); +void init_v2gChargingStatusResType(struct v2gChargingStatusResType* v2gChargingStatusResType); +void init_v2gEVStatusType(struct v2gEVStatusType* v2gEVStatusType); +void init_v2gPGPDataType(struct v2gPGPDataType* v2gPGPDataType); +void init_v2gSessionStopResType(struct v2gSessionStopResType* v2gSessionStopResType); +void init_v2gServiceDiscoveryReqType(struct v2gServiceDiscoveryReqType* v2gServiceDiscoveryReqType); +void init_v2gAuthorizationReqType(struct v2gAuthorizationReqType* v2gAuthorizationReqType); +void init_v2gSAScheduleTupleType(struct v2gSAScheduleTupleType* v2gSAScheduleTupleType); +void init_v2gPhysicalValueType(struct v2gPhysicalValueType* v2gPhysicalValueType); +void init_v2gDigestMethodType(struct v2gDigestMethodType* v2gDigestMethodType); +void init_v2gAC_EVSEStatusType(struct v2gAC_EVSEStatusType* v2gAC_EVSEStatusType); +void init_v2gSessionSetupResType(struct v2gSessionSetupResType* v2gSessionSetupResType); +void init_v2gX509IssuerSerialType(struct v2gX509IssuerSerialType* v2gX509IssuerSerialType); +void init_v2gSessionStopReqType(struct v2gSessionStopReqType* v2gSessionStopReqType); +void init_v2gDC_EVSEStatusType(struct v2gDC_EVSEStatusType* v2gDC_EVSEStatusType); +void init_v2gDiffieHellmanPublickeyType(struct v2gDiffieHellmanPublickeyType* v2gDiffieHellmanPublickeyType); +void init_v2gCertificateUpdateReqType(struct v2gCertificateUpdateReqType* v2gCertificateUpdateReqType); +void init_v2gBodyBaseType(struct v2gBodyBaseType* v2gBodyBaseType); +void init_v2gDC_EVChargeParameterType(struct v2gDC_EVChargeParameterType* v2gDC_EVChargeParameterType); +void init_v2gSubCertificatesType(struct v2gSubCertificatesType* v2gSubCertificatesType); +void init_v2gSupportedEnergyTransferModeType(struct v2gSupportedEnergyTransferModeType* v2gSupportedEnergyTransferModeType); +void init_v2gChargingStatusReqType(struct v2gChargingStatusReqType* v2gChargingStatusReqType); +void init_v2gSignaturePropertyType(struct v2gSignaturePropertyType* v2gSignaturePropertyType); +void init_v2gContractSignatureEncryptedPrivateKeyType(struct v2gContractSignatureEncryptedPrivateKeyType* v2gContractSignatureEncryptedPrivateKeyType); +void init_v2gReferenceType(struct v2gReferenceType* v2gReferenceType); +void init_v2gCurrentDemandResType(struct v2gCurrentDemandResType* v2gCurrentDemandResType); +void init_v2gCanonicalizationMethodType(struct v2gCanonicalizationMethodType* v2gCanonicalizationMethodType); +void init_v2gTransformType(struct v2gTransformType* v2gTransformType); +void init_v2gCertificateChainType(struct v2gCertificateChainType* v2gCertificateChainType); +void init_v2gSignatureValueType(struct v2gSignatureValueType* v2gSignatureValueType); +void init_v2gEVPowerDeliveryParameterType(struct v2gEVPowerDeliveryParameterType* v2gEVPowerDeliveryParameterType); +void init_v2gServiceDetailReqType(struct v2gServiceDetailReqType* v2gServiceDetailReqType); +void init_v2gPaymentDetailsResType(struct v2gPaymentDetailsResType* v2gPaymentDetailsResType); +void init_v2gX509DataType(struct v2gX509DataType* v2gX509DataType); +void init_v2gDSAKeyValueType(struct v2gDSAKeyValueType* v2gDSAKeyValueType); +void init_v2gPowerDeliveryResType(struct v2gPowerDeliveryResType* v2gPowerDeliveryResType); +void init_v2gChargeParameterDiscoveryReqType(struct v2gChargeParameterDiscoveryReqType* v2gChargeParameterDiscoveryReqType); +void init_v2gParameterSetType(struct v2gParameterSetType* v2gParameterSetType); +void init_v2gServiceDiscoveryResType(struct v2gServiceDiscoveryResType* v2gServiceDiscoveryResType); +void init_v2gAnonType_V2G_Message(struct v2gAnonType_V2G_Message* v2gAnonType_V2G_Message); +void init_v2gSignatureType(struct v2gSignatureType* v2gSignatureType); +void init_v2gEMAIDType(struct v2gEMAIDType* v2gEMAIDType); +void init_v2gCertificateInstallationResType(struct v2gCertificateInstallationResType* v2gCertificateInstallationResType); +void init_v2gCableCheckResType(struct v2gCableCheckResType* v2gCableCheckResType); +void init_v2gMeterInfoType(struct v2gMeterInfoType* v2gMeterInfoType); +void init_v2gAC_EVChargeParameterType(struct v2gAC_EVChargeParameterType* v2gAC_EVChargeParameterType); +void init_v2gServiceParameterListType(struct v2gServiceParameterListType* v2gServiceParameterListType); +void init_v2gCurrentDemandReqType(struct v2gCurrentDemandReqType* v2gCurrentDemandReqType); +void init_v2gSASchedulesType(struct v2gSASchedulesType* v2gSASchedulesType); +void init_v2gIntervalType(struct v2gIntervalType* v2gIntervalType); +void init_v2gPreChargeResType(struct v2gPreChargeResType* v2gPreChargeResType); +void init_v2gSalesTariffEntryType(struct v2gSalesTariffEntryType* v2gSalesTariffEntryType); +void init_v2gPaymentOptionListType(struct v2gPaymentOptionListType* v2gPaymentOptionListType); +void init_v2gSignedInfoType(struct v2gSignedInfoType* v2gSignedInfoType); +void init_v2gSessionSetupReqType(struct v2gSessionSetupReqType* v2gSessionSetupReqType); +void init_v2gSignaturePropertiesType(struct v2gSignaturePropertiesType* v2gSignaturePropertiesType); +void init_v2gProfileEntryType(struct v2gProfileEntryType* v2gProfileEntryType); +void init_v2gPreChargeReqType(struct v2gPreChargeReqType* v2gPreChargeReqType); +void init_v2gListOfRootCertificateIDsType(struct v2gListOfRootCertificateIDsType* v2gListOfRootCertificateIDsType); +void init_v2gDC_EVPowerDeliveryParameterType(struct v2gDC_EVPowerDeliveryParameterType* v2gDC_EVPowerDeliveryParameterType); +void init_v2gRelativeTimeIntervalType(struct v2gRelativeTimeIntervalType* v2gRelativeTimeIntervalType); +void init_v2gChargingProfileType(struct v2gChargingProfileType* v2gChargingProfileType); +void init_v2gCertificateUpdateResType(struct v2gCertificateUpdateResType* v2gCertificateUpdateResType); +void init_v2gMeteringReceiptReqType(struct v2gMeteringReceiptReqType* v2gMeteringReceiptReqType); +void init_v2gServiceType(struct v2gServiceType* v2gServiceType); +void init_v2gNotificationType(struct v2gNotificationType* v2gNotificationType); +void init_v2gKeyInfoType(struct v2gKeyInfoType* v2gKeyInfoType); +void init_v2gSelectedServiceListType(struct v2gSelectedServiceListType* v2gSelectedServiceListType); +void init_v2gPowerDeliveryReqType(struct v2gPowerDeliveryReqType* v2gPowerDeliveryReqType); +void init_v2gObjectType(struct v2gObjectType* v2gObjectType); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/codec/v2gEXIDatatypesDecoder.c b/src/codec/v2gEXIDatatypesDecoder.c new file mode 100644 index 0000000..c5d7ffa --- /dev/null +++ b/src/codec/v2gEXIDatatypesDecoder.c @@ -0,0 +1,15598 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.9 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer

+ *

Schema: V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + + +#include "v2gEXIDatatypesDecoder.h" + +#include "DecoderChannel.h" +#include "EXIHeaderDecoder.h" + +#include "v2gEXIDatatypes.h" +#include "ErrorCodes.h" + +#ifndef EXI_v2g_DATATYPES_DECODER_C +#define EXI_v2g_DATATYPES_DECODER_C + +/** event-code */ +static uint32_t eventCode; +static int errn; +static uint32_t uint32; + + +/* Forward Declarations */ +static int decode_v2gServiceDetailResType(bitstream_t* stream, struct v2gServiceDetailResType* v2gServiceDetailResType); +static int decode_v2gSPKIDataType(bitstream_t* stream, struct v2gSPKIDataType* v2gSPKIDataType); +static int decode_v2gAuthorizationResType(bitstream_t* stream, struct v2gAuthorizationResType* v2gAuthorizationResType); +static int decode_v2gBodyType(bitstream_t* stream, struct v2gBodyType* v2gBodyType); +static int decode_v2gPaymentServiceSelectionReqType(bitstream_t* stream, struct v2gPaymentServiceSelectionReqType* v2gPaymentServiceSelectionReqType); +static int decode_v2gEVSEStatusType(bitstream_t* stream, struct v2gEVSEStatusType* v2gEVSEStatusType); +static int decode_v2gSelectedServiceType(bitstream_t* stream, struct v2gSelectedServiceType* v2gSelectedServiceType); +static int decode_v2gEntryType(bitstream_t* stream, struct v2gEntryType* v2gEntryType); +static int decode_v2gDC_EVSEChargeParameterType(bitstream_t* stream, struct v2gDC_EVSEChargeParameterType* v2gDC_EVSEChargeParameterType); +static int decode_v2gSalesTariffType(bitstream_t* stream, struct v2gSalesTariffType* v2gSalesTariffType); +static int decode_v2gPMaxScheduleType(bitstream_t* stream, struct v2gPMaxScheduleType* v2gPMaxScheduleType); +static int decode_v2gCostType(bitstream_t* stream, struct v2gCostType* v2gCostType); +static int decode_v2gChargeServiceType(bitstream_t* stream, struct v2gChargeServiceType* v2gChargeServiceType); +static int decode_v2gPMaxScheduleEntryType(bitstream_t* stream, struct v2gPMaxScheduleEntryType* v2gPMaxScheduleEntryType); +static int decode_v2gServiceListType(bitstream_t* stream, struct v2gServiceListType* v2gServiceListType); +static int decode_v2gKeyValueType(bitstream_t* stream, struct v2gKeyValueType* v2gKeyValueType); +static int decode_v2gPaymentServiceSelectionResType(bitstream_t* stream, struct v2gPaymentServiceSelectionResType* v2gPaymentServiceSelectionResType); +static int decode_v2gSignatureMethodType(bitstream_t* stream, struct v2gSignatureMethodType* v2gSignatureMethodType); +static int decode_v2gMeteringReceiptResType(bitstream_t* stream, struct v2gMeteringReceiptResType* v2gMeteringReceiptResType); +static int decode_v2gMessageHeaderType(bitstream_t* stream, struct v2gMessageHeaderType* v2gMessageHeaderType); +static int decode_v2gRetrievalMethodType(bitstream_t* stream, struct v2gRetrievalMethodType* v2gRetrievalMethodType); +static int decode_v2gEVChargeParameterType(bitstream_t* stream, struct v2gEVChargeParameterType* v2gEVChargeParameterType); +static int decode_v2gCertificateInstallationReqType(bitstream_t* stream, struct v2gCertificateInstallationReqType* v2gCertificateInstallationReqType); +static int decode_v2gChargeParameterDiscoveryResType(bitstream_t* stream, struct v2gChargeParameterDiscoveryResType* v2gChargeParameterDiscoveryResType); +static int decode_v2gWeldingDetectionReqType(bitstream_t* stream, struct v2gWeldingDetectionReqType* v2gWeldingDetectionReqType); +static int decode_v2gCableCheckReqType(bitstream_t* stream, struct v2gCableCheckReqType* v2gCableCheckReqType); +static int decode_v2gParameterType(bitstream_t* stream, struct v2gParameterType* v2gParameterType); +static int decode_v2gEVSEChargeParameterType(bitstream_t* stream, struct v2gEVSEChargeParameterType* v2gEVSEChargeParameterType); +static int decode_v2gManifestType(bitstream_t* stream, struct v2gManifestType* v2gManifestType); +static int decode_v2gDC_EVStatusType(bitstream_t* stream, struct v2gDC_EVStatusType* v2gDC_EVStatusType); +static int decode_v2gPaymentDetailsReqType(bitstream_t* stream, struct v2gPaymentDetailsReqType* v2gPaymentDetailsReqType); +static int decode_v2gSAScheduleListType(bitstream_t* stream, struct v2gSAScheduleListType* v2gSAScheduleListType); +static int decode_v2gRSAKeyValueType(bitstream_t* stream, struct v2gRSAKeyValueType* v2gRSAKeyValueType); +static int decode_v2gAC_EVSEChargeParameterType(bitstream_t* stream, struct v2gAC_EVSEChargeParameterType* v2gAC_EVSEChargeParameterType); +static int decode_v2gTransformsType(bitstream_t* stream, struct v2gTransformsType* v2gTransformsType); +static int decode_v2gWeldingDetectionResType(bitstream_t* stream, struct v2gWeldingDetectionResType* v2gWeldingDetectionResType); +static int decode_v2gConsumptionCostType(bitstream_t* stream, struct v2gConsumptionCostType* v2gConsumptionCostType); +static int decode_v2gChargingStatusResType(bitstream_t* stream, struct v2gChargingStatusResType* v2gChargingStatusResType); +static int decode_v2gEVStatusType(bitstream_t* stream, struct v2gEVStatusType* v2gEVStatusType); +static int decode_v2gPGPDataType(bitstream_t* stream, struct v2gPGPDataType* v2gPGPDataType); +static int decode_v2gSessionStopResType(bitstream_t* stream, struct v2gSessionStopResType* v2gSessionStopResType); +static int decode_v2gServiceDiscoveryReqType(bitstream_t* stream, struct v2gServiceDiscoveryReqType* v2gServiceDiscoveryReqType); +static int decode_v2gAuthorizationReqType(bitstream_t* stream, struct v2gAuthorizationReqType* v2gAuthorizationReqType); +static int decode_v2gSAScheduleTupleType(bitstream_t* stream, struct v2gSAScheduleTupleType* v2gSAScheduleTupleType); +static int decode_v2gPhysicalValueType(bitstream_t* stream, struct v2gPhysicalValueType* v2gPhysicalValueType); +static int decode_v2gDigestMethodType(bitstream_t* stream, struct v2gDigestMethodType* v2gDigestMethodType); +static int decode_v2gAC_EVSEStatusType(bitstream_t* stream, struct v2gAC_EVSEStatusType* v2gAC_EVSEStatusType); +static int decode_v2gSessionSetupResType(bitstream_t* stream, struct v2gSessionSetupResType* v2gSessionSetupResType); +static int decode_v2gX509IssuerSerialType(bitstream_t* stream, struct v2gX509IssuerSerialType* v2gX509IssuerSerialType); +static int decode_v2gSessionStopReqType(bitstream_t* stream, struct v2gSessionStopReqType* v2gSessionStopReqType); +static int decode_v2gDC_EVSEStatusType(bitstream_t* stream, struct v2gDC_EVSEStatusType* v2gDC_EVSEStatusType); +static int decode_v2gDiffieHellmanPublickeyType(bitstream_t* stream, struct v2gDiffieHellmanPublickeyType* v2gDiffieHellmanPublickeyType); +static int decode_v2gCertificateUpdateReqType(bitstream_t* stream, struct v2gCertificateUpdateReqType* v2gCertificateUpdateReqType); +static int decode_v2gBodyBaseType(bitstream_t* stream, struct v2gBodyBaseType* v2gBodyBaseType); +static int decode_v2gDC_EVChargeParameterType(bitstream_t* stream, struct v2gDC_EVChargeParameterType* v2gDC_EVChargeParameterType); +static int decode_v2gSubCertificatesType(bitstream_t* stream, struct v2gSubCertificatesType* v2gSubCertificatesType); +static int decode_v2gSupportedEnergyTransferModeType(bitstream_t* stream, struct v2gSupportedEnergyTransferModeType* v2gSupportedEnergyTransferModeType); +static int decode_v2gChargingStatusReqType(bitstream_t* stream, struct v2gChargingStatusReqType* v2gChargingStatusReqType); +static int decode_v2gSignaturePropertyType(bitstream_t* stream, struct v2gSignaturePropertyType* v2gSignaturePropertyType); +static int decode_v2gContractSignatureEncryptedPrivateKeyType(bitstream_t* stream, struct v2gContractSignatureEncryptedPrivateKeyType* v2gContractSignatureEncryptedPrivateKeyType); +static int decode_v2gReferenceType(bitstream_t* stream, struct v2gReferenceType* v2gReferenceType); +static int decode_v2gCurrentDemandResType(bitstream_t* stream, struct v2gCurrentDemandResType* v2gCurrentDemandResType); +static int decode_v2gCanonicalizationMethodType(bitstream_t* stream, struct v2gCanonicalizationMethodType* v2gCanonicalizationMethodType); +static int decode_v2gTransformType(bitstream_t* stream, struct v2gTransformType* v2gTransformType); +static int decode_v2gCertificateChainType(bitstream_t* stream, struct v2gCertificateChainType* v2gCertificateChainType); +static int decode_v2gSignatureValueType(bitstream_t* stream, struct v2gSignatureValueType* v2gSignatureValueType); +static int decode_v2gEVPowerDeliveryParameterType(bitstream_t* stream, struct v2gEVPowerDeliveryParameterType* v2gEVPowerDeliveryParameterType); +static int decode_v2gServiceDetailReqType(bitstream_t* stream, struct v2gServiceDetailReqType* v2gServiceDetailReqType); +static int decode_v2gPaymentDetailsResType(bitstream_t* stream, struct v2gPaymentDetailsResType* v2gPaymentDetailsResType); +static int decode_v2gX509DataType(bitstream_t* stream, struct v2gX509DataType* v2gX509DataType); +static int decode_v2gDSAKeyValueType(bitstream_t* stream, struct v2gDSAKeyValueType* v2gDSAKeyValueType); +static int decode_v2gPowerDeliveryResType(bitstream_t* stream, struct v2gPowerDeliveryResType* v2gPowerDeliveryResType); +static int decode_v2gChargeParameterDiscoveryReqType(bitstream_t* stream, struct v2gChargeParameterDiscoveryReqType* v2gChargeParameterDiscoveryReqType); +static int decode_v2gParameterSetType(bitstream_t* stream, struct v2gParameterSetType* v2gParameterSetType); +static int decode_v2gServiceDiscoveryResType(bitstream_t* stream, struct v2gServiceDiscoveryResType* v2gServiceDiscoveryResType); +static int decode_v2gAnonType_V2G_Message(bitstream_t* stream, struct v2gAnonType_V2G_Message* v2gAnonType_V2G_Message); +static int decode_v2gSignatureType(bitstream_t* stream, struct v2gSignatureType* v2gSignatureType); +static int decode_v2gEMAIDType(bitstream_t* stream, struct v2gEMAIDType* v2gEMAIDType); +static int decode_v2gCertificateInstallationResType(bitstream_t* stream, struct v2gCertificateInstallationResType* v2gCertificateInstallationResType); +static int decode_v2gCableCheckResType(bitstream_t* stream, struct v2gCableCheckResType* v2gCableCheckResType); +static int decode_v2gMeterInfoType(bitstream_t* stream, struct v2gMeterInfoType* v2gMeterInfoType); +static int decode_v2gAC_EVChargeParameterType(bitstream_t* stream, struct v2gAC_EVChargeParameterType* v2gAC_EVChargeParameterType); +static int decode_v2gServiceParameterListType(bitstream_t* stream, struct v2gServiceParameterListType* v2gServiceParameterListType); +static int decode_v2gCurrentDemandReqType(bitstream_t* stream, struct v2gCurrentDemandReqType* v2gCurrentDemandReqType); +static int decode_v2gSASchedulesType(bitstream_t* stream, struct v2gSASchedulesType* v2gSASchedulesType); +static int decode_v2gIntervalType(bitstream_t* stream, struct v2gIntervalType* v2gIntervalType); +static int decode_v2gPreChargeResType(bitstream_t* stream, struct v2gPreChargeResType* v2gPreChargeResType); +static int decode_v2gSalesTariffEntryType(bitstream_t* stream, struct v2gSalesTariffEntryType* v2gSalesTariffEntryType); +static int decode_v2gPaymentOptionListType(bitstream_t* stream, struct v2gPaymentOptionListType* v2gPaymentOptionListType); +static int decode_v2gSignedInfoType(bitstream_t* stream, struct v2gSignedInfoType* v2gSignedInfoType); +static int decode_v2gSessionSetupReqType(bitstream_t* stream, struct v2gSessionSetupReqType* v2gSessionSetupReqType); +static int decode_v2gSignaturePropertiesType(bitstream_t* stream, struct v2gSignaturePropertiesType* v2gSignaturePropertiesType); +static int decode_v2gProfileEntryType(bitstream_t* stream, struct v2gProfileEntryType* v2gProfileEntryType); +static int decode_v2gPreChargeReqType(bitstream_t* stream, struct v2gPreChargeReqType* v2gPreChargeReqType); +static int decode_v2gListOfRootCertificateIDsType(bitstream_t* stream, struct v2gListOfRootCertificateIDsType* v2gListOfRootCertificateIDsType); +static int decode_v2gDC_EVPowerDeliveryParameterType(bitstream_t* stream, struct v2gDC_EVPowerDeliveryParameterType* v2gDC_EVPowerDeliveryParameterType); +static int decode_v2gRelativeTimeIntervalType(bitstream_t* stream, struct v2gRelativeTimeIntervalType* v2gRelativeTimeIntervalType); +static int decode_v2gChargingProfileType(bitstream_t* stream, struct v2gChargingProfileType* v2gChargingProfileType); +static int decode_v2gCertificateUpdateResType(bitstream_t* stream, struct v2gCertificateUpdateResType* v2gCertificateUpdateResType); +static int decode_v2gMeteringReceiptReqType(bitstream_t* stream, struct v2gMeteringReceiptReqType* v2gMeteringReceiptReqType); +static int decode_v2gServiceType(bitstream_t* stream, struct v2gServiceType* v2gServiceType); +static int decode_v2gNotificationType(bitstream_t* stream, struct v2gNotificationType* v2gNotificationType); +static int decode_v2gKeyInfoType(bitstream_t* stream, struct v2gKeyInfoType* v2gKeyInfoType); +static int decode_v2gSelectedServiceListType(bitstream_t* stream, struct v2gSelectedServiceListType* v2gSelectedServiceListType); +static int decode_v2gPowerDeliveryReqType(bitstream_t* stream, struct v2gPowerDeliveryReqType* v2gPowerDeliveryReqType); +static int decode_v2gObjectType(bitstream_t* stream, struct v2gObjectType* v2gObjectType); + +/* Deviant data decoding (skip functions) */ +static int decodeDeviationsCH(bitstream_t* stream) { + int i=0; + uint16_t uint16; + errn = 0; + + errn = decodeUnsignedInteger16(stream, &uint16); + if (errn == 0) { + for(i=0; iResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 1; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 1: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gServiceDetailResType->ServiceID); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 2; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 2: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gServiceParameterListType(stream, &v2gServiceDetailResType->ServiceParameterList); + v2gServiceDetailResType->ServiceParameterList_isUsed = 1u; + grammarID = 3; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SPKIDataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SPKISexp,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-1}){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int decode_v2gSPKIDataType(bitstream_t* stream, struct v2gSPKIDataType* v2gSPKIDataType) { + int grammarID = 5; + int done = 0; + + init_v2gSPKIDataType(v2gSPKIDataType); + + while(!done) { + switch(grammarID) { + case 5: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSPKIDataType->SPKISexp.arrayLen < v2gSPKIDataType_SPKISexp_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytesLen) <= v2gSPKIDataType_SPKISexp_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytesLen, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytes); + } + v2gSPKIDataType->SPKISexp.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 6; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 6: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSPKIDataType->SPKISexp.arrayLen < v2gSPKIDataType_SPKISexp_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytesLen) <= v2gSPKIDataType_SPKISexp_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytesLen, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytes); + } + v2gSPKIDataType->SPKISexp.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 6; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 7; + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 7: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSPKIDataType->SPKISexp.arrayLen < v2gSPKIDataType_SPKISexp_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytesLen) <= v2gSPKIDataType_SPKISexp_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytesLen, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType->SPKISexp.arrayLen].bytes); + } + v2gSPKIDataType->SPKISexp.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 6; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,AuthorizationResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing)', derivedBy='EXTENSION'. */ +static int decode_v2gAuthorizationResType(bitstream_t* stream, struct v2gAuthorizationResType* v2gAuthorizationResType) { + int grammarID = 8; + int done = 0; + + init_v2gAuthorizationResType(v2gAuthorizationResType); + + while(!done) { + switch(grammarID) { + case 8: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gAuthorizationResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 9; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 9: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gAuthorizationResType->EVSEProcessing); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,BodyType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":BodyElement{0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gBodyType(bitstream_t* stream, struct v2gBodyType* v2gBodyType) { + int grammarID = 10; + int done = 0; + + init_v2gBodyType(v2gBodyType); + + while(!done) { + switch(grammarID) { + case 10: + /* 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] */ + errn = decodeNBitUnsignedInteger(stream, 6, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gAuthorizationReqType(stream, &v2gBodyType->AuthorizationReq); + v2gBodyType->AuthorizationReq_isUsed = 1u; + grammarID = 3; + break; + case 1: + errn = decode_v2gAuthorizationResType(stream, &v2gBodyType->AuthorizationRes); + v2gBodyType->AuthorizationRes_isUsed = 1u; + grammarID = 3; + break; + case 2: + errn = decode_v2gBodyBaseType(stream, &v2gBodyType->BodyElement); + v2gBodyType->BodyElement_isUsed = 1u; + grammarID = 3; + break; + case 3: + errn = decode_v2gCableCheckReqType(stream, &v2gBodyType->CableCheckReq); + v2gBodyType->CableCheckReq_isUsed = 1u; + grammarID = 3; + break; + case 4: + errn = decode_v2gCableCheckResType(stream, &v2gBodyType->CableCheckRes); + v2gBodyType->CableCheckRes_isUsed = 1u; + grammarID = 3; + break; + case 5: + errn = decode_v2gCertificateInstallationReqType(stream, &v2gBodyType->CertificateInstallationReq); + v2gBodyType->CertificateInstallationReq_isUsed = 1u; + grammarID = 3; + break; + case 6: + errn = decode_v2gCertificateInstallationResType(stream, &v2gBodyType->CertificateInstallationRes); + v2gBodyType->CertificateInstallationRes_isUsed = 1u; + grammarID = 3; + break; + case 7: + errn = decode_v2gCertificateUpdateReqType(stream, &v2gBodyType->CertificateUpdateReq); + v2gBodyType->CertificateUpdateReq_isUsed = 1u; + grammarID = 3; + break; + case 8: + errn = decode_v2gCertificateUpdateResType(stream, &v2gBodyType->CertificateUpdateRes); + v2gBodyType->CertificateUpdateRes_isUsed = 1u; + grammarID = 3; + break; + case 9: + errn = decode_v2gChargeParameterDiscoveryReqType(stream, &v2gBodyType->ChargeParameterDiscoveryReq); + v2gBodyType->ChargeParameterDiscoveryReq_isUsed = 1u; + grammarID = 3; + break; + case 10: + errn = decode_v2gChargeParameterDiscoveryResType(stream, &v2gBodyType->ChargeParameterDiscoveryRes); + v2gBodyType->ChargeParameterDiscoveryRes_isUsed = 1u; + grammarID = 3; + break; + case 11: + errn = decode_v2gChargingStatusReqType(stream, &v2gBodyType->ChargingStatusReq); + v2gBodyType->ChargingStatusReq_isUsed = 1u; + grammarID = 3; + break; + case 12: + errn = decode_v2gChargingStatusResType(stream, &v2gBodyType->ChargingStatusRes); + v2gBodyType->ChargingStatusRes_isUsed = 1u; + grammarID = 3; + break; + case 13: + errn = decode_v2gCurrentDemandReqType(stream, &v2gBodyType->CurrentDemandReq); + v2gBodyType->CurrentDemandReq_isUsed = 1u; + grammarID = 3; + break; + case 14: + errn = decode_v2gCurrentDemandResType(stream, &v2gBodyType->CurrentDemandRes); + v2gBodyType->CurrentDemandRes_isUsed = 1u; + grammarID = 3; + break; + case 15: + errn = decode_v2gMeteringReceiptReqType(stream, &v2gBodyType->MeteringReceiptReq); + v2gBodyType->MeteringReceiptReq_isUsed = 1u; + grammarID = 3; + break; + case 16: + errn = decode_v2gMeteringReceiptResType(stream, &v2gBodyType->MeteringReceiptRes); + v2gBodyType->MeteringReceiptRes_isUsed = 1u; + grammarID = 3; + break; + case 17: + errn = decode_v2gPaymentDetailsReqType(stream, &v2gBodyType->PaymentDetailsReq); + v2gBodyType->PaymentDetailsReq_isUsed = 1u; + grammarID = 3; + break; + case 18: + errn = decode_v2gPaymentDetailsResType(stream, &v2gBodyType->PaymentDetailsRes); + v2gBodyType->PaymentDetailsRes_isUsed = 1u; + grammarID = 3; + break; + case 19: + errn = decode_v2gPaymentServiceSelectionReqType(stream, &v2gBodyType->PaymentServiceSelectionReq); + v2gBodyType->PaymentServiceSelectionReq_isUsed = 1u; + grammarID = 3; + break; + case 20: + errn = decode_v2gPaymentServiceSelectionResType(stream, &v2gBodyType->PaymentServiceSelectionRes); + v2gBodyType->PaymentServiceSelectionRes_isUsed = 1u; + grammarID = 3; + break; + case 21: + errn = decode_v2gPowerDeliveryReqType(stream, &v2gBodyType->PowerDeliveryReq); + v2gBodyType->PowerDeliveryReq_isUsed = 1u; + grammarID = 3; + break; + case 22: + errn = decode_v2gPowerDeliveryResType(stream, &v2gBodyType->PowerDeliveryRes); + v2gBodyType->PowerDeliveryRes_isUsed = 1u; + grammarID = 3; + break; + case 23: + errn = decode_v2gPreChargeReqType(stream, &v2gBodyType->PreChargeReq); + v2gBodyType->PreChargeReq_isUsed = 1u; + grammarID = 3; + break; + case 24: + errn = decode_v2gPreChargeResType(stream, &v2gBodyType->PreChargeRes); + v2gBodyType->PreChargeRes_isUsed = 1u; + grammarID = 3; + break; + case 25: + errn = decode_v2gServiceDetailReqType(stream, &v2gBodyType->ServiceDetailReq); + v2gBodyType->ServiceDetailReq_isUsed = 1u; + grammarID = 3; + break; + case 26: + errn = decode_v2gServiceDetailResType(stream, &v2gBodyType->ServiceDetailRes); + v2gBodyType->ServiceDetailRes_isUsed = 1u; + grammarID = 3; + break; + case 27: + errn = decode_v2gServiceDiscoveryReqType(stream, &v2gBodyType->ServiceDiscoveryReq); + v2gBodyType->ServiceDiscoveryReq_isUsed = 1u; + grammarID = 3; + break; + case 28: + errn = decode_v2gServiceDiscoveryResType(stream, &v2gBodyType->ServiceDiscoveryRes); + v2gBodyType->ServiceDiscoveryRes_isUsed = 1u; + grammarID = 3; + break; + case 29: + errn = decode_v2gSessionSetupReqType(stream, &v2gBodyType->SessionSetupReq); + v2gBodyType->SessionSetupReq_isUsed = 1u; + grammarID = 3; + break; + case 30: + errn = decode_v2gSessionSetupResType(stream, &v2gBodyType->SessionSetupRes); + v2gBodyType->SessionSetupRes_isUsed = 1u; + grammarID = 3; + break; + case 31: + errn = decode_v2gSessionStopReqType(stream, &v2gBodyType->SessionStopReq); + v2gBodyType->SessionStopReq_isUsed = 1u; + grammarID = 3; + break; + case 32: + errn = decode_v2gSessionStopResType(stream, &v2gBodyType->SessionStopRes); + v2gBodyType->SessionStopRes_isUsed = 1u; + grammarID = 3; + break; + case 33: + errn = decode_v2gWeldingDetectionReqType(stream, &v2gBodyType->WeldingDetectionReq); + v2gBodyType->WeldingDetectionReq_isUsed = 1u; + grammarID = 3; + break; + case 34: + errn = decode_v2gWeldingDetectionResType(stream, &v2gBodyType->WeldingDetectionRes); + v2gBodyType->WeldingDetectionRes_isUsed = 1u; + grammarID = 3; + break; + case 35: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentServiceSelectionReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":SelectedPaymentOption,"urn:iso:15118:2:2013:MsgBody":SelectedServiceList)', derivedBy='EXTENSION'. */ +static int decode_v2gPaymentServiceSelectionReqType(bitstream_t* stream, struct v2gPaymentServiceSelectionReqType* v2gPaymentServiceSelectionReqType) { + int grammarID = 11; + int done = 0; + + init_v2gPaymentServiceSelectionReqType(v2gPaymentServiceSelectionReqType); + + while(!done) { + switch(grammarID) { + case 11: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 1, &v2gPaymentServiceSelectionReqType->SelectedPaymentOption); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 12; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 12: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gSelectedServiceListType(stream, &v2gPaymentServiceSelectionReqType->SelectedServiceList); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVSEStatusType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification)', derivedBy='RESTRICTION'. */ +static int decode_v2gEVSEStatusType(bitstream_t* stream, struct v2gEVSEStatusType* v2gEVSEStatusType) { + int grammarID = 13; + int done = 0; + + init_v2gEVSEStatusType(v2gEVSEStatusType); + + while(!done) { + switch(grammarID) { + case 13: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gEVSEStatusType->NotificationMaxDelay); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 14; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 14: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gEVSEStatusType->EVSENotification); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SelectedServiceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID{0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gSelectedServiceType(bitstream_t* stream, struct v2gSelectedServiceType* v2gSelectedServiceType) { + int grammarID = 15; + int done = 0; + + init_v2gSelectedServiceType(v2gSelectedServiceType); + + while(!done) { + switch(grammarID) { + case 15: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gSelectedServiceType->ServiceID); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 16; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 16: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger16(stream, &v2gSelectedServiceType->ParameterSetID); + v2gSelectedServiceType->ParameterSetID_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EntryType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval)', derivedBy='RESTRICTION'. */ +static int decode_v2gEntryType(bitstream_t* stream, struct v2gEntryType* v2gEntryType) { + int grammarID = 17; + int done = 0; + + init_v2gEntryType(v2gEntryType); + + while(!done) { + switch(grammarID) { + case 17: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gRelativeTimeIntervalType(stream, &v2gEntryType->RelativeTimeInterval); + v2gEntryType->RelativeTimeInterval_isUsed = 1u; + grammarID = 3; + break; + case 1: + errn = decode_v2gIntervalType(stream, &v2gEntryType->TimeInterval); + v2gEntryType->TimeInterval_isUsed = 1u; + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEChargeParameterType', base type name='EVSEChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumPowerLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSECurrentRegulationTolerance{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEPeakCurrentRipple,"urn:iso:15118:2:2013:MsgDataTypes":EVSEEnergyToBeDelivered{0-1})', derivedBy='EXTENSION'. */ +static int decode_v2gDC_EVSEChargeParameterType(bitstream_t* stream, struct v2gDC_EVSEChargeParameterType* v2gDC_EVSEChargeParameterType) { + int grammarID = 18; + int done = 0; + + init_v2gDC_EVSEChargeParameterType(v2gDC_EVSEChargeParameterType); + + while(!done) { + switch(grammarID) { + case 18: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVSEStatusType(stream, &v2gDC_EVSEChargeParameterType->DC_EVSEStatus); + grammarID = 19; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 19: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEMaximumCurrentLimit); + grammarID = 20; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 20: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEMaximumPowerLimit); + grammarID = 21; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 21: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEMaximumVoltageLimit); + grammarID = 22; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 22: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEMinimumCurrentLimit); + grammarID = 23; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 23: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEMinimumVoltageLimit); + grammarID = 24; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 24: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSECurrentRegulationTolerance); + v2gDC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed = 1u; + grammarID = 25; + break; + case 1: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEPeakCurrentRipple); + grammarID = 26; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 25: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEPeakCurrentRipple); + grammarID = 26; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 26: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEEnergyToBeDelivered); + v2gDC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed = 1u; + grammarID = 3; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SalesTariffType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SalesTariffID,"urn:iso:15118:2:2013:MsgDataTypes":SalesTariffDescription{0-1},"urn:iso:15118:2:2013:MsgDataTypes":NumEPriceLevels{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SalesTariffEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gSalesTariffType(bitstream_t* stream, struct v2gSalesTariffType* v2gSalesTariffType) { + int grammarID = 27; + int done = 0; + + init_v2gSalesTariffType(v2gSalesTariffType); + + while(!done) { + switch(grammarID) { + case 27: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gSalesTariffType->Id.charactersLen); + if (errn == 0) { + errn = (v2gSalesTariffType->Id.charactersLen - 2) <= v2gSalesTariffType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gSalesTariffType->Id.charactersLen >= 2) { + v2gSalesTariffType->Id.charactersLen = (uint16_t)(v2gSalesTariffType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gSalesTariffType->Id.charactersLen, v2gSalesTariffType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gSalesTariffType->Id_isUsed = 1u; + grammarID = 28; + break; + case 1: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + v2gSalesTariffType->SalesTariffID = (uint8_t)(uint32 + 1); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 29; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 28: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + v2gSalesTariffType->SalesTariffID = (uint8_t)(uint32 + 1); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 29; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 29: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gSalesTariffType->SalesTariffDescription.charactersLen); + if (errn == 0) { + errn = (v2gSalesTariffType->SalesTariffDescription.charactersLen - 2) <= v2gSalesTariffType_SalesTariffDescription_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gSalesTariffType->SalesTariffDescription.charactersLen >= 2) { + v2gSalesTariffType->SalesTariffDescription.charactersLen = (uint16_t)(v2gSalesTariffType->SalesTariffDescription.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gSalesTariffType->SalesTariffDescription.charactersLen, v2gSalesTariffType->SalesTariffDescription.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gSalesTariffType->SalesTariffDescription_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 30; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + v2gSalesTariffType->NumEPriceLevels = (uint8_t)(uint32 + 0); + v2gSalesTariffType->NumEPriceLevels_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 31; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + if (v2gSalesTariffType->SalesTariffEntry.arrayLen < v2gSalesTariffType_SalesTariffEntry_ARRAY_SIZE) { + errn = decode_v2gSalesTariffEntryType(stream, &v2gSalesTariffType->SalesTariffEntry.array[v2gSalesTariffType->SalesTariffEntry.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 32; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 30: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + v2gSalesTariffType->NumEPriceLevels = (uint8_t)(uint32 + 0); + v2gSalesTariffType->NumEPriceLevels_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 31; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + if (v2gSalesTariffType->SalesTariffEntry.arrayLen < v2gSalesTariffType_SalesTariffEntry_ARRAY_SIZE) { + errn = decode_v2gSalesTariffEntryType(stream, &v2gSalesTariffType->SalesTariffEntry.array[v2gSalesTariffType->SalesTariffEntry.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 32; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 31: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSalesTariffType->SalesTariffEntry.arrayLen < v2gSalesTariffType_SalesTariffEntry_ARRAY_SIZE) { + errn = decode_v2gSalesTariffEntryType(stream, &v2gSalesTariffType->SalesTariffEntry.array[v2gSalesTariffType->SalesTariffEntry.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 32; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 32: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSalesTariffType->SalesTariffEntry.arrayLen < v2gSalesTariffType_SalesTariffEntry_ARRAY_SIZE) { + errn = decode_v2gSalesTariffEntryType(stream, &v2gSalesTariffType->SalesTariffEntry.array[v2gSalesTariffType->SalesTariffEntry.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 32; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PMaxScheduleType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":PMaxScheduleEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gPMaxScheduleType(bitstream_t* stream, struct v2gPMaxScheduleType* v2gPMaxScheduleType) { + int grammarID = 33; + int done = 0; + + init_v2gPMaxScheduleType(v2gPMaxScheduleType); + + while(!done) { + switch(grammarID) { + case 33: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gPMaxScheduleType->PMaxScheduleEntry.arrayLen < v2gPMaxScheduleType_PMaxScheduleEntry_ARRAY_SIZE) { + errn = decode_v2gPMaxScheduleEntryType(stream, &v2gPMaxScheduleType->PMaxScheduleEntry.array[v2gPMaxScheduleType->PMaxScheduleEntry.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 34; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 34: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gPMaxScheduleType->PMaxScheduleEntry.arrayLen < v2gPMaxScheduleType_PMaxScheduleEntry_ARRAY_SIZE) { + errn = decode_v2gPMaxScheduleEntryType(stream, &v2gPMaxScheduleType->PMaxScheduleEntry.array[v2gPMaxScheduleType->PMaxScheduleEntry.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 34; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CostType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":costKind,"urn:iso:15118:2:2013:MsgDataTypes":amount,"urn:iso:15118:2:2013:MsgDataTypes":amountMultiplier{0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gCostType(bitstream_t* stream, struct v2gCostType* v2gCostType) { + int grammarID = 35; + int done = 0; + + init_v2gCostType(v2gCostType); + + while(!done) { + switch(grammarID) { + case 35: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gCostType->costKind); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 36; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 36: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger32(stream, &v2gCostType->amount); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 37; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 37: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &(uint32)); + v2gCostType->amountMultiplier = (int8_t)(uint32 -3); + v2gCostType->amountMultiplier_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ChargeServiceType', base type name='ServiceType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2013:MsgDataTypes":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FreeService),("urn:iso:15118:2:2013:MsgDataTypes":SupportedEnergyTransferMode))', derivedBy='EXTENSION'. */ +static int decode_v2gChargeServiceType(bitstream_t* stream, struct v2gChargeServiceType* v2gChargeServiceType) { + int grammarID = 38; + int done = 0; + + init_v2gChargeServiceType(v2gChargeServiceType); + + while(!done) { + switch(grammarID) { + case 38: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gChargeServiceType->ServiceID); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 39; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 39: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gChargeServiceType->ServiceName.charactersLen); + if (errn == 0) { + errn = (v2gChargeServiceType->ServiceName.charactersLen - 2) <= v2gChargeServiceType_ServiceName_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gChargeServiceType->ServiceName.charactersLen >= 2) { + v2gChargeServiceType->ServiceName.charactersLen = (uint16_t)(v2gChargeServiceType->ServiceName.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gChargeServiceType->ServiceName.charactersLen, v2gChargeServiceType->ServiceName.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gChargeServiceType->ServiceName_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 40; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gChargeServiceType->ServiceCategory); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 41; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 40: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gChargeServiceType->ServiceCategory); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 41; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 41: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gChargeServiceType->ServiceScope.charactersLen); + if (errn == 0) { + errn = (v2gChargeServiceType->ServiceScope.charactersLen - 2) <= v2gChargeServiceType_ServiceScope_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gChargeServiceType->ServiceScope.charactersLen >= 2) { + v2gChargeServiceType->ServiceScope.charactersLen = (uint16_t)(v2gChargeServiceType->ServiceScope.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gChargeServiceType->ServiceScope.charactersLen, v2gChargeServiceType->ServiceScope.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gChargeServiceType->ServiceScope_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 42; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gChargeServiceType->FreeService); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 43; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 42: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gChargeServiceType->FreeService); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 43; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 43: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gSupportedEnergyTransferModeType(stream, &v2gChargeServiceType->SupportedEnergyTransferMode); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PMaxScheduleEntryType', base type name='EntryType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2013:MsgDataTypes":PMax))', derivedBy='EXTENSION'. */ +static int decode_v2gPMaxScheduleEntryType(bitstream_t* stream, struct v2gPMaxScheduleEntryType* v2gPMaxScheduleEntryType) { + int grammarID = 44; + int done = 0; + + init_v2gPMaxScheduleEntryType(v2gPMaxScheduleEntryType); + + while(!done) { + switch(grammarID) { + case 44: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gRelativeTimeIntervalType(stream, &v2gPMaxScheduleEntryType->RelativeTimeInterval); + v2gPMaxScheduleEntryType->RelativeTimeInterval_isUsed = 1u; + grammarID = 45; + break; + case 1: + errn = decode_v2gIntervalType(stream, &v2gPMaxScheduleEntryType->TimeInterval); + v2gPMaxScheduleEntryType->TimeInterval_isUsed = 1u; + grammarID = 45; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 45: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gPMaxScheduleEntryType->PMax); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Service{1-8})', derivedBy='RESTRICTION'. */ +static int decode_v2gServiceListType(bitstream_t* stream, struct v2gServiceListType* v2gServiceListType) { + int grammarID = 46; + int done = 0; + + init_v2gServiceListType(v2gServiceListType); + + while(!done) { + switch(grammarID) { + case 46: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gServiceListType->Service.arrayLen < v2gServiceListType_Service_ARRAY_SIZE) { + errn = decode_v2gServiceType(stream, &v2gServiceListType->Service.array[v2gServiceListType->Service.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 47; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 47: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gServiceListType->Service.arrayLen < v2gServiceListType_Service_ARRAY_SIZE) { + errn = decode_v2gServiceType(stream, &v2gServiceListType->Service.array[v2gServiceListType->Service.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 48; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 48: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gServiceListType->Service.arrayLen < v2gServiceListType_Service_ARRAY_SIZE) { + errn = decode_v2gServiceType(stream, &v2gServiceListType->Service.array[v2gServiceListType->Service.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 49; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 49: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gServiceListType->Service.arrayLen < v2gServiceListType_Service_ARRAY_SIZE) { + errn = decode_v2gServiceType(stream, &v2gServiceListType->Service.array[v2gServiceListType->Service.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 50; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 50: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gServiceListType->Service.arrayLen < v2gServiceListType_Service_ARRAY_SIZE) { + errn = decode_v2gServiceType(stream, &v2gServiceListType->Service.array[v2gServiceListType->Service.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 51; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 51: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gServiceListType->Service.arrayLen < v2gServiceListType_Service_ARRAY_SIZE) { + errn = decode_v2gServiceType(stream, &v2gServiceListType->Service.array[v2gServiceListType->Service.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 52; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 52: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gServiceListType->Service.arrayLen < v2gServiceListType_Service_ARRAY_SIZE) { + errn = decode_v2gServiceType(stream, &v2gServiceListType->Service.array[v2gServiceListType->Service.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 53; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 53: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gServiceListType->Service.arrayLen < v2gServiceListType_Service_ARRAY_SIZE) { + errn = decode_v2gServiceType(stream, &v2gServiceListType->Service.array[v2gServiceListType->Service.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 3; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyValueType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":DSAKeyValue|"http://www.w3.org/2000/09/xmldsig#":RSAKeyValue|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))', derivedBy='RESTRICTION'. */ +static int decode_v2gKeyValueType(bitstream_t* stream, struct v2gKeyValueType* v2gKeyValueType) { + int grammarID = 54; + int done = 0; + + init_v2gKeyValueType(v2gKeyValueType); + + while(!done) { + switch(grammarID) { + case 54: + /* 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]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDSAKeyValueType(stream, &v2gKeyValueType->DSAKeyValue); + v2gKeyValueType->DSAKeyValue_isUsed = 1u; + grammarID = 55; + break; + case 1: + errn = decode_v2gRSAKeyValueType(stream, &v2gKeyValueType->RSAKeyValue); + v2gKeyValueType->RSAKeyValue_isUsed = 1u; + grammarID = 55; + break; + case 2: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 55; + break; + case 3: + errn = decodeDeviationsCH(stream); + grammarID = 56; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 55: + /* Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + case 1: + grammarID = 55; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 56: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDSAKeyValueType(stream, &v2gKeyValueType->DSAKeyValue); + v2gKeyValueType->DSAKeyValue_isUsed = 1u; + grammarID = 55; + break; + case 1: + errn = decode_v2gRSAKeyValueType(stream, &v2gKeyValueType->RSAKeyValue); + v2gKeyValueType->RSAKeyValue_isUsed = 1u; + grammarID = 55; + break; + case 2: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 55; + break; + case 3: + grammarID = 56; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentServiceSelectionResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode)', derivedBy='EXTENSION'. */ +static int decode_v2gPaymentServiceSelectionResType(bitstream_t* stream, struct v2gPaymentServiceSelectionResType* v2gPaymentServiceSelectionResType) { + int grammarID = 57; + int done = 0; + + init_v2gPaymentServiceSelectionResType(v2gPaymentServiceSelectionResType); + + while(!done) { + switch(grammarID) { + case 57: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gPaymentServiceSelectionResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":HMACOutputLength{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gSignatureMethodType(bitstream_t* stream, struct v2gSignatureMethodType* v2gSignatureMethodType) { + int grammarID = 58; + int done = 0; + + init_v2gSignatureMethodType(v2gSignatureMethodType); + + while(!done) { + switch(grammarID) { + case 58: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gSignatureMethodType->Algorithm.charactersLen); + if (errn == 0) { + errn = (v2gSignatureMethodType->Algorithm.charactersLen - 2) <= v2gSignatureMethodType_Algorithm_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gSignatureMethodType->Algorithm.charactersLen >= 2) { + v2gSignatureMethodType->Algorithm.charactersLen = (uint16_t)(v2gSignatureMethodType->Algorithm.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gSignatureMethodType->Algorithm.charactersLen, v2gSignatureMethodType->Algorithm.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 59; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 59: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger64(stream, &v2gSignatureMethodType->HMACOutputLength); + v2gSignatureMethodType->HMACOutputLength_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 60; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 2: + done = 1; + grammarID = 4; + break; + case 3: + grammarID = 61; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 60: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 1: + done = 1; + grammarID = 4; + break; + case 2: + grammarID = 60; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 61: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger64(stream, &v2gSignatureMethodType->HMACOutputLength); + v2gSignatureMethodType->HMACOutputLength_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 60; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 2: + done = 1; + grammarID = 4; + break; + case 3: + grammarID = 61; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,MeteringReceiptResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus)', derivedBy='EXTENSION'. */ +static int decode_v2gMeteringReceiptResType(bitstream_t* stream, struct v2gMeteringReceiptResType* v2gMeteringReceiptResType) { + int grammarID = 62; + int done = 0; + + init_v2gMeteringReceiptResType(v2gMeteringReceiptResType); + + while(!done) { + switch(grammarID) { + case 62: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gMeteringReceiptResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 63; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 63: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gAC_EVSEStatusType(stream, &v2gMeteringReceiptResType->AC_EVSEStatus); + v2gMeteringReceiptResType->AC_EVSEStatus_isUsed = 1u; + grammarID = 3; + break; + case 1: + errn = decode_v2gDC_EVSEStatusType(stream, &v2gMeteringReceiptResType->DC_EVSEStatus); + v2gMeteringReceiptResType->DC_EVSEStatus_isUsed = 1u; + grammarID = 3; + break; + case 2: + errn = decode_v2gEVSEStatusType(stream, &v2gMeteringReceiptResType->EVSEStatus); + v2gMeteringReceiptResType->EVSEStatus_isUsed = 1u; + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgHeader,MessageHeaderType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgHeader":SessionID,"urn:iso:15118:2:2013:MsgHeader":Notification{0-1},"http://www.w3.org/2000/09/xmldsig#":Signature{0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gMessageHeaderType(bitstream_t* stream, struct v2gMessageHeaderType* v2gMessageHeaderType) { + int grammarID = 64; + int done = 0; + + init_v2gMessageHeaderType(v2gMessageHeaderType); + + while(!done) { + switch(grammarID) { + case 64: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gMessageHeaderType->SessionID.bytesLen); + if (errn == 0) { + errn = (v2gMessageHeaderType->SessionID.bytesLen) <= v2gMessageHeaderType_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gMessageHeaderType->SessionID.bytesLen, v2gMessageHeaderType->SessionID.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 65; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 65: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gNotificationType(stream, &v2gMessageHeaderType->Notification); + v2gMessageHeaderType->Notification_isUsed = 1u; + grammarID = 66; + break; + case 1: + errn = decode_v2gSignatureType(stream, &v2gMessageHeaderType->Signature); + v2gMessageHeaderType->Signature_isUsed = 1u; + grammarID = 3; + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 66: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gSignatureType(stream, &v2gMessageHeaderType->Signature); + v2gMessageHeaderType->Signature_isUsed = 1u; + grammarID = 3; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,RetrievalMethodType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gRetrievalMethodType(bitstream_t* stream, struct v2gRetrievalMethodType* v2gRetrievalMethodType) { + int grammarID = 67; + int done = 0; + + init_v2gRetrievalMethodType(v2gRetrievalMethodType); + + while(!done) { + switch(grammarID) { + case 67: + /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gRetrievalMethodType->Type.charactersLen); + if (errn == 0) { + errn = (v2gRetrievalMethodType->Type.charactersLen - 2) <= v2gRetrievalMethodType_Type_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gRetrievalMethodType->Type.charactersLen >= 2) { + v2gRetrievalMethodType->Type.charactersLen = (uint16_t)(v2gRetrievalMethodType->Type.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gRetrievalMethodType->Type.charactersLen, v2gRetrievalMethodType->Type.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gRetrievalMethodType->Type_isUsed = 1u; + grammarID = 68; + break; + case 1: + errn = decodeUnsignedInteger16(stream, &v2gRetrievalMethodType->URI.charactersLen); + if (errn == 0) { + errn = (v2gRetrievalMethodType->URI.charactersLen - 2) <= v2gRetrievalMethodType_URI_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gRetrievalMethodType->URI.charactersLen >= 2) { + v2gRetrievalMethodType->URI.charactersLen = (uint16_t)(v2gRetrievalMethodType->URI.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gRetrievalMethodType->URI.charactersLen, v2gRetrievalMethodType->URI.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gRetrievalMethodType->URI_isUsed = 1u; + grammarID = 69; + break; + case 2: + errn = decode_v2gTransformsType(stream, &v2gRetrievalMethodType->Transforms); + v2gRetrievalMethodType->Transforms_isUsed = 1u; + grammarID = 3; + break; + case 3: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 68: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gRetrievalMethodType->URI.charactersLen); + if (errn == 0) { + errn = (v2gRetrievalMethodType->URI.charactersLen - 2) <= v2gRetrievalMethodType_URI_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gRetrievalMethodType->URI.charactersLen >= 2) { + v2gRetrievalMethodType->URI.charactersLen = (uint16_t)(v2gRetrievalMethodType->URI.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gRetrievalMethodType->URI.charactersLen, v2gRetrievalMethodType->URI.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gRetrievalMethodType->URI_isUsed = 1u; + grammarID = 69; + break; + case 1: + errn = decode_v2gTransformsType(stream, &v2gRetrievalMethodType->Transforms); + v2gRetrievalMethodType->Transforms_isUsed = 1u; + grammarID = 3; + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 69: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gTransformsType(stream, &v2gRetrievalMethodType->Transforms); + v2gRetrievalMethodType->Transforms_isUsed = 1u; + grammarID = 3; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVChargeParameterType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gEVChargeParameterType(bitstream_t* stream, struct v2gEVChargeParameterType* v2gEVChargeParameterType) { + int grammarID = 70; + int done = 0; + + init_v2gEVChargeParameterType(v2gEVChargeParameterType); + + while(!done) { + switch(grammarID) { + case 70: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger32(stream, &v2gEVChargeParameterType->DepartureTime); + v2gEVChargeParameterType->DepartureTime_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateInstallationReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":OEMProvisioningCert,"urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs)', derivedBy='EXTENSION'. */ +static int decode_v2gCertificateInstallationReqType(bitstream_t* stream, struct v2gCertificateInstallationReqType* v2gCertificateInstallationReqType) { + int grammarID = 71; + int done = 0; + + init_v2gCertificateInstallationReqType(v2gCertificateInstallationReqType); + + while(!done) { + switch(grammarID) { + case 71: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gCertificateInstallationReqType->Id.charactersLen); + if (errn == 0) { + errn = (v2gCertificateInstallationReqType->Id.charactersLen - 2) <= v2gCertificateInstallationReqType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gCertificateInstallationReqType->Id.charactersLen >= 2) { + v2gCertificateInstallationReqType->Id.charactersLen = (uint16_t)(v2gCertificateInstallationReqType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gCertificateInstallationReqType->Id.charactersLen, v2gCertificateInstallationReqType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 72; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 72: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gCertificateInstallationReqType->OEMProvisioningCert.bytesLen); + if (errn == 0) { + errn = (v2gCertificateInstallationReqType->OEMProvisioningCert.bytesLen) <= v2gCertificateInstallationReqType_OEMProvisioningCert_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gCertificateInstallationReqType->OEMProvisioningCert.bytesLen, v2gCertificateInstallationReqType->OEMProvisioningCert.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 73; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 73: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gListOfRootCertificateIDsType(stream, &v2gCertificateInstallationReqType->ListOfRootCertificateIDs); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargeParameterDiscoveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing,"urn:iso:15118:2:2013:MsgDataTypes":SASchedules{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEChargeParameter)', derivedBy='EXTENSION'. */ +static int decode_v2gChargeParameterDiscoveryResType(bitstream_t* stream, struct v2gChargeParameterDiscoveryResType* v2gChargeParameterDiscoveryResType) { + int grammarID = 74; + int done = 0; + + init_v2gChargeParameterDiscoveryResType(v2gChargeParameterDiscoveryResType); + + while(!done) { + switch(grammarID) { + case 74: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gChargeParameterDiscoveryResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 75; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 75: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gChargeParameterDiscoveryResType->EVSEProcessing); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 76; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 76: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gSAScheduleListType(stream, &v2gChargeParameterDiscoveryResType->SAScheduleList); + v2gChargeParameterDiscoveryResType->SAScheduleList_isUsed = 1u; + grammarID = 77; + break; + case 1: + errn = decode_v2gSASchedulesType(stream, &v2gChargeParameterDiscoveryResType->SASchedules); + v2gChargeParameterDiscoveryResType->SASchedules_isUsed = 1u; + grammarID = 77; + break; + case 2: + errn = decode_v2gAC_EVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->AC_EVSEChargeParameter); + v2gChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 1u; + grammarID = 3; + break; + case 3: + errn = decode_v2gDC_EVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->DC_EVSEChargeParameter); + v2gChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 1u; + grammarID = 3; + break; + case 4: + errn = decode_v2gEVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->EVSEChargeParameter); + v2gChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed = 1u; + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 77: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gAC_EVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->AC_EVSEChargeParameter); + v2gChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 1u; + grammarID = 3; + break; + case 1: + errn = decode_v2gDC_EVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->DC_EVSEChargeParameter); + v2gChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 1u; + grammarID = 3; + break; + case 2: + errn = decode_v2gEVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->EVSEChargeParameter); + v2gChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed = 1u; + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,WeldingDetectionReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus)', derivedBy='EXTENSION'. */ +static int decode_v2gWeldingDetectionReqType(bitstream_t* stream, struct v2gWeldingDetectionReqType* v2gWeldingDetectionReqType) { + int grammarID = 78; + int done = 0; + + init_v2gWeldingDetectionReqType(v2gWeldingDetectionReqType); + + while(!done) { + switch(grammarID) { + case 78: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVStatusType(stream, &v2gWeldingDetectionReqType->DC_EVStatus); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CableCheckReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus)', derivedBy='EXTENSION'. */ +static int decode_v2gCableCheckReqType(bitstream_t* stream, struct v2gCableCheckReqType* v2gCableCheckReqType) { + int grammarID = 78; + int done = 0; + + init_v2gCableCheckReqType(v2gCableCheckReqType); + + while(!done) { + switch(grammarID) { + case 78: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVStatusType(stream, &v2gCableCheckReqType->DC_EVStatus); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ParameterType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":boolValue|"urn:iso:15118:2:2013:MsgDataTypes":byteValue|"urn:iso:15118:2:2013:MsgDataTypes":shortValue|"urn:iso:15118:2:2013:MsgDataTypes":intValue|"urn:iso:15118:2:2013:MsgDataTypes":physicalValue|"urn:iso:15118:2:2013:MsgDataTypes":stringValue)', derivedBy='RESTRICTION'. */ +static int decode_v2gParameterType(bitstream_t* stream, struct v2gParameterType* v2gParameterType) { + int grammarID = 79; + int done = 0; + + init_v2gParameterType(v2gParameterType); + + while(!done) { + switch(grammarID) { + case 79: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gParameterType->Name.charactersLen); + if (errn == 0) { + errn = (v2gParameterType->Name.charactersLen - 2) <= v2gParameterType_Name_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gParameterType->Name.charactersLen >= 2) { + v2gParameterType->Name.charactersLen = (uint16_t)(v2gParameterType->Name.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gParameterType->Name.charactersLen, v2gParameterType->Name.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 80; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 80: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gParameterType->boolValue); + v2gParameterType->boolValue_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}boolValue) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + v2gParameterType->byteValue = (int8_t)(uint32 -128); + v2gParameterType->byteValue_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}byteValue) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger16(stream, &v2gParameterType->shortValue); + v2gParameterType->shortValue_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}shortValue) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 3: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger32(stream, &v2gParameterType->intValue); + v2gParameterType->intValue_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}intValue) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 4: + errn = decode_v2gPhysicalValueType(stream, &v2gParameterType->physicalValue); + v2gParameterType->physicalValue_isUsed = 1u; + grammarID = 3; + break; + case 5: + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gParameterType->stringValue.charactersLen); + if (errn == 0) { + errn = (v2gParameterType->stringValue.charactersLen - 2) <= v2gParameterType_stringValue_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gParameterType->stringValue.charactersLen >= 2) { + v2gParameterType->stringValue.charactersLen = (uint16_t)(v2gParameterType->stringValue.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gParameterType->stringValue.charactersLen, v2gParameterType->stringValue.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gParameterType->stringValue_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}stringValue) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVSEChargeParameterType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int decode_v2gEVSEChargeParameterType(bitstream_t* stream, struct v2gEVSEChargeParameterType* v2gEVSEChargeParameterType) { + int grammarID = 81; + int done = 0; + + init_v2gEVSEChargeParameterType(v2gEVSEChargeParameterType); + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ManifestType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gManifestType(bitstream_t* stream, struct v2gManifestType* v2gManifestType) { + int grammarID = 82; + int done = 0; + + init_v2gManifestType(v2gManifestType); + + while(!done) { + switch(grammarID) { + case 82: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gManifestType->Id.charactersLen); + if (errn == 0) { + errn = (v2gManifestType->Id.charactersLen - 2) <= v2gManifestType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gManifestType->Id.charactersLen >= 2) { + v2gManifestType->Id.charactersLen = (uint16_t)(v2gManifestType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gManifestType->Id.charactersLen, v2gManifestType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gManifestType->Id_isUsed = 1u; + grammarID = 83; + break; + case 1: + if (v2gManifestType->Reference.arrayLen < v2gManifestType_Reference_ARRAY_SIZE) { + errn = decode_v2gReferenceType(stream, &v2gManifestType->Reference.array[v2gManifestType->Reference.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 84; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 83: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gManifestType->Reference.arrayLen < v2gManifestType_Reference_ARRAY_SIZE) { + errn = decode_v2gReferenceType(stream, &v2gManifestType->Reference.array[v2gManifestType->Reference.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 84; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 84: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gManifestType->Reference.arrayLen < v2gManifestType_Reference_ARRAY_SIZE) { + errn = decode_v2gReferenceType(stream, &v2gManifestType->Reference.array[v2gManifestType->Reference.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 84; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVStatusType', base type name='EVStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EVReady,"urn:iso:15118:2:2013:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2013:MsgDataTypes":EVRESSSOC)', derivedBy='EXTENSION'. */ +static int decode_v2gDC_EVStatusType(bitstream_t* stream, struct v2gDC_EVStatusType* v2gDC_EVStatusType) { + int grammarID = 85; + int done = 0; + + init_v2gDC_EVStatusType(v2gDC_EVStatusType); + + while(!done) { + switch(grammarID) { + case 85: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gDC_EVStatusType->EVReady); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 86; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 86: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 4, &v2gDC_EVStatusType->EVErrorCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 87; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 87: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 7, &(uint32)); + v2gDC_EVStatusType->EVRESSSOC = (int8_t)(uint32 + 0); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentDetailsReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain)', derivedBy='EXTENSION'. */ +static int decode_v2gPaymentDetailsReqType(bitstream_t* stream, struct v2gPaymentDetailsReqType* v2gPaymentDetailsReqType) { + int grammarID = 88; + int done = 0; + + init_v2gPaymentDetailsReqType(v2gPaymentDetailsReqType); + + while(!done) { + switch(grammarID) { + case 88: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gPaymentDetailsReqType->eMAID.charactersLen); + if (errn == 0) { + errn = (v2gPaymentDetailsReqType->eMAID.charactersLen - 2) <= v2gPaymentDetailsReqType_eMAID_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gPaymentDetailsReqType->eMAID.charactersLen >= 2) { + v2gPaymentDetailsReqType->eMAID.charactersLen = (uint16_t)(v2gPaymentDetailsReqType->eMAID.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gPaymentDetailsReqType->eMAID.charactersLen, v2gPaymentDetailsReqType->eMAID.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 89; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 89: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gCertificateChainType(stream, &v2gPaymentDetailsReqType->ContractSignatureCertChain); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SAScheduleListType', base type name='SASchedulesType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTuple{1-3})', derivedBy='EXTENSION'. */ +static int decode_v2gSAScheduleListType(bitstream_t* stream, struct v2gSAScheduleListType* v2gSAScheduleListType) { + int grammarID = 90; + int done = 0; + + init_v2gSAScheduleListType(v2gSAScheduleListType); + + while(!done) { + switch(grammarID) { + case 90: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSAScheduleListType->SAScheduleTuple.arrayLen < v2gSAScheduleListType_SAScheduleTuple_ARRAY_SIZE) { + errn = decode_v2gSAScheduleTupleType(stream, &v2gSAScheduleListType->SAScheduleTuple.array[v2gSAScheduleListType->SAScheduleTuple.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 91; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 91: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSAScheduleListType->SAScheduleTuple.arrayLen < v2gSAScheduleListType_SAScheduleTuple_ARRAY_SIZE) { + errn = decode_v2gSAScheduleTupleType(stream, &v2gSAScheduleListType->SAScheduleTuple.array[v2gSAScheduleListType->SAScheduleTuple.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 92; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 92: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSAScheduleListType->SAScheduleTuple.arrayLen < v2gSAScheduleListType_SAScheduleTuple_ARRAY_SIZE) { + errn = decode_v2gSAScheduleTupleType(stream, &v2gSAScheduleListType->SAScheduleTuple.array[v2gSAScheduleListType->SAScheduleTuple.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 3; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,RSAKeyValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Modulus,"http://www.w3.org/2000/09/xmldsig#":Exponent)', derivedBy='RESTRICTION'. */ +static int decode_v2gRSAKeyValueType(bitstream_t* stream, struct v2gRSAKeyValueType* v2gRSAKeyValueType) { + int grammarID = 93; + int done = 0; + + init_v2gRSAKeyValueType(v2gRSAKeyValueType); + + while(!done) { + switch(grammarID) { + case 93: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gRSAKeyValueType->Modulus.bytesLen); + if (errn == 0) { + errn = (v2gRSAKeyValueType->Modulus.bytesLen) <= v2gRSAKeyValueType_Modulus_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gRSAKeyValueType->Modulus.bytesLen, v2gRSAKeyValueType->Modulus.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 94; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 94: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gRSAKeyValueType->Exponent.bytesLen); + if (errn == 0) { + errn = (v2gRSAKeyValueType->Exponent.bytesLen) <= v2gRSAKeyValueType_Exponent_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gRSAKeyValueType->Exponent.bytesLen, v2gRSAKeyValueType->Exponent.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEChargeParameterType', base type name='EVSEChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":AC_EVSEStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVSENominalVoltage,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaxCurrent)', derivedBy='EXTENSION'. */ +static int decode_v2gAC_EVSEChargeParameterType(bitstream_t* stream, struct v2gAC_EVSEChargeParameterType* v2gAC_EVSEChargeParameterType) { + int grammarID = 95; + int done = 0; + + init_v2gAC_EVSEChargeParameterType(v2gAC_EVSEChargeParameterType); + + while(!done) { + switch(grammarID) { + case 95: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gAC_EVSEStatusType(stream, &v2gAC_EVSEChargeParameterType->AC_EVSEStatus); + grammarID = 96; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 96: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gAC_EVSEChargeParameterType->EVSENominalVoltage); + grammarID = 97; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 97: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gAC_EVSEChargeParameterType->EVSEMaxCurrent); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transform{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gTransformsType(bitstream_t* stream, struct v2gTransformsType* v2gTransformsType) { + int grammarID = 98; + int done = 0; + + init_v2gTransformsType(v2gTransformsType); + + while(!done) { + switch(grammarID) { + case 98: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gTransformsType->Transform.arrayLen < v2gTransformsType_Transform_ARRAY_SIZE) { + errn = decode_v2gTransformType(stream, &v2gTransformsType->Transform.array[v2gTransformsType->Transform.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 99; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 99: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gTransformsType->Transform.arrayLen < v2gTransformsType_Transform_ARRAY_SIZE) { + errn = decode_v2gTransformType(stream, &v2gTransformsType->Transform.array[v2gTransformsType->Transform.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 99; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,WeldingDetectionResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage)', derivedBy='EXTENSION'. */ +static int decode_v2gWeldingDetectionResType(bitstream_t* stream, struct v2gWeldingDetectionResType* v2gWeldingDetectionResType) { + int grammarID = 100; + int done = 0; + + init_v2gWeldingDetectionResType(v2gWeldingDetectionResType); + + while(!done) { + switch(grammarID) { + case 100: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gWeldingDetectionResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 101; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 101: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVSEStatusType(stream, &v2gWeldingDetectionResType->DC_EVSEStatus); + grammarID = 102; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 102: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gWeldingDetectionResType->EVSEPresentVoltage); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ConsumptionCostType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":startValue,"urn:iso:15118:2:2013:MsgDataTypes":Cost{1-3})', derivedBy='RESTRICTION'. */ +static int decode_v2gConsumptionCostType(bitstream_t* stream, struct v2gConsumptionCostType* v2gConsumptionCostType) { + int grammarID = 103; + int done = 0; + + init_v2gConsumptionCostType(v2gConsumptionCostType); + + while(!done) { + switch(grammarID) { + case 103: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gConsumptionCostType->startValue); + grammarID = 104; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 104: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gConsumptionCostType->Cost.arrayLen < v2gConsumptionCostType_Cost_ARRAY_SIZE) { + errn = decode_v2gCostType(stream, &v2gConsumptionCostType->Cost.array[v2gConsumptionCostType->Cost.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 105; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gConsumptionCostType->Cost.arrayLen < v2gConsumptionCostType_Cost_ARRAY_SIZE) { + errn = decode_v2gCostType(stream, &v2gConsumptionCostType->Cost.array[v2gConsumptionCostType->Cost.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 106; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gConsumptionCostType->Cost.arrayLen < v2gConsumptionCostType_Cost_ARRAY_SIZE) { + errn = decode_v2gCostType(stream, &v2gConsumptionCostType->Cost.array[v2gConsumptionCostType->Cost.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 3; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargingStatusResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":EVSEMaxCurrent{0-1},"urn:iso:15118:2:2013:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2013:MsgBody":ReceiptRequired{0-1},"urn:iso:15118:2:2013:MsgBody":AC_EVSEStatus)', derivedBy='EXTENSION'. */ +static int decode_v2gChargingStatusResType(bitstream_t* stream, struct v2gChargingStatusResType* v2gChargingStatusResType) { + int grammarID = 107; + int done = 0; + + init_v2gChargingStatusResType(v2gChargingStatusResType); + + while(!done) { + switch(grammarID) { + case 107: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gChargingStatusResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 108; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 108: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gChargingStatusResType->EVSEID.charactersLen); + if (errn == 0) { + errn = (v2gChargingStatusResType->EVSEID.charactersLen - 2) <= v2gChargingStatusResType_EVSEID_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gChargingStatusResType->EVSEID.charactersLen >= 2) { + v2gChargingStatusResType->EVSEID.charactersLen = (uint16_t)(v2gChargingStatusResType->EVSEID.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gChargingStatusResType->EVSEID.charactersLen, v2gChargingStatusResType->EVSEID.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 109; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 109: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + v2gChargingStatusResType->SAScheduleTupleID = (uint8_t)(uint32 + 1); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 110; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 110: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gChargingStatusResType->EVSEMaxCurrent); + v2gChargingStatusResType->EVSEMaxCurrent_isUsed = 1u; + grammarID = 111; + break; + case 1: + errn = decode_v2gMeterInfoType(stream, &v2gChargingStatusResType->MeterInfo); + v2gChargingStatusResType->MeterInfo_isUsed = 1u; + grammarID = 112; + break; + case 2: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gChargingStatusResType->ReceiptRequired); + v2gChargingStatusResType->ReceiptRequired_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 113; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 3: + errn = decode_v2gAC_EVSEStatusType(stream, &v2gChargingStatusResType->AC_EVSEStatus); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 111: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gMeterInfoType(stream, &v2gChargingStatusResType->MeterInfo); + v2gChargingStatusResType->MeterInfo_isUsed = 1u; + grammarID = 112; + break; + case 1: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gChargingStatusResType->ReceiptRequired); + v2gChargingStatusResType->ReceiptRequired_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 113; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + errn = decode_v2gAC_EVSEStatusType(stream, &v2gChargingStatusResType->AC_EVSEStatus); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 112: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gChargingStatusResType->ReceiptRequired); + v2gChargingStatusResType->ReceiptRequired_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 113; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + errn = decode_v2gAC_EVSEStatusType(stream, &v2gChargingStatusResType->AC_EVSEStatus); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 113: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gAC_EVSEStatusType(stream, &v2gChargingStatusResType->AC_EVSEStatus); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVStatusType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int decode_v2gEVStatusType(bitstream_t* stream, struct v2gEVStatusType* v2gEVStatusType) { + int grammarID = 81; + int done = 0; + + init_v2gEVStatusType(v2gEVStatusType); + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,PGPDataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":PGPKeyID,"http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})|("http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED}))', derivedBy='RESTRICTION'. */ +static int decode_v2gPGPDataType(bitstream_t* stream, struct v2gPGPDataType* v2gPGPDataType) { + int grammarID = 114; + int done = 0; + + init_v2gPGPDataType(v2gPGPDataType); + + while(!done) { + switch(grammarID) { + case 114: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gPGPDataType->PGPKeyID.bytesLen); + if (errn == 0) { + errn = (v2gPGPDataType->PGPKeyID.bytesLen) <= v2gPGPDataType_PGPKeyID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gPGPDataType->PGPKeyID.bytesLen, v2gPGPDataType->PGPKeyID.bytes); + } + v2gPGPDataType->PGPKeyID_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 115; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gPGPDataType->PGPKeyPacket.bytesLen); + if (errn == 0) { + errn = (v2gPGPDataType->PGPKeyPacket.bytesLen) <= v2gPGPDataType_PGPKeyPacket_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gPGPDataType->PGPKeyPacket.bytesLen, v2gPGPDataType->PGPKeyPacket.bytes); + } + v2gPGPDataType->PGPKeyPacket_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 116; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 115: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gPGPDataType->PGPKeyPacket.bytesLen); + if (errn == 0) { + errn = (v2gPGPDataType->PGPKeyPacket.bytesLen) <= v2gPGPDataType_PGPKeyPacket_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gPGPDataType->PGPKeyPacket.bytesLen, v2gPGPDataType->PGPKeyPacket.bytes); + } + v2gPGPDataType->PGPKeyPacket_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 116; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 116; + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 116: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 116; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionStopResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode)', derivedBy='EXTENSION'. */ +static int decode_v2gSessionStopResType(bitstream_t* stream, struct v2gSessionStopResType* v2gSessionStopResType) { + int grammarID = 57; + int done = 0; + + init_v2gSessionStopResType(v2gSessionStopResType); + + while(!done) { + switch(grammarID) { + case 57: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gSessionStopResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDiscoveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgBody":ServiceCategory{0-1})', derivedBy='EXTENSION'. */ +static int decode_v2gServiceDiscoveryReqType(bitstream_t* stream, struct v2gServiceDiscoveryReqType* v2gServiceDiscoveryReqType) { + int grammarID = 117; + int done = 0; + + init_v2gServiceDiscoveryReqType(v2gServiceDiscoveryReqType); + + while(!done) { + switch(grammarID) { + case 117: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gServiceDiscoveryReqType->ServiceScope.charactersLen); + if (errn == 0) { + errn = (v2gServiceDiscoveryReqType->ServiceScope.charactersLen - 2) <= v2gServiceDiscoveryReqType_ServiceScope_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gServiceDiscoveryReqType->ServiceScope.charactersLen >= 2) { + v2gServiceDiscoveryReqType->ServiceScope.charactersLen = (uint16_t)(v2gServiceDiscoveryReqType->ServiceScope.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gServiceDiscoveryReqType->ServiceScope.charactersLen, v2gServiceDiscoveryReqType->ServiceScope.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gServiceDiscoveryReqType->ServiceScope_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 118; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gServiceDiscoveryReqType->ServiceCategory); + v2gServiceDiscoveryReqType->ServiceCategory_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 118: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gServiceDiscoveryReqType->ServiceCategory); + v2gServiceDiscoveryReqType->ServiceCategory_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,AuthorizationReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":GenChallenge{0-1})', derivedBy='EXTENSION'. */ +static int decode_v2gAuthorizationReqType(bitstream_t* stream, struct v2gAuthorizationReqType* v2gAuthorizationReqType) { + int grammarID = 119; + int done = 0; + + init_v2gAuthorizationReqType(v2gAuthorizationReqType); + + while(!done) { + switch(grammarID) { + case 119: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gAuthorizationReqType->Id.charactersLen); + if (errn == 0) { + errn = (v2gAuthorizationReqType->Id.charactersLen - 2) <= v2gAuthorizationReqType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gAuthorizationReqType->Id.charactersLen >= 2) { + v2gAuthorizationReqType->Id.charactersLen = (uint16_t)(v2gAuthorizationReqType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gAuthorizationReqType->Id.charactersLen, v2gAuthorizationReqType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gAuthorizationReqType->Id_isUsed = 1u; + grammarID = 120; + break; + case 1: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gAuthorizationReqType->GenChallenge.bytesLen); + if (errn == 0) { + errn = (v2gAuthorizationReqType->GenChallenge.bytesLen) <= v2gAuthorizationReqType_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gAuthorizationReqType->GenChallenge.bytesLen, v2gAuthorizationReqType->GenChallenge.bytes); + } + v2gAuthorizationReqType->GenChallenge_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 120: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gAuthorizationReqType->GenChallenge.bytesLen); + if (errn == 0) { + errn = (v2gAuthorizationReqType->GenChallenge.bytesLen) <= v2gAuthorizationReqType_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gAuthorizationReqType->GenChallenge.bytesLen, v2gAuthorizationReqType->GenChallenge.bytes); + } + v2gAuthorizationReqType->GenChallenge_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SAScheduleTupleType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgDataTypes":PMaxSchedule,"urn:iso:15118:2:2013:MsgDataTypes":SalesTariff{0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gSAScheduleTupleType(bitstream_t* stream, struct v2gSAScheduleTupleType* v2gSAScheduleTupleType) { + int grammarID = 121; + int done = 0; + + init_v2gSAScheduleTupleType(v2gSAScheduleTupleType); + + while(!done) { + switch(grammarID) { + case 121: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + v2gSAScheduleTupleType->SAScheduleTupleID = (uint8_t)(uint32 + 1); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 122; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 122: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPMaxScheduleType(stream, &v2gSAScheduleTupleType->PMaxSchedule); + grammarID = 123; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 123: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gSalesTariffType(stream, &v2gSAScheduleTupleType->SalesTariff); + v2gSAScheduleTupleType->SalesTariff_isUsed = 1u; + grammarID = 3; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ +static int decode_v2gPhysicalValueType(bitstream_t* stream, struct v2gPhysicalValueType* v2gPhysicalValueType) { + int grammarID = 124; + int done = 0; + + init_v2gPhysicalValueType(v2gPhysicalValueType); + + while(!done) { + switch(grammarID) { + case 124: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &(uint32)); + v2gPhysicalValueType->Multiplier = (int8_t)(uint32 -3); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 125; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 125: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &v2gPhysicalValueType->Unit); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 126; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 126: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger16(stream, &v2gPhysicalValueType->Value); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,DigestMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gDigestMethodType(bitstream_t* stream, struct v2gDigestMethodType* v2gDigestMethodType) { + int grammarID = 127; + int done = 0; + + init_v2gDigestMethodType(v2gDigestMethodType); + + while(!done) { + switch(grammarID) { + case 127: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gDigestMethodType->Algorithm.charactersLen); + if (errn == 0) { + errn = (v2gDigestMethodType->Algorithm.charactersLen - 2) <= v2gDigestMethodType_Algorithm_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gDigestMethodType->Algorithm.charactersLen >= 2) { + v2gDigestMethodType->Algorithm.charactersLen = (uint16_t)(v2gDigestMethodType->Algorithm.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gDigestMethodType->Algorithm.charactersLen, v2gDigestMethodType->Algorithm.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 128; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 128: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 1: + done = 1; + grammarID = 4; + break; + case 2: + grammarID = 60; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 60: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 1: + done = 1; + grammarID = 4; + break; + case 2: + grammarID = 60; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":RCD))', derivedBy='EXTENSION'. */ +static int decode_v2gAC_EVSEStatusType(bitstream_t* stream, struct v2gAC_EVSEStatusType* v2gAC_EVSEStatusType) { + int grammarID = 129; + int done = 0; + + init_v2gAC_EVSEStatusType(v2gAC_EVSEStatusType); + + while(!done) { + switch(grammarID) { + case 129: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gAC_EVSEStatusType->NotificationMaxDelay); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 130; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gAC_EVSEStatusType->EVSENotification); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 131; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 131: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gAC_EVSEStatusType->RCD); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionSetupResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":EVSETimeStamp{0-1})', derivedBy='EXTENSION'. */ +static int decode_v2gSessionSetupResType(bitstream_t* stream, struct v2gSessionSetupResType* v2gSessionSetupResType) { + int grammarID = 132; + int done = 0; + + init_v2gSessionSetupResType(v2gSessionSetupResType); + + while(!done) { + switch(grammarID) { + case 132: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gSessionSetupResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 133; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 133: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gSessionSetupResType->EVSEID.charactersLen); + if (errn == 0) { + errn = (v2gSessionSetupResType->EVSEID.charactersLen - 2) <= v2gSessionSetupResType_EVSEID_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gSessionSetupResType->EVSEID.charactersLen >= 2) { + v2gSessionSetupResType->EVSEID.charactersLen = (uint16_t)(v2gSessionSetupResType->EVSEID.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gSessionSetupResType->EVSEID.charactersLen, v2gSessionSetupResType->EVSEID.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 134; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 134: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger64(stream, &v2gSessionSetupResType->EVSETimeStamp); + v2gSessionSetupResType->EVSETimeStamp_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509IssuerSerialType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":X509IssuerName,"http://www.w3.org/2000/09/xmldsig#":X509SerialNumber)', derivedBy='RESTRICTION'. */ +static int decode_v2gX509IssuerSerialType(bitstream_t* stream, struct v2gX509IssuerSerialType* v2gX509IssuerSerialType) { + int grammarID = 135; + int done = 0; + + init_v2gX509IssuerSerialType(v2gX509IssuerSerialType); + + while(!done) { + switch(grammarID) { + case 135: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gX509IssuerSerialType->X509IssuerName.charactersLen); + if (errn == 0) { + errn = (v2gX509IssuerSerialType->X509IssuerName.charactersLen - 2) <= v2gX509IssuerSerialType_X509IssuerName_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gX509IssuerSerialType->X509IssuerName.charactersLen >= 2) { + v2gX509IssuerSerialType->X509IssuerName.charactersLen = (uint16_t)(v2gX509IssuerSerialType->X509IssuerName.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gX509IssuerSerialType->X509IssuerName.charactersLen, v2gX509IssuerSerialType->X509IssuerName.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 136; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 136: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger64(stream, &v2gX509IssuerSerialType->X509SerialNumber); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionStopReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ChargingSession)', derivedBy='EXTENSION'. */ +static int decode_v2gSessionStopReqType(bitstream_t* stream, struct v2gSessionStopReqType* v2gSessionStopReqType) { + int grammarID = 137; + int done = 0; + + init_v2gSessionStopReqType(v2gSessionStopReqType); + + while(!done) { + switch(grammarID) { + case 137: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 1, &v2gSessionStopReqType->ChargingSession); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode))', derivedBy='EXTENSION'. */ +static int decode_v2gDC_EVSEStatusType(bitstream_t* stream, struct v2gDC_EVSEStatusType* v2gDC_EVSEStatusType) { + int grammarID = 138; + int done = 0; + + init_v2gDC_EVSEStatusType(v2gDC_EVSEStatusType); + + while(!done) { + switch(grammarID) { + case 138: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDC_EVSEStatusType->NotificationMaxDelay); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 139; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 139: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gDC_EVSEStatusType->EVSENotification); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 140; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 140: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &v2gDC_EVSEStatusType->EVSEIsolationStatus); + v2gDC_EVSEStatusType->EVSEIsolationStatus_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 141; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 4, &v2gDC_EVSEStatusType->EVSEStatusCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 141: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 4, &v2gDC_EVSEStatusType->EVSEStatusCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DiffieHellmanPublickeyType', base type name='dHpublickeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +static int decode_v2gDiffieHellmanPublickeyType(bitstream_t* stream, struct v2gDiffieHellmanPublickeyType* v2gDiffieHellmanPublickeyType) { + int grammarID = 142; + int done = 0; + + init_v2gDiffieHellmanPublickeyType(v2gDiffieHellmanPublickeyType); + + while(!done) { + switch(grammarID) { + case 142: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gDiffieHellmanPublickeyType->Id.charactersLen); + if (errn == 0) { + errn = (v2gDiffieHellmanPublickeyType->Id.charactersLen - 2) <= v2gDiffieHellmanPublickeyType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gDiffieHellmanPublickeyType->Id.charactersLen >= 2) { + v2gDiffieHellmanPublickeyType->Id.charactersLen = (uint16_t)(v2gDiffieHellmanPublickeyType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gDiffieHellmanPublickeyType->Id.charactersLen, v2gDiffieHellmanPublickeyType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 143; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 143: + /* StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gDiffieHellmanPublickeyType->CONTENT.bytesLen); + if (errn == 0) { + errn = (v2gDiffieHellmanPublickeyType->CONTENT.bytesLen) <= v2gDiffieHellmanPublickeyType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDiffieHellmanPublickeyType->CONTENT.bytesLen, v2gDiffieHellmanPublickeyType->CONTENT.bytes); + } + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateUpdateReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs)', derivedBy='EXTENSION'. */ +static int decode_v2gCertificateUpdateReqType(bitstream_t* stream, struct v2gCertificateUpdateReqType* v2gCertificateUpdateReqType) { + int grammarID = 144; + int done = 0; + + init_v2gCertificateUpdateReqType(v2gCertificateUpdateReqType); + + while(!done) { + switch(grammarID) { + case 144: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gCertificateUpdateReqType->Id.charactersLen); + if (errn == 0) { + errn = (v2gCertificateUpdateReqType->Id.charactersLen - 2) <= v2gCertificateUpdateReqType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gCertificateUpdateReqType->Id.charactersLen >= 2) { + v2gCertificateUpdateReqType->Id.charactersLen = (uint16_t)(v2gCertificateUpdateReqType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gCertificateUpdateReqType->Id.charactersLen, v2gCertificateUpdateReqType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 145; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 145: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gCertificateChainType(stream, &v2gCertificateUpdateReqType->ContractSignatureCertChain); + grammarID = 146; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 146: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gCertificateUpdateReqType->eMAID.charactersLen); + if (errn == 0) { + errn = (v2gCertificateUpdateReqType->eMAID.charactersLen - 2) <= v2gCertificateUpdateReqType_eMAID_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gCertificateUpdateReqType->eMAID.charactersLen >= 2) { + v2gCertificateUpdateReqType->eMAID.charactersLen = (uint16_t)(v2gCertificateUpdateReqType->eMAID.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gCertificateUpdateReqType->eMAID.charactersLen, v2gCertificateUpdateReqType->eMAID.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 73; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 73: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gListOfRootCertificateIDsType(stream, &v2gCertificateUpdateReqType->ListOfRootCertificateIDs); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,BodyBaseType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int decode_v2gBodyBaseType(bitstream_t* stream, struct v2gBodyBaseType* v2gBodyBaseType) { + int grammarID = 81; + int done = 0; + + init_v2gBodyBaseType(v2gBodyBaseType); + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVChargeParameterType', base type name='EVChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1}),("urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVEnergyCapacity{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVEnergyRequest{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FullSOC{0-1},"urn:iso:15118:2:2013:MsgDataTypes":BulkSOC{0-1}))', derivedBy='EXTENSION'. */ +static int decode_v2gDC_EVChargeParameterType(bitstream_t* stream, struct v2gDC_EVChargeParameterType* v2gDC_EVChargeParameterType) { + int grammarID = 147; + int done = 0; + + init_v2gDC_EVChargeParameterType(v2gDC_EVChargeParameterType); + + while(!done) { + switch(grammarID) { + case 147: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger32(stream, &v2gDC_EVChargeParameterType->DepartureTime); + v2gDC_EVChargeParameterType->DepartureTime_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 148; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + errn = decode_v2gDC_EVStatusType(stream, &v2gDC_EVChargeParameterType->DC_EVStatus); + grammarID = 149; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVStatusType(stream, &v2gDC_EVChargeParameterType->DC_EVStatus); + grammarID = 149; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 149: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVMaximumCurrentLimit); + grammarID = 150; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 150: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVMaximumPowerLimit); + v2gDC_EVChargeParameterType->EVMaximumPowerLimit_isUsed = 1u; + grammarID = 151; + break; + case 1: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVMaximumVoltageLimit); + grammarID = 152; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 151: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVMaximumVoltageLimit); + grammarID = 152; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 152: + /* 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] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVEnergyCapacity); + v2gDC_EVChargeParameterType->EVEnergyCapacity_isUsed = 1u; + grammarID = 153; + break; + case 1: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVEnergyRequest); + v2gDC_EVChargeParameterType->EVEnergyRequest_isUsed = 1u; + grammarID = 154; + break; + case 2: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 7, &(uint32)); + v2gDC_EVChargeParameterType->FullSOC = (int8_t)(uint32 + 0); + v2gDC_EVChargeParameterType->FullSOC_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 155; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 3: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 7, &(uint32)); + v2gDC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0); + v2gDC_EVChargeParameterType->BulkSOC_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 4: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 153: + /* 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] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVEnergyRequest); + v2gDC_EVChargeParameterType->EVEnergyRequest_isUsed = 1u; + grammarID = 154; + break; + case 1: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 7, &(uint32)); + v2gDC_EVChargeParameterType->FullSOC = (int8_t)(uint32 + 0); + v2gDC_EVChargeParameterType->FullSOC_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 155; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 7, &(uint32)); + v2gDC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0); + v2gDC_EVChargeParameterType->BulkSOC_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 3: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 154: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 7, &(uint32)); + v2gDC_EVChargeParameterType->FullSOC = (int8_t)(uint32 + 0); + v2gDC_EVChargeParameterType->FullSOC_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 155; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 7, &(uint32)); + v2gDC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0); + v2gDC_EVChargeParameterType->BulkSOC_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 155: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 7, &(uint32)); + v2gDC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0); + v2gDC_EVChargeParameterType->BulkSOC_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SubCertificatesType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate{1-4})', derivedBy='RESTRICTION'. */ +static int decode_v2gSubCertificatesType(bitstream_t* stream, struct v2gSubCertificatesType* v2gSubCertificatesType) { + int grammarID = 156; + int done = 0; + + init_v2gSubCertificatesType(v2gSubCertificatesType); + + while(!done) { + switch(grammarID) { + case 156: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSubCertificatesType->Certificate.arrayLen < v2gSubCertificatesType_Certificate_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen) <= v2gSubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytes); + } + v2gSubCertificatesType->Certificate.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 157; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 157: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSubCertificatesType->Certificate.arrayLen < v2gSubCertificatesType_Certificate_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen) <= v2gSubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytes); + } + v2gSubCertificatesType->Certificate.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 158; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 158: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSubCertificatesType->Certificate.arrayLen < v2gSubCertificatesType_Certificate_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen) <= v2gSubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytes); + } + v2gSubCertificatesType->Certificate.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 159; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 159: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSubCertificatesType->Certificate.arrayLen < v2gSubCertificatesType_Certificate_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen) <= v2gSubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytesLen, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType->Certificate.arrayLen].bytes); + } + v2gSubCertificatesType->Certificate.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SupportedEnergyTransferModeType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EnergyTransferMode{1-6})', derivedBy='RESTRICTION'. */ +static int decode_v2gSupportedEnergyTransferModeType(bitstream_t* stream, struct v2gSupportedEnergyTransferModeType* v2gSupportedEnergyTransferModeType) { + int grammarID = 160; + int done = 0; + + init_v2gSupportedEnergyTransferModeType(v2gSupportedEnergyTransferModeType); + + while(!done) { + switch(grammarID) { + case 160: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < v2gSupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen]); + v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 161; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 161: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < v2gSupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen]); + v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 162; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < v2gSupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen]); + v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 163; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 163: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < v2gSupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen]); + v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 164; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 164: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < v2gSupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen]); + v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 165; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 165: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen < v2gSupportedEnergyTransferModeType_EnergyTransferMode_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen]); + v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargingStatusReqType', base type name='BodyBaseType', content type='EMPTY', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +static int decode_v2gChargingStatusReqType(bitstream_t* stream, struct v2gChargingStatusReqType* v2gChargingStatusReqType) { + int grammarID = 81; + int done = 0; + + init_v2gChargingStatusReqType(v2gChargingStatusReqType); + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertyType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int decode_v2gSignaturePropertyType(bitstream_t* stream, struct v2gSignaturePropertyType* v2gSignaturePropertyType) { + int grammarID = 166; + int done = 0; + + init_v2gSignaturePropertyType(v2gSignaturePropertyType); + + while(!done) { + switch(grammarID) { + case 166: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Target)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gSignaturePropertyType->Id.charactersLen); + if (errn == 0) { + errn = (v2gSignaturePropertyType->Id.charactersLen - 2) <= v2gSignaturePropertyType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gSignaturePropertyType->Id.charactersLen >= 2) { + v2gSignaturePropertyType->Id.charactersLen = (uint16_t)(v2gSignaturePropertyType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gSignaturePropertyType->Id.charactersLen, v2gSignaturePropertyType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gSignaturePropertyType->Id_isUsed = 1u; + grammarID = 167; + break; + case 1: + errn = decodeUnsignedInteger16(stream, &v2gSignaturePropertyType->Target.charactersLen); + if (errn == 0) { + errn = (v2gSignaturePropertyType->Target.charactersLen - 2) <= v2gSignaturePropertyType_Target_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gSignaturePropertyType->Target.charactersLen >= 2) { + v2gSignaturePropertyType->Target.charactersLen = (uint16_t)(v2gSignaturePropertyType->Target.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gSignaturePropertyType->Target.charactersLen, v2gSignaturePropertyType->Target.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 168; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 167: + /* StartTag[ATTRIBUTE[STRING](Target)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gSignaturePropertyType->Target.charactersLen); + if (errn == 0) { + errn = (v2gSignaturePropertyType->Target.charactersLen - 2) <= v2gSignaturePropertyType_Target_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gSignaturePropertyType->Target.charactersLen >= 2) { + v2gSignaturePropertyType->Target.charactersLen = (uint16_t)(v2gSignaturePropertyType->Target.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gSignaturePropertyType->Target.charactersLen, v2gSignaturePropertyType->Target.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 168; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 168: + /* StartTag[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 1: + grammarID = 169; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 60: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 1: + done = 1; + grammarID = 4; + break; + case 2: + grammarID = 60; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 169: + /* Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 1: + grammarID = 169; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ContractSignatureEncryptedPrivateKeyType', base type name='privateKeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +static int decode_v2gContractSignatureEncryptedPrivateKeyType(bitstream_t* stream, struct v2gContractSignatureEncryptedPrivateKeyType* v2gContractSignatureEncryptedPrivateKeyType) { + int grammarID = 142; + int done = 0; + + init_v2gContractSignatureEncryptedPrivateKeyType(v2gContractSignatureEncryptedPrivateKeyType); + + while(!done) { + switch(grammarID) { + case 142: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gContractSignatureEncryptedPrivateKeyType->Id.charactersLen); + if (errn == 0) { + errn = (v2gContractSignatureEncryptedPrivateKeyType->Id.charactersLen - 2) <= v2gContractSignatureEncryptedPrivateKeyType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gContractSignatureEncryptedPrivateKeyType->Id.charactersLen >= 2) { + v2gContractSignatureEncryptedPrivateKeyType->Id.charactersLen = (uint16_t)(v2gContractSignatureEncryptedPrivateKeyType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gContractSignatureEncryptedPrivateKeyType->Id.charactersLen, v2gContractSignatureEncryptedPrivateKeyType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 143; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 143: + /* StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen); + if (errn == 0) { + errn = (v2gContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen) <= v2gContractSignatureEncryptedPrivateKeyType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen, v2gContractSignatureEncryptedPrivateKeyType->CONTENT.bytes); + } + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ReferenceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1},"http://www.w3.org/2000/09/xmldsig#":DigestMethod,"http://www.w3.org/2000/09/xmldsig#":DigestValue)', derivedBy='RESTRICTION'. */ +static int decode_v2gReferenceType(bitstream_t* stream, struct v2gReferenceType* v2gReferenceType) { + int grammarID = 170; + int done = 0; + + init_v2gReferenceType(v2gReferenceType); + + while(!done) { + switch(grammarID) { + case 170: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gReferenceType->Id.charactersLen); + if (errn == 0) { + errn = (v2gReferenceType->Id.charactersLen - 2) <= v2gReferenceType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gReferenceType->Id.charactersLen >= 2) { + v2gReferenceType->Id.charactersLen = (uint16_t)(v2gReferenceType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gReferenceType->Id.charactersLen, v2gReferenceType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gReferenceType->Id_isUsed = 1u; + grammarID = 171; + break; + case 1: + errn = decodeUnsignedInteger16(stream, &v2gReferenceType->Type.charactersLen); + if (errn == 0) { + errn = (v2gReferenceType->Type.charactersLen - 2) <= v2gReferenceType_Type_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gReferenceType->Type.charactersLen >= 2) { + v2gReferenceType->Type.charactersLen = (uint16_t)(v2gReferenceType->Type.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gReferenceType->Type.charactersLen, v2gReferenceType->Type.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gReferenceType->Type_isUsed = 1u; + grammarID = 172; + break; + case 2: + errn = decodeUnsignedInteger16(stream, &v2gReferenceType->URI.charactersLen); + if (errn == 0) { + errn = (v2gReferenceType->URI.charactersLen - 2) <= v2gReferenceType_URI_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gReferenceType->URI.charactersLen >= 2) { + v2gReferenceType->URI.charactersLen = (uint16_t)(v2gReferenceType->URI.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gReferenceType->URI.charactersLen, v2gReferenceType->URI.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gReferenceType->URI_isUsed = 1u; + grammarID = 173; + break; + case 3: + errn = decode_v2gTransformsType(stream, &v2gReferenceType->Transforms); + v2gReferenceType->Transforms_isUsed = 1u; + grammarID = 174; + break; + case 4: + errn = decode_v2gDigestMethodType(stream, &v2gReferenceType->DigestMethod); + grammarID = 175; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 171: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gReferenceType->Type.charactersLen); + if (errn == 0) { + errn = (v2gReferenceType->Type.charactersLen - 2) <= v2gReferenceType_Type_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gReferenceType->Type.charactersLen >= 2) { + v2gReferenceType->Type.charactersLen = (uint16_t)(v2gReferenceType->Type.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gReferenceType->Type.charactersLen, v2gReferenceType->Type.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gReferenceType->Type_isUsed = 1u; + grammarID = 172; + break; + case 1: + errn = decodeUnsignedInteger16(stream, &v2gReferenceType->URI.charactersLen); + if (errn == 0) { + errn = (v2gReferenceType->URI.charactersLen - 2) <= v2gReferenceType_URI_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gReferenceType->URI.charactersLen >= 2) { + v2gReferenceType->URI.charactersLen = (uint16_t)(v2gReferenceType->URI.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gReferenceType->URI.charactersLen, v2gReferenceType->URI.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gReferenceType->URI_isUsed = 1u; + grammarID = 173; + break; + case 2: + errn = decode_v2gTransformsType(stream, &v2gReferenceType->Transforms); + v2gReferenceType->Transforms_isUsed = 1u; + grammarID = 174; + break; + case 3: + errn = decode_v2gDigestMethodType(stream, &v2gReferenceType->DigestMethod); + grammarID = 175; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 172: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gReferenceType->URI.charactersLen); + if (errn == 0) { + errn = (v2gReferenceType->URI.charactersLen - 2) <= v2gReferenceType_URI_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gReferenceType->URI.charactersLen >= 2) { + v2gReferenceType->URI.charactersLen = (uint16_t)(v2gReferenceType->URI.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gReferenceType->URI.charactersLen, v2gReferenceType->URI.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gReferenceType->URI_isUsed = 1u; + grammarID = 173; + break; + case 1: + errn = decode_v2gTransformsType(stream, &v2gReferenceType->Transforms); + v2gReferenceType->Transforms_isUsed = 1u; + grammarID = 174; + break; + case 2: + errn = decode_v2gDigestMethodType(stream, &v2gReferenceType->DigestMethod); + grammarID = 175; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 173: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gTransformsType(stream, &v2gReferenceType->Transforms); + v2gReferenceType->Transforms_isUsed = 1u; + grammarID = 174; + break; + case 1: + errn = decode_v2gDigestMethodType(stream, &v2gReferenceType->DigestMethod); + grammarID = 175; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 174: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDigestMethodType(stream, &v2gReferenceType->DigestMethod); + grammarID = 175; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 175: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gReferenceType->DigestValue.bytesLen); + if (errn == 0) { + errn = (v2gReferenceType->DigestValue.bytesLen) <= v2gReferenceType_DigestValue_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gReferenceType->DigestValue.bytesLen, v2gReferenceType->DigestValue.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CurrentDemandResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage,"urn:iso:15118:2:2013:MsgBody":EVSEPresentCurrent,"urn:iso:15118:2:2013:MsgBody":EVSECurrentLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEVoltageLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEPowerLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEMaximumVoltageLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEMaximumCurrentLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2013:MsgBody":ReceiptRequired{0-1})', derivedBy='EXTENSION'. */ +static int decode_v2gCurrentDemandResType(bitstream_t* stream, struct v2gCurrentDemandResType* v2gCurrentDemandResType) { + int grammarID = 176; + int done = 0; + + init_v2gCurrentDemandResType(v2gCurrentDemandResType); + + while(!done) { + switch(grammarID) { + case 176: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gCurrentDemandResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 177; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 177: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVSEStatusType(stream, &v2gCurrentDemandResType->DC_EVSEStatus); + grammarID = 178; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEPresentVoltage); + grammarID = 179; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 179: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEPresentCurrent); + grammarID = 180; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 180: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandResType->EVSECurrentLimitAchieved); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 181; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 181: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandResType->EVSEVoltageLimitAchieved); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 182; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 182: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandResType->EVSEPowerLimitAchieved); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 183; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 183: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumVoltageLimit); + v2gCurrentDemandResType->EVSEMaximumVoltageLimit_isUsed = 1u; + grammarID = 184; + break; + case 1: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumCurrentLimit); + v2gCurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 1u; + grammarID = 185; + break; + case 2: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumPowerLimit); + v2gCurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 1u; + grammarID = 186; + break; + case 3: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gCurrentDemandResType->EVSEID.charactersLen); + if (errn == 0) { + errn = (v2gCurrentDemandResType->EVSEID.charactersLen - 2) <= v2gCurrentDemandResType_EVSEID_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gCurrentDemandResType->EVSEID.charactersLen >= 2) { + v2gCurrentDemandResType->EVSEID.charactersLen = (uint16_t)(v2gCurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gCurrentDemandResType->EVSEID.charactersLen, v2gCurrentDemandResType->EVSEID.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 187; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 184: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumCurrentLimit); + v2gCurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 1u; + grammarID = 185; + break; + case 1: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumPowerLimit); + v2gCurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 1u; + grammarID = 186; + break; + case 2: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gCurrentDemandResType->EVSEID.charactersLen); + if (errn == 0) { + errn = (v2gCurrentDemandResType->EVSEID.charactersLen - 2) <= v2gCurrentDemandResType_EVSEID_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gCurrentDemandResType->EVSEID.charactersLen >= 2) { + v2gCurrentDemandResType->EVSEID.charactersLen = (uint16_t)(v2gCurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gCurrentDemandResType->EVSEID.charactersLen, v2gCurrentDemandResType->EVSEID.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 187; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 185: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumPowerLimit); + v2gCurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 1u; + grammarID = 186; + break; + case 1: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gCurrentDemandResType->EVSEID.charactersLen); + if (errn == 0) { + errn = (v2gCurrentDemandResType->EVSEID.charactersLen - 2) <= v2gCurrentDemandResType_EVSEID_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gCurrentDemandResType->EVSEID.charactersLen >= 2) { + v2gCurrentDemandResType->EVSEID.charactersLen = (uint16_t)(v2gCurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gCurrentDemandResType->EVSEID.charactersLen, v2gCurrentDemandResType->EVSEID.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 187; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gCurrentDemandResType->EVSEID.charactersLen); + if (errn == 0) { + errn = (v2gCurrentDemandResType->EVSEID.charactersLen - 2) <= v2gCurrentDemandResType_EVSEID_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gCurrentDemandResType->EVSEID.charactersLen >= 2) { + v2gCurrentDemandResType->EVSEID.charactersLen = (uint16_t)(v2gCurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gCurrentDemandResType->EVSEID.charactersLen, v2gCurrentDemandResType->EVSEID.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 187; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 187: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + v2gCurrentDemandResType->SAScheduleTupleID = (uint8_t)(uint32 + 1); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 188; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gMeterInfoType(stream, &v2gCurrentDemandResType->MeterInfo); + v2gCurrentDemandResType->MeterInfo_isUsed = 1u; + grammarID = 189; + break; + case 1: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandResType->ReceiptRequired); + v2gCurrentDemandResType->ReceiptRequired_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 189: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandResType->ReceiptRequired); + v2gCurrentDemandResType->ReceiptRequired_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,CanonicalizationMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##any]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gCanonicalizationMethodType(bitstream_t* stream, struct v2gCanonicalizationMethodType* v2gCanonicalizationMethodType) { + int grammarID = 127; + int done = 0; + + init_v2gCanonicalizationMethodType(v2gCanonicalizationMethodType); + + while(!done) { + switch(grammarID) { + case 127: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gCanonicalizationMethodType->Algorithm.charactersLen); + if (errn == 0) { + errn = (v2gCanonicalizationMethodType->Algorithm.charactersLen - 2) <= v2gCanonicalizationMethodType_Algorithm_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gCanonicalizationMethodType->Algorithm.charactersLen >= 2) { + v2gCanonicalizationMethodType->Algorithm.charactersLen = (uint16_t)(v2gCanonicalizationMethodType->Algorithm.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gCanonicalizationMethodType->Algorithm.charactersLen, v2gCanonicalizationMethodType->Algorithm.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 128; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 128: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 1: + done = 1; + grammarID = 4; + break; + case 2: + grammarID = 60; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 60: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 1: + done = 1; + grammarID = 4; + break; + case 2: + grammarID = 60; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])|"http://www.w3.org/2000/09/xmldsig#":XPath){0-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int decode_v2gTransformType(bitstream_t* stream, struct v2gTransformType* v2gTransformType) { + int grammarID = 190; + int done = 0; + + init_v2gTransformType(v2gTransformType); + + while(!done) { + switch(grammarID) { + case 190: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gTransformType->Algorithm.charactersLen); + if (errn == 0) { + errn = (v2gTransformType->Algorithm.charactersLen - 2) <= v2gTransformType_Algorithm_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gTransformType->Algorithm.charactersLen >= 2) { + v2gTransformType->Algorithm.charactersLen = (uint16_t)(v2gTransformType->Algorithm.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gTransformType->Algorithm.charactersLen, v2gTransformType->Algorithm.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 191; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 191: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gTransformType->XPath.arrayLen < v2gTransformType_XPath_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen - 2) <= v2gTransformType_XPath_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen >= 2) { + v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen = (uint16_t)(v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen, v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gTransformType->XPath.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 192; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 192; + break; + case 2: + done = 1; + grammarID = 4; + break; + case 3: + grammarID = 192; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 192: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gTransformType->XPath.arrayLen < v2gTransformType_XPath_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen - 2) <= v2gTransformType_XPath_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen >= 2) { + v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen = (uint16_t)(v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].charactersLen, v2gTransformType->XPath.array[v2gTransformType->XPath.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gTransformType->XPath.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 192; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 192; + break; + case 2: + done = 1; + grammarID = 4; + break; + case 3: + grammarID = 192; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CertificateChainType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate,"urn:iso:15118:2:2013:MsgDataTypes":SubCertificates{0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gCertificateChainType(bitstream_t* stream, struct v2gCertificateChainType* v2gCertificateChainType) { + int grammarID = 193; + int done = 0; + + init_v2gCertificateChainType(v2gCertificateChainType); + + while(!done) { + switch(grammarID) { + case 193: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gCertificateChainType->Id.charactersLen); + if (errn == 0) { + errn = (v2gCertificateChainType->Id.charactersLen - 2) <= v2gCertificateChainType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gCertificateChainType->Id.charactersLen >= 2) { + v2gCertificateChainType->Id.charactersLen = (uint16_t)(v2gCertificateChainType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gCertificateChainType->Id.charactersLen, v2gCertificateChainType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gCertificateChainType->Id_isUsed = 1u; + grammarID = 194; + break; + case 1: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gCertificateChainType->Certificate.bytesLen); + if (errn == 0) { + errn = (v2gCertificateChainType->Certificate.bytesLen) <= v2gCertificateChainType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gCertificateChainType->Certificate.bytesLen, v2gCertificateChainType->Certificate.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 195; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 194: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gCertificateChainType->Certificate.bytesLen); + if (errn == 0) { + errn = (v2gCertificateChainType->Certificate.bytesLen) <= v2gCertificateChainType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gCertificateChainType->Certificate.bytesLen, v2gCertificateChainType->Certificate.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 195; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 195: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gSubCertificatesType(stream, &v2gCertificateChainType->SubCertificates); + v2gCertificateChainType->SubCertificates_isUsed = 1u; + grammarID = 3; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureValueType', base type name='base64Binary', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +static int decode_v2gSignatureValueType(bitstream_t* stream, struct v2gSignatureValueType* v2gSignatureValueType) { + int grammarID = 196; + int done = 0; + + init_v2gSignatureValueType(v2gSignatureValueType); + + while(!done) { + switch(grammarID) { + case 196: + /* FirstStartTag[ATTRIBUTE[STRING](Id), CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gSignatureValueType->Id.charactersLen); + if (errn == 0) { + errn = (v2gSignatureValueType->Id.charactersLen - 2) <= v2gSignatureValueType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gSignatureValueType->Id.charactersLen >= 2) { + v2gSignatureValueType->Id.charactersLen = (uint16_t)(v2gSignatureValueType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gSignatureValueType->Id.charactersLen, v2gSignatureValueType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gSignatureValueType->Id_isUsed = 1u; + grammarID = 143; + break; + case 1: + errn = decodeUnsignedInteger16(stream, &v2gSignatureValueType->CONTENT.bytesLen); + if (errn == 0) { + errn = (v2gSignatureValueType->CONTENT.bytesLen) <= v2gSignatureValueType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gSignatureValueType->CONTENT.bytesLen, v2gSignatureValueType->CONTENT.bytes); + } + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 143: + /* StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gSignatureValueType->CONTENT.bytesLen); + if (errn == 0) { + errn = (v2gSignatureValueType->CONTENT.bytesLen) <= v2gSignatureValueType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gSignatureValueType->CONTENT.bytesLen, v2gSignatureValueType->CONTENT.bytes); + } + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVPowerDeliveryParameterType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int decode_v2gEVPowerDeliveryParameterType(bitstream_t* stream, struct v2gEVPowerDeliveryParameterType* v2gEVPowerDeliveryParameterType) { + int grammarID = 81; + int done = 0; + + init_v2gEVPowerDeliveryParameterType(v2gEVPowerDeliveryParameterType); + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDetailReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ServiceID)', derivedBy='EXTENSION'. */ +static int decode_v2gServiceDetailReqType(bitstream_t* stream, struct v2gServiceDetailReqType* v2gServiceDetailReqType) { + int grammarID = 197; + int done = 0; + + init_v2gServiceDetailReqType(v2gServiceDetailReqType); + + while(!done) { + switch(grammarID) { + case 197: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gServiceDetailReqType->ServiceID); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentDetailsResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":GenChallenge,"urn:iso:15118:2:2013:MsgBody":EVSETimeStamp)', derivedBy='EXTENSION'. */ +static int decode_v2gPaymentDetailsResType(bitstream_t* stream, struct v2gPaymentDetailsResType* v2gPaymentDetailsResType) { + int grammarID = 198; + int done = 0; + + init_v2gPaymentDetailsResType(v2gPaymentDetailsResType); + + while(!done) { + switch(grammarID) { + case 198: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gPaymentDetailsResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 199; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 199: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gPaymentDetailsResType->GenChallenge.bytesLen); + if (errn == 0) { + errn = (v2gPaymentDetailsResType->GenChallenge.bytesLen) <= v2gPaymentDetailsResType_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gPaymentDetailsResType->GenChallenge.bytesLen, v2gPaymentDetailsResType->GenChallenge.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 200; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 200: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger64(stream, &v2gPaymentDetailsResType->EVSETimeStamp); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509DataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":X509IssuerSerial|"http://www.w3.org/2000/09/xmldsig#":X509SKI|"http://www.w3.org/2000/09/xmldsig#":X509SubjectName|"http://www.w3.org/2000/09/xmldsig#":X509Certificate|"http://www.w3.org/2000/09/xmldsig#":X509CRL|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int decode_v2gX509DataType(bitstream_t* stream, struct v2gX509DataType* v2gX509DataType) { + int grammarID = 201; + int done = 0; + + init_v2gX509DataType(v2gX509DataType); + + while(!done) { + switch(grammarID) { + case 201: + /* 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] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gX509DataType->X509IssuerSerial.arrayLen < v2gX509DataType_X509IssuerSerial_ARRAY_SIZE) { + errn = decode_v2gX509IssuerSerialType(stream, &v2gX509DataType->X509IssuerSerial.array[v2gX509DataType->X509IssuerSerial.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 202; + break; + case 1: + if (v2gX509DataType->X509SKI.arrayLen < v2gX509DataType_X509SKI_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gX509DataType->X509SKI.array[v2gX509DataType->X509SKI.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gX509DataType->X509SKI.array[v2gX509DataType->X509SKI.arrayLen].bytesLen) <= v2gX509DataType_X509SKI_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gX509DataType->X509SKI.array[v2gX509DataType->X509SKI.arrayLen].bytesLen, v2gX509DataType->X509SKI.array[v2gX509DataType->X509SKI.arrayLen].bytes); + } + v2gX509DataType->X509SKI.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 202; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + if (v2gX509DataType->X509SubjectName.arrayLen < v2gX509DataType_X509SubjectName_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen - 2) <= v2gX509DataType_X509SubjectName_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen >= 2) { + v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen = (uint16_t)(v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen, v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gX509DataType->X509SubjectName.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 202; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 3: + if (v2gX509DataType->X509Certificate.arrayLen < v2gX509DataType_X509Certificate_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gX509DataType->X509Certificate.array[v2gX509DataType->X509Certificate.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gX509DataType->X509Certificate.array[v2gX509DataType->X509Certificate.arrayLen].bytesLen) <= v2gX509DataType_X509Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gX509DataType->X509Certificate.array[v2gX509DataType->X509Certificate.arrayLen].bytesLen, v2gX509DataType->X509Certificate.array[v2gX509DataType->X509Certificate.arrayLen].bytes); + } + v2gX509DataType->X509Certificate.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 202; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 4: + if (v2gX509DataType->X509CRL.arrayLen < v2gX509DataType_X509CRL_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gX509DataType->X509CRL.array[v2gX509DataType->X509CRL.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gX509DataType->X509CRL.array[v2gX509DataType->X509CRL.arrayLen].bytesLen) <= v2gX509DataType_X509CRL_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gX509DataType->X509CRL.array[v2gX509DataType->X509CRL.arrayLen].bytesLen, v2gX509DataType->X509CRL.array[v2gX509DataType->X509CRL.arrayLen].bytes); + } + v2gX509DataType->X509CRL.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 202; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 5: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 202; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 202: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gX509DataType->X509IssuerSerial.arrayLen < v2gX509DataType_X509IssuerSerial_ARRAY_SIZE) { + errn = decode_v2gX509IssuerSerialType(stream, &v2gX509DataType->X509IssuerSerial.array[v2gX509DataType->X509IssuerSerial.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 202; + break; + case 1: + if (v2gX509DataType->X509SKI.arrayLen < v2gX509DataType_X509SKI_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gX509DataType->X509SKI.array[v2gX509DataType->X509SKI.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gX509DataType->X509SKI.array[v2gX509DataType->X509SKI.arrayLen].bytesLen) <= v2gX509DataType_X509SKI_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gX509DataType->X509SKI.array[v2gX509DataType->X509SKI.arrayLen].bytesLen, v2gX509DataType->X509SKI.array[v2gX509DataType->X509SKI.arrayLen].bytes); + } + v2gX509DataType->X509SKI.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 202; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + if (v2gX509DataType->X509SubjectName.arrayLen < v2gX509DataType_X509SubjectName_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen - 2) <= v2gX509DataType_X509SubjectName_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen >= 2) { + v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen = (uint16_t)(v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].charactersLen, v2gX509DataType->X509SubjectName.array[v2gX509DataType->X509SubjectName.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gX509DataType->X509SubjectName.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 202; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 3: + if (v2gX509DataType->X509Certificate.arrayLen < v2gX509DataType_X509Certificate_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gX509DataType->X509Certificate.array[v2gX509DataType->X509Certificate.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gX509DataType->X509Certificate.array[v2gX509DataType->X509Certificate.arrayLen].bytesLen) <= v2gX509DataType_X509Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gX509DataType->X509Certificate.array[v2gX509DataType->X509Certificate.arrayLen].bytesLen, v2gX509DataType->X509Certificate.array[v2gX509DataType->X509Certificate.arrayLen].bytes); + } + v2gX509DataType->X509Certificate.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 202; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 4: + if (v2gX509DataType->X509CRL.arrayLen < v2gX509DataType_X509CRL_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gX509DataType->X509CRL.array[v2gX509DataType->X509CRL.arrayLen].bytesLen); + if (errn == 0) { + errn = (v2gX509DataType->X509CRL.array[v2gX509DataType->X509CRL.arrayLen].bytesLen) <= v2gX509DataType_X509CRL_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gX509DataType->X509CRL.array[v2gX509DataType->X509CRL.arrayLen].bytesLen, v2gX509DataType->X509CRL.array[v2gX509DataType->X509CRL.arrayLen].bytes); + } + v2gX509DataType->X509CRL.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 202; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 5: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 202; + break; + case 6: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,DSAKeyValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":P,"http://www.w3.org/2000/09/xmldsig#":Q){0-1},"http://www.w3.org/2000/09/xmldsig#":G{0-1},"http://www.w3.org/2000/09/xmldsig#":Y,"http://www.w3.org/2000/09/xmldsig#":J{0-1},("http://www.w3.org/2000/09/xmldsig#":Seed,"http://www.w3.org/2000/09/xmldsig#":PgenCounter){0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gDSAKeyValueType(bitstream_t* stream, struct v2gDSAKeyValueType* v2gDSAKeyValueType) { + int grammarID = 203; + int done = 0; + + init_v2gDSAKeyValueType(v2gDSAKeyValueType); + + while(!done) { + switch(grammarID) { + case 203: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDSAKeyValueType->P.bytesLen); + if (errn == 0) { + errn = (v2gDSAKeyValueType->P.bytesLen) <= v2gDSAKeyValueType_P_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDSAKeyValueType->P.bytesLen, v2gDSAKeyValueType->P.bytes); + } + v2gDSAKeyValueType->P_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 204; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDSAKeyValueType->G.bytesLen); + if (errn == 0) { + errn = (v2gDSAKeyValueType->G.bytesLen) <= v2gDSAKeyValueType_G_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDSAKeyValueType->G.bytesLen, v2gDSAKeyValueType->G.bytes); + } + v2gDSAKeyValueType->G_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 205; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDSAKeyValueType->Y.bytesLen); + if (errn == 0) { + errn = (v2gDSAKeyValueType->Y.bytesLen) <= v2gDSAKeyValueType_Y_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDSAKeyValueType->Y.bytesLen, v2gDSAKeyValueType->Y.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 206; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 204: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDSAKeyValueType->Q.bytesLen); + if (errn == 0) { + errn = (v2gDSAKeyValueType->Q.bytesLen) <= v2gDSAKeyValueType_Q_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDSAKeyValueType->Q.bytesLen, v2gDSAKeyValueType->Q.bytes); + } + v2gDSAKeyValueType->Q_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 207; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 207: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDSAKeyValueType->G.bytesLen); + if (errn == 0) { + errn = (v2gDSAKeyValueType->G.bytesLen) <= v2gDSAKeyValueType_G_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDSAKeyValueType->G.bytesLen, v2gDSAKeyValueType->G.bytes); + } + v2gDSAKeyValueType->G_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 205; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDSAKeyValueType->Y.bytesLen); + if (errn == 0) { + errn = (v2gDSAKeyValueType->Y.bytesLen) <= v2gDSAKeyValueType_Y_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDSAKeyValueType->Y.bytesLen, v2gDSAKeyValueType->Y.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 206; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 205: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDSAKeyValueType->Y.bytesLen); + if (errn == 0) { + errn = (v2gDSAKeyValueType->Y.bytesLen) <= v2gDSAKeyValueType_Y_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDSAKeyValueType->Y.bytesLen, v2gDSAKeyValueType->Y.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 206; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 206: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDSAKeyValueType->J.bytesLen); + if (errn == 0) { + errn = (v2gDSAKeyValueType->J.bytesLen) <= v2gDSAKeyValueType_J_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDSAKeyValueType->J.bytesLen, v2gDSAKeyValueType->J.bytes); + } + v2gDSAKeyValueType->J_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 208; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDSAKeyValueType->Seed.bytesLen); + if (errn == 0) { + errn = (v2gDSAKeyValueType->Seed.bytesLen) <= v2gDSAKeyValueType_Seed_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDSAKeyValueType->Seed.bytesLen, v2gDSAKeyValueType->Seed.bytes); + } + v2gDSAKeyValueType->Seed_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 209; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 208: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDSAKeyValueType->Seed.bytesLen); + if (errn == 0) { + errn = (v2gDSAKeyValueType->Seed.bytesLen) <= v2gDSAKeyValueType_Seed_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDSAKeyValueType->Seed.bytesLen, v2gDSAKeyValueType->Seed.bytes); + } + v2gDSAKeyValueType->Seed_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 209; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 209: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gDSAKeyValueType->PgenCounter.bytesLen); + if (errn == 0) { + errn = (v2gDSAKeyValueType->PgenCounter.bytesLen) <= v2gDSAKeyValueType_PgenCounter_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gDSAKeyValueType->PgenCounter.bytesLen, v2gDSAKeyValueType->PgenCounter.bytes); + } + v2gDSAKeyValueType->PgenCounter_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PowerDeliveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus)', derivedBy='EXTENSION'. */ +static int decode_v2gPowerDeliveryResType(bitstream_t* stream, struct v2gPowerDeliveryResType* v2gPowerDeliveryResType) { + int grammarID = 62; + int done = 0; + + init_v2gPowerDeliveryResType(v2gPowerDeliveryResType); + + while(!done) { + switch(grammarID) { + case 62: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gPowerDeliveryResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 63; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 63: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gAC_EVSEStatusType(stream, &v2gPowerDeliveryResType->AC_EVSEStatus); + v2gPowerDeliveryResType->AC_EVSEStatus_isUsed = 1u; + grammarID = 3; + break; + case 1: + errn = decode_v2gDC_EVSEStatusType(stream, &v2gPowerDeliveryResType->DC_EVSEStatus); + v2gPowerDeliveryResType->DC_EVSEStatus_isUsed = 1u; + grammarID = 3; + break; + case 2: + errn = decode_v2gEVSEStatusType(stream, &v2gPowerDeliveryResType->EVSEStatus); + v2gPowerDeliveryResType->EVSEStatus_isUsed = 1u; + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargeParameterDiscoveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":MaxEntriesSAScheduleTuple{0-1},"urn:iso:15118:2:2013:MsgBody":RequestedEnergyTransferMode,"urn:iso:15118:2:2013:MsgDataTypes":EVChargeParameter)', derivedBy='EXTENSION'. */ +static int decode_v2gChargeParameterDiscoveryReqType(bitstream_t* stream, struct v2gChargeParameterDiscoveryReqType* v2gChargeParameterDiscoveryReqType) { + int grammarID = 210; + int done = 0; + + init_v2gChargeParameterDiscoveryReqType(v2gChargeParameterDiscoveryReqType); + + while(!done) { + switch(grammarID) { + case 210: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple); + v2gChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 211; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &v2gChargeParameterDiscoveryReqType->RequestedEnergyTransferMode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 212; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 211: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 3, &v2gChargeParameterDiscoveryReqType->RequestedEnergyTransferMode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 212; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 212: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gAC_EVChargeParameterType(stream, &v2gChargeParameterDiscoveryReqType->AC_EVChargeParameter); + v2gChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 1u; + grammarID = 3; + break; + case 1: + errn = decode_v2gDC_EVChargeParameterType(stream, &v2gChargeParameterDiscoveryReqType->DC_EVChargeParameter); + v2gChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 1u; + grammarID = 3; + break; + case 2: + errn = decode_v2gEVChargeParameterType(stream, &v2gChargeParameterDiscoveryReqType->EVChargeParameter); + v2gChargeParameterDiscoveryReqType->EVChargeParameter_isUsed = 1u; + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ParameterSetType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID,"urn:iso:15118:2:2013:MsgDataTypes":Parameter{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gParameterSetType(bitstream_t* stream, struct v2gParameterSetType* v2gParameterSetType) { + int grammarID = 213; + int done = 0; + + init_v2gParameterSetType(v2gParameterSetType); + + while(!done) { + switch(grammarID) { + case 213: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger16(stream, &v2gParameterSetType->ParameterSetID); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 214; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 214: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gParameterSetType->Parameter.arrayLen < v2gParameterSetType_Parameter_ARRAY_SIZE) { + errn = decode_v2gParameterType(stream, &v2gParameterSetType->Parameter.array[v2gParameterSetType->Parameter.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 215; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 215: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gParameterSetType->Parameter.arrayLen < v2gParameterSetType_Parameter_ARRAY_SIZE) { + errn = decode_v2gParameterType(stream, &v2gParameterSetType->Parameter.array[v2gParameterSetType->Parameter.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 215; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDiscoveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":PaymentOptionList,"urn:iso:15118:2:2013:MsgBody":ChargeService,"urn:iso:15118:2:2013:MsgBody":ServiceList{0-1})', derivedBy='EXTENSION'. */ +static int decode_v2gServiceDiscoveryResType(bitstream_t* stream, struct v2gServiceDiscoveryResType* v2gServiceDiscoveryResType) { + int grammarID = 216; + int done = 0; + + init_v2gServiceDiscoveryResType(v2gServiceDiscoveryResType); + + while(!done) { + switch(grammarID) { + case 216: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gServiceDiscoveryResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 217; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 217: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPaymentOptionListType(stream, &v2gServiceDiscoveryResType->PaymentOptionList); + grammarID = 218; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gChargeServiceType(stream, &v2gServiceDiscoveryResType->ChargeService); + grammarID = 219; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 219: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gServiceListType(stream, &v2gServiceDiscoveryResType->ServiceList); + v2gServiceDiscoveryResType->ServiceList_isUsed = 1u; + grammarID = 3; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDef,#AnonType_V2G_Message', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDef":Header,"urn:iso:15118:2:2013:MsgDef":Body)', derivedBy='RESTRICTION'. */ +static int decode_v2gAnonType_V2G_Message(bitstream_t* stream, struct v2gAnonType_V2G_Message* v2gAnonType_V2G_Message) { + int grammarID = 220; + int done = 0; + + init_v2gAnonType_V2G_Message(v2gAnonType_V2G_Message); + + while(!done) { + switch(grammarID) { + case 220: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gMessageHeaderType(stream, &v2gAnonType_V2G_Message->Header); + grammarID = 221; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 221: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gBodyType(stream, &v2gAnonType_V2G_Message->Body); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SignedInfo,"http://www.w3.org/2000/09/xmldsig#":SignatureValue,"http://www.w3.org/2000/09/xmldsig#":KeyInfo{0-1},"http://www.w3.org/2000/09/xmldsig#":Object{0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gSignatureType(bitstream_t* stream, struct v2gSignatureType* v2gSignatureType) { + int grammarID = 222; + int done = 0; + + init_v2gSignatureType(v2gSignatureType); + + while(!done) { + switch(grammarID) { + case 222: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gSignatureType->Id.charactersLen); + if (errn == 0) { + errn = (v2gSignatureType->Id.charactersLen - 2) <= v2gSignatureType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gSignatureType->Id.charactersLen >= 2) { + v2gSignatureType->Id.charactersLen = (uint16_t)(v2gSignatureType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gSignatureType->Id.charactersLen, v2gSignatureType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gSignatureType->Id_isUsed = 1u; + grammarID = 223; + break; + case 1: + errn = decode_v2gSignedInfoType(stream, &v2gSignatureType->SignedInfo); + grammarID = 224; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 223: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gSignedInfoType(stream, &v2gSignatureType->SignedInfo); + grammarID = 224; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 224: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gSignatureValueType(stream, &v2gSignatureType->SignatureValue); + grammarID = 225; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 225: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gKeyInfoType(stream, &v2gSignatureType->KeyInfo); + v2gSignatureType->KeyInfo_isUsed = 1u; + grammarID = 226; + break; + case 1: + if (v2gSignatureType->Object.arrayLen < v2gSignatureType_Object_ARRAY_SIZE) { + errn = decode_v2gObjectType(stream, &v2gSignatureType->Object.array[v2gSignatureType->Object.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 226; + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 226: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSignatureType->Object.arrayLen < v2gSignatureType_Object_ARRAY_SIZE) { + errn = decode_v2gObjectType(stream, &v2gSignatureType->Object.array[v2gSignatureType->Object.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 226; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EMAIDType', base type name='eMAIDType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +static int decode_v2gEMAIDType(bitstream_t* stream, struct v2gEMAIDType* v2gEMAIDType) { + int grammarID = 227; + int done = 0; + + init_v2gEMAIDType(v2gEMAIDType); + + while(!done) { + switch(grammarID) { + case 227: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gEMAIDType->Id.charactersLen); + if (errn == 0) { + errn = (v2gEMAIDType->Id.charactersLen - 2) <= v2gEMAIDType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gEMAIDType->Id.charactersLen >= 2) { + v2gEMAIDType->Id.charactersLen = (uint16_t)(v2gEMAIDType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gEMAIDType->Id.charactersLen, v2gEMAIDType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 228; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 228: + /* StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gEMAIDType->CONTENT.charactersLen); + if (errn == 0) { + errn = (v2gEMAIDType->CONTENT.charactersLen - 2) <= v2gEMAIDType_CONTENT_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gEMAIDType->CONTENT.charactersLen >= 2) { + v2gEMAIDType->CONTENT.charactersLen = (uint16_t)(v2gEMAIDType->CONTENT.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gEMAIDType->CONTENT.charactersLen, v2gEMAIDType->CONTENT.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateInstallationResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2013:MsgBody":DHpublickey,"urn:iso:15118:2:2013:MsgBody":eMAID)', derivedBy='EXTENSION'. */ +static int decode_v2gCertificateInstallationResType(bitstream_t* stream, struct v2gCertificateInstallationResType* v2gCertificateInstallationResType) { + int grammarID = 229; + int done = 0; + + init_v2gCertificateInstallationResType(v2gCertificateInstallationResType); + + while(!done) { + switch(grammarID) { + case 229: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gCertificateInstallationResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 230; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 230: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gCertificateChainType(stream, &v2gCertificateInstallationResType->SAProvisioningCertificateChain); + grammarID = 231; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 231: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gCertificateChainType(stream, &v2gCertificateInstallationResType->ContractSignatureCertChain); + grammarID = 232; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 232: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gContractSignatureEncryptedPrivateKeyType(stream, &v2gCertificateInstallationResType->ContractSignatureEncryptedPrivateKey); + grammarID = 233; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 233: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDiffieHellmanPublickeyType(stream, &v2gCertificateInstallationResType->DHpublickey); + grammarID = 234; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 234: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gEMAIDType(stream, &v2gCertificateInstallationResType->eMAID); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CableCheckResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing)', derivedBy='EXTENSION'. */ +static int decode_v2gCableCheckResType(bitstream_t* stream, struct v2gCableCheckResType* v2gCableCheckResType) { + int grammarID = 235; + int done = 0; + + init_v2gCableCheckResType(v2gCableCheckResType); + + while(!done) { + switch(grammarID) { + case 235: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gCableCheckResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 236; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 236: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVSEStatusType(stream, &v2gCableCheckResType->DC_EVSEStatus); + grammarID = 9; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 9: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gCableCheckResType->EVSEProcessing); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,MeterInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":MeterID,"urn:iso:15118:2:2013:MsgDataTypes":MeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SigMeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":MeterStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":TMeter{0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gMeterInfoType(bitstream_t* stream, struct v2gMeterInfoType* v2gMeterInfoType) { + int grammarID = 237; + int done = 0; + + init_v2gMeterInfoType(v2gMeterInfoType); + + while(!done) { + switch(grammarID) { + case 237: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gMeterInfoType->MeterID.charactersLen); + if (errn == 0) { + errn = (v2gMeterInfoType->MeterID.charactersLen - 2) <= v2gMeterInfoType_MeterID_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gMeterInfoType->MeterID.charactersLen >= 2) { + v2gMeterInfoType->MeterID.charactersLen = (uint16_t)(v2gMeterInfoType->MeterID.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gMeterInfoType->MeterID.charactersLen, v2gMeterInfoType->MeterID.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 238; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 238: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger64(stream, &v2gMeterInfoType->MeterReading); + v2gMeterInfoType->MeterReading_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterReading) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 239; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gMeterInfoType->SigMeterReading.bytesLen); + if (errn == 0) { + errn = (v2gMeterInfoType->SigMeterReading.bytesLen) <= v2gMeterInfoType_SigMeterReading_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gMeterInfoType->SigMeterReading.bytesLen, v2gMeterInfoType->SigMeterReading.bytes); + } + v2gMeterInfoType->SigMeterReading_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 240; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + /* FirstStartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger16(stream, &v2gMeterInfoType->MeterStatus); + v2gMeterInfoType->MeterStatus_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 241; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 3: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger64(stream, &v2gMeterInfoType->TMeter); + v2gMeterInfoType->TMeter_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 4: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 239: + /* 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] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gMeterInfoType->SigMeterReading.bytesLen); + if (errn == 0) { + errn = (v2gMeterInfoType->SigMeterReading.bytesLen) <= v2gMeterInfoType_SigMeterReading_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gMeterInfoType->SigMeterReading.bytesLen, v2gMeterInfoType->SigMeterReading.bytes); + } + v2gMeterInfoType->SigMeterReading_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 240; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger16(stream, &v2gMeterInfoType->MeterStatus); + v2gMeterInfoType->MeterStatus_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 241; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger64(stream, &v2gMeterInfoType->TMeter); + v2gMeterInfoType->TMeter_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 3: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 240: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger16(stream, &v2gMeterInfoType->MeterStatus); + v2gMeterInfoType->MeterStatus_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 241; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger64(stream, &v2gMeterInfoType->TMeter); + v2gMeterInfoType->TMeter_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 241: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger64(stream, &v2gMeterInfoType->TMeter); + v2gMeterInfoType->TMeter_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVChargeParameterType', base type name='EVChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1}),("urn:iso:15118:2:2013:MsgDataTypes":EAmount,"urn:iso:15118:2:2013:MsgDataTypes":EVMaxVoltage,"urn:iso:15118:2:2013:MsgDataTypes":EVMaxCurrent,"urn:iso:15118:2:2013:MsgDataTypes":EVMinCurrent))', derivedBy='EXTENSION'. */ +static int decode_v2gAC_EVChargeParameterType(bitstream_t* stream, struct v2gAC_EVChargeParameterType* v2gAC_EVChargeParameterType) { + int grammarID = 242; + int done = 0; + + init_v2gAC_EVChargeParameterType(v2gAC_EVChargeParameterType); + + while(!done) { + switch(grammarID) { + case 242: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger32(stream, &v2gAC_EVChargeParameterType->DepartureTime); + v2gAC_EVChargeParameterType->DepartureTime_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 243; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + errn = decode_v2gPhysicalValueType(stream, &v2gAC_EVChargeParameterType->EAmount); + grammarID = 244; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 243: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gAC_EVChargeParameterType->EAmount); + grammarID = 244; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 244: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gAC_EVChargeParameterType->EVMaxVoltage); + grammarID = 245; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 245: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gAC_EVChargeParameterType->EVMaxCurrent); + grammarID = 246; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 246: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gAC_EVChargeParameterType->EVMinCurrent); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceParameterListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ParameterSet{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gServiceParameterListType(bitstream_t* stream, struct v2gServiceParameterListType* v2gServiceParameterListType) { + int grammarID = 247; + int done = 0; + + init_v2gServiceParameterListType(v2gServiceParameterListType); + + while(!done) { + switch(grammarID) { + case 247: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gServiceParameterListType->ParameterSet.arrayLen < v2gServiceParameterListType_ParameterSet_ARRAY_SIZE) { + errn = decode_v2gParameterSetType(stream, &v2gServiceParameterListType->ParameterSet.array[v2gServiceParameterListType->ParameterSet.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 248; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gServiceParameterListType->ParameterSet.arrayLen < v2gServiceParameterListType_ParameterSet_ARRAY_SIZE) { + errn = decode_v2gParameterSetType(stream, &v2gServiceParameterListType->ParameterSet.array[v2gServiceParameterListType->ParameterSet.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 248; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CurrentDemandReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus,"urn:iso:15118:2:2013:MsgBody":EVTargetCurrent,"urn:iso:15118:2:2013:MsgBody":EVMaximumVoltageLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVMaximumCurrentLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgBody":BulkChargingComplete{0-1},"urn:iso:15118:2:2013:MsgBody":ChargingComplete,"urn:iso:15118:2:2013:MsgBody":RemainingTimeToFullSoC{0-1},"urn:iso:15118:2:2013:MsgBody":RemainingTimeToBulkSoC{0-1},"urn:iso:15118:2:2013:MsgBody":EVTargetVoltage)', derivedBy='EXTENSION'. */ +static int decode_v2gCurrentDemandReqType(bitstream_t* stream, struct v2gCurrentDemandReqType* v2gCurrentDemandReqType) { + int grammarID = 249; + int done = 0; + + init_v2gCurrentDemandReqType(v2gCurrentDemandReqType); + + while(!done) { + switch(grammarID) { + case 249: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVStatusType(stream, &v2gCurrentDemandReqType->DC_EVStatus); + grammarID = 250; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 250: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVTargetCurrent); + grammarID = 251; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 251: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumVoltageLimit); + v2gCurrentDemandReqType->EVMaximumVoltageLimit_isUsed = 1u; + grammarID = 252; + break; + case 1: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumCurrentLimit); + v2gCurrentDemandReqType->EVMaximumCurrentLimit_isUsed = 1u; + grammarID = 253; + break; + case 2: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumPowerLimit); + v2gCurrentDemandReqType->EVMaximumPowerLimit_isUsed = 1u; + grammarID = 254; + break; + case 3: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandReqType->BulkChargingComplete); + v2gCurrentDemandReqType->BulkChargingComplete_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 255; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 4: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandReqType->ChargingComplete); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 256; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 252: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumCurrentLimit); + v2gCurrentDemandReqType->EVMaximumCurrentLimit_isUsed = 1u; + grammarID = 253; + break; + case 1: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumPowerLimit); + v2gCurrentDemandReqType->EVMaximumPowerLimit_isUsed = 1u; + grammarID = 254; + break; + case 2: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandReqType->BulkChargingComplete); + v2gCurrentDemandReqType->BulkChargingComplete_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 255; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 3: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandReqType->ChargingComplete); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 256; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 253: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumPowerLimit); + v2gCurrentDemandReqType->EVMaximumPowerLimit_isUsed = 1u; + grammarID = 254; + break; + case 1: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandReqType->BulkChargingComplete); + v2gCurrentDemandReqType->BulkChargingComplete_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 255; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandReqType->ChargingComplete); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 256; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 254: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandReqType->BulkChargingComplete); + v2gCurrentDemandReqType->BulkChargingComplete_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 255; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandReqType->ChargingComplete); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 256; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 255: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gCurrentDemandReqType->ChargingComplete); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 256; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 256: + /* 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)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->RemainingTimeToFullSoC); + v2gCurrentDemandReqType->RemainingTimeToFullSoC_isUsed = 1u; + grammarID = 257; + break; + case 1: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->RemainingTimeToBulkSoC); + v2gCurrentDemandReqType->RemainingTimeToBulkSoC_isUsed = 1u; + grammarID = 258; + break; + case 2: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVTargetVoltage); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 257: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->RemainingTimeToBulkSoC); + v2gCurrentDemandReqType->RemainingTimeToBulkSoC_isUsed = 1u; + grammarID = 258; + break; + case 1: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVTargetVoltage); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 258: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVTargetVoltage); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SASchedulesType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int decode_v2gSASchedulesType(bitstream_t* stream, struct v2gSASchedulesType* v2gSASchedulesType) { + int grammarID = 81; + int done = 0; + + init_v2gSASchedulesType(v2gSASchedulesType); + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,IntervalType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int decode_v2gIntervalType(bitstream_t* stream, struct v2gIntervalType* v2gIntervalType) { + int grammarID = 81; + int done = 0; + + init_v2gIntervalType(v2gIntervalType); + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PreChargeResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage)', derivedBy='EXTENSION'. */ +static int decode_v2gPreChargeResType(bitstream_t* stream, struct v2gPreChargeResType* v2gPreChargeResType) { + int grammarID = 100; + int done = 0; + + init_v2gPreChargeResType(v2gPreChargeResType); + + while(!done) { + switch(grammarID) { + case 100: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gPreChargeResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 101; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 101: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVSEStatusType(stream, &v2gPreChargeResType->DC_EVSEStatus); + grammarID = 102; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 102: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gPreChargeResType->EVSEPresentVoltage); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SalesTariffEntryType', base type name='EntryType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2013:MsgDataTypes":EPriceLevel{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ConsumptionCost{0-3}))', derivedBy='EXTENSION'. */ +static int decode_v2gSalesTariffEntryType(bitstream_t* stream, struct v2gSalesTariffEntryType* v2gSalesTariffEntryType) { + int grammarID = 259; + int done = 0; + + init_v2gSalesTariffEntryType(v2gSalesTariffEntryType); + + while(!done) { + switch(grammarID) { + case 259: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gRelativeTimeIntervalType(stream, &v2gSalesTariffEntryType->RelativeTimeInterval); + v2gSalesTariffEntryType->RelativeTimeInterval_isUsed = 1u; + grammarID = 260; + break; + case 1: + errn = decode_v2gIntervalType(stream, &v2gSalesTariffEntryType->TimeInterval); + v2gSalesTariffEntryType->TimeInterval_isUsed = 1u; + grammarID = 260; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 260: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + v2gSalesTariffEntryType->EPriceLevel = (uint8_t)(uint32 + 0); + v2gSalesTariffEntryType->EPriceLevel_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 261; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + if (v2gSalesTariffEntryType->ConsumptionCost.arrayLen < v2gSalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) { + errn = decode_v2gConsumptionCostType(stream, &v2gSalesTariffEntryType->ConsumptionCost.array[v2gSalesTariffEntryType->ConsumptionCost.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 262; + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 261: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSalesTariffEntryType->ConsumptionCost.arrayLen < v2gSalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) { + errn = decode_v2gConsumptionCostType(stream, &v2gSalesTariffEntryType->ConsumptionCost.array[v2gSalesTariffEntryType->ConsumptionCost.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 262; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 262: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSalesTariffEntryType->ConsumptionCost.arrayLen < v2gSalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) { + errn = decode_v2gConsumptionCostType(stream, &v2gSalesTariffEntryType->ConsumptionCost.array[v2gSalesTariffEntryType->ConsumptionCost.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 263; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 263: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSalesTariffEntryType->ConsumptionCost.arrayLen < v2gSalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) { + errn = decode_v2gConsumptionCostType(stream, &v2gSalesTariffEntryType->ConsumptionCost.array[v2gSalesTariffEntryType->ConsumptionCost.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 3; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PaymentOptionListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":PaymentOption{1-2})', derivedBy='RESTRICTION'. */ +static int decode_v2gPaymentOptionListType(bitstream_t* stream, struct v2gPaymentOptionListType* v2gPaymentOptionListType) { + int grammarID = 264; + int done = 0; + + init_v2gPaymentOptionListType(v2gPaymentOptionListType); + + while(!done) { + switch(grammarID) { + case 264: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gPaymentOptionListType->PaymentOption.arrayLen < v2gPaymentOptionListType_PaymentOption_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 1, &v2gPaymentOptionListType->PaymentOption.array[v2gPaymentOptionListType->PaymentOption.arrayLen]); + v2gPaymentOptionListType->PaymentOption.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 265; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 265: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gPaymentOptionListType->PaymentOption.arrayLen < v2gPaymentOptionListType_PaymentOption_ARRAY_SIZE) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 1, &v2gPaymentOptionListType->PaymentOption.array[v2gPaymentOptionListType->PaymentOption.arrayLen]); + v2gPaymentOptionListType->PaymentOption.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignedInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":CanonicalizationMethod,"http://www.w3.org/2000/09/xmldsig#":SignatureMethod,"http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gSignedInfoType(bitstream_t* stream, struct v2gSignedInfoType* v2gSignedInfoType) { + int grammarID = 266; + int done = 0; + + init_v2gSignedInfoType(v2gSignedInfoType); + + while(!done) { + switch(grammarID) { + case 266: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gSignedInfoType->Id.charactersLen); + if (errn == 0) { + errn = (v2gSignedInfoType->Id.charactersLen - 2) <= v2gSignedInfoType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gSignedInfoType->Id.charactersLen >= 2) { + v2gSignedInfoType->Id.charactersLen = (uint16_t)(v2gSignedInfoType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gSignedInfoType->Id.charactersLen, v2gSignedInfoType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gSignedInfoType->Id_isUsed = 1u; + grammarID = 267; + break; + case 1: + errn = decode_v2gCanonicalizationMethodType(stream, &v2gSignedInfoType->CanonicalizationMethod); + grammarID = 268; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 267: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gCanonicalizationMethodType(stream, &v2gSignedInfoType->CanonicalizationMethod); + grammarID = 268; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 268: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gSignatureMethodType(stream, &v2gSignedInfoType->SignatureMethod); + grammarID = 269; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 269: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSignedInfoType->Reference.arrayLen < v2gSignedInfoType_Reference_ARRAY_SIZE) { + errn = decode_v2gReferenceType(stream, &v2gSignedInfoType->Reference.array[v2gSignedInfoType->Reference.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 84; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 84: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSignedInfoType->Reference.arrayLen < v2gSignedInfoType_Reference_ARRAY_SIZE) { + errn = decode_v2gReferenceType(stream, &v2gSignedInfoType->Reference.array[v2gSignedInfoType->Reference.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 84; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionSetupReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":EVCCID)', derivedBy='EXTENSION'. */ +static int decode_v2gSessionSetupReqType(bitstream_t* stream, struct v2gSessionSetupReqType* v2gSessionSetupReqType) { + int grammarID = 270; + int done = 0; + + init_v2gSessionSetupReqType(v2gSessionSetupReqType); + + while(!done) { + switch(grammarID) { + case 270: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gSessionSetupReqType->EVCCID.bytesLen); + if (errn == 0) { + errn = (v2gSessionSetupReqType->EVCCID.bytesLen) <= v2gSessionSetupReqType_EVCCID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gSessionSetupReqType->EVCCID.bytesLen, v2gSessionSetupReqType->EVCCID.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertiesType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SignatureProperty{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gSignaturePropertiesType(bitstream_t* stream, struct v2gSignaturePropertiesType* v2gSignaturePropertiesType) { + int grammarID = 271; + int done = 0; + + init_v2gSignaturePropertiesType(v2gSignaturePropertiesType); + + while(!done) { + switch(grammarID) { + case 271: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gSignaturePropertiesType->Id.charactersLen); + if (errn == 0) { + errn = (v2gSignaturePropertiesType->Id.charactersLen - 2) <= v2gSignaturePropertiesType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gSignaturePropertiesType->Id.charactersLen >= 2) { + v2gSignaturePropertiesType->Id.charactersLen = (uint16_t)(v2gSignaturePropertiesType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gSignaturePropertiesType->Id.charactersLen, v2gSignaturePropertiesType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gSignaturePropertiesType->Id_isUsed = 1u; + grammarID = 272; + break; + case 1: + if (v2gSignaturePropertiesType->SignatureProperty.arrayLen < v2gSignaturePropertiesType_SignatureProperty_ARRAY_SIZE) { + errn = decode_v2gSignaturePropertyType(stream, &v2gSignaturePropertiesType->SignatureProperty.array[v2gSignaturePropertiesType->SignatureProperty.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 273; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 272: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSignaturePropertiesType->SignatureProperty.arrayLen < v2gSignaturePropertiesType_SignatureProperty_ARRAY_SIZE) { + errn = decode_v2gSignaturePropertyType(stream, &v2gSignaturePropertiesType->SignatureProperty.array[v2gSignaturePropertiesType->SignatureProperty.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 273; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 273: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSignaturePropertiesType->SignatureProperty.arrayLen < v2gSignaturePropertiesType_SignatureProperty_ARRAY_SIZE) { + errn = decode_v2gSignaturePropertyType(stream, &v2gSignaturePropertiesType->SignatureProperty.array[v2gSignaturePropertiesType->SignatureProperty.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 273; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ProfileEntryType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryStart,"urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxPower,"urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxNumberOfPhasesInUse{0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gProfileEntryType(bitstream_t* stream, struct v2gProfileEntryType* v2gProfileEntryType) { + int grammarID = 274; + int done = 0; + + init_v2gProfileEntryType(v2gProfileEntryType); + + while(!done) { + switch(grammarID) { + case 274: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger32(stream, &v2gProfileEntryType->ChargingProfileEntryStart); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 275; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 275: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gProfileEntryType->ChargingProfileEntryMaxPower); + grammarID = 276; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 276: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &(uint32)); + v2gProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse = (int8_t)(uint32 + 1); + v2gProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PreChargeReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus,"urn:iso:15118:2:2013:MsgBody":EVTargetVoltage,"urn:iso:15118:2:2013:MsgBody":EVTargetCurrent)', derivedBy='EXTENSION'. */ +static int decode_v2gPreChargeReqType(bitstream_t* stream, struct v2gPreChargeReqType* v2gPreChargeReqType) { + int grammarID = 277; + int done = 0; + + init_v2gPreChargeReqType(v2gPreChargeReqType); + + while(!done) { + switch(grammarID) { + case 277: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVStatusType(stream, &v2gPreChargeReqType->DC_EVStatus); + grammarID = 278; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 278: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gPreChargeReqType->EVTargetVoltage); + grammarID = 279; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 279: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gPhysicalValueType(stream, &v2gPreChargeReqType->EVTargetCurrent); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ListOfRootCertificateIDsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":RootCertificateID{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gListOfRootCertificateIDsType(bitstream_t* stream, struct v2gListOfRootCertificateIDsType* v2gListOfRootCertificateIDsType) { + int grammarID = 280; + int done = 0; + + init_v2gListOfRootCertificateIDsType(v2gListOfRootCertificateIDsType); + + while(!done) { + switch(grammarID) { + case 280: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gListOfRootCertificateIDsType->RootCertificateID.arrayLen < v2gListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) { + errn = decode_v2gX509IssuerSerialType(stream, &v2gListOfRootCertificateIDsType->RootCertificateID.array[v2gListOfRootCertificateIDsType->RootCertificateID.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 281; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 281: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gListOfRootCertificateIDsType->RootCertificateID.arrayLen < v2gListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) { + errn = decode_v2gX509IssuerSerialType(stream, &v2gListOfRootCertificateIDsType->RootCertificateID.array[v2gListOfRootCertificateIDsType->RootCertificateID.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 281; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVPowerDeliveryParameterType', base type name='EVPowerDeliveryParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2013:MsgDataTypes":BulkChargingComplete{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ChargingComplete)', derivedBy='EXTENSION'. */ +static int decode_v2gDC_EVPowerDeliveryParameterType(bitstream_t* stream, struct v2gDC_EVPowerDeliveryParameterType* v2gDC_EVPowerDeliveryParameterType) { + int grammarID = 282; + int done = 0; + + init_v2gDC_EVPowerDeliveryParameterType(v2gDC_EVPowerDeliveryParameterType); + + while(!done) { + switch(grammarID) { + case 282: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVStatusType(stream, &v2gDC_EVPowerDeliveryParameterType->DC_EVStatus); + grammarID = 283; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 283: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gDC_EVPowerDeliveryParameterType->BulkChargingComplete); + v2gDC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 284; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gDC_EVPowerDeliveryParameterType->ChargingComplete); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 284: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gDC_EVPowerDeliveryParameterType->ChargingComplete); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,RelativeTimeIntervalType', base type name='IntervalType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":start,"urn:iso:15118:2:2013:MsgDataTypes":duration{0-1})', derivedBy='EXTENSION'. */ +static int decode_v2gRelativeTimeIntervalType(bitstream_t* stream, struct v2gRelativeTimeIntervalType* v2gRelativeTimeIntervalType) { + int grammarID = 285; + int done = 0; + + init_v2gRelativeTimeIntervalType(v2gRelativeTimeIntervalType); + + while(!done) { + switch(grammarID) { + case 285: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger32(stream, &v2gRelativeTimeIntervalType->start); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 286; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 286: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger32(stream, &v2gRelativeTimeIntervalType->duration); + v2gRelativeTimeIntervalType->duration_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ChargingProfileType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ProfileEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gChargingProfileType(bitstream_t* stream, struct v2gChargingProfileType* v2gChargingProfileType) { + int grammarID = 287; + int done = 0; + + init_v2gChargingProfileType(v2gChargingProfileType); + + while(!done) { + switch(grammarID) { + case 287: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gChargingProfileType->ProfileEntry.arrayLen < v2gChargingProfileType_ProfileEntry_ARRAY_SIZE) { + errn = decode_v2gProfileEntryType(stream, &v2gChargingProfileType->ProfileEntry.array[v2gChargingProfileType->ProfileEntry.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 288; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 288: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gChargingProfileType->ProfileEntry.arrayLen < v2gChargingProfileType_ProfileEntry_ARRAY_SIZE) { + errn = decode_v2gProfileEntryType(stream, &v2gChargingProfileType->ProfileEntry.array[v2gChargingProfileType->ProfileEntry.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 288; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateUpdateResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2013:MsgBody":DHpublickey,"urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":RetryCounter{0-1})', derivedBy='EXTENSION'. */ +static int decode_v2gCertificateUpdateResType(bitstream_t* stream, struct v2gCertificateUpdateResType* v2gCertificateUpdateResType) { + int grammarID = 289; + int done = 0; + + init_v2gCertificateUpdateResType(v2gCertificateUpdateResType); + + while(!done) { + switch(grammarID) { + case 289: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 5, &v2gCertificateUpdateResType->ResponseCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 290; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 290: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gCertificateChainType(stream, &v2gCertificateUpdateResType->SAProvisioningCertificateChain); + grammarID = 291; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 291: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gCertificateChainType(stream, &v2gCertificateUpdateResType->ContractSignatureCertChain); + grammarID = 292; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 292: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gContractSignatureEncryptedPrivateKeyType(stream, &v2gCertificateUpdateResType->ContractSignatureEncryptedPrivateKey); + grammarID = 293; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 293: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDiffieHellmanPublickeyType(stream, &v2gCertificateUpdateResType->DHpublickey); + grammarID = 294; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 294: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gEMAIDType(stream, &v2gCertificateUpdateResType->eMAID); + grammarID = 295; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 295: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeInteger16(stream, &v2gCertificateUpdateResType->RetryCounter); + v2gCertificateUpdateResType->RetryCounter_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,MeteringReceiptReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":SessionID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2013:MsgBody":MeterInfo)', derivedBy='EXTENSION'. */ +static int decode_v2gMeteringReceiptReqType(bitstream_t* stream, struct v2gMeteringReceiptReqType* v2gMeteringReceiptReqType) { + int grammarID = 296; + int done = 0; + + init_v2gMeteringReceiptReqType(v2gMeteringReceiptReqType); + + while(!done) { + switch(grammarID) { + case 296: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gMeteringReceiptReqType->Id.charactersLen); + if (errn == 0) { + errn = (v2gMeteringReceiptReqType->Id.charactersLen - 2) <= v2gMeteringReceiptReqType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gMeteringReceiptReqType->Id.charactersLen >= 2) { + v2gMeteringReceiptReqType->Id.charactersLen = (uint16_t)(v2gMeteringReceiptReqType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gMeteringReceiptReqType->Id.charactersLen, v2gMeteringReceiptReqType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gMeteringReceiptReqType->Id_isUsed = 1u; + grammarID = 297; + break; + case 1: + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gMeteringReceiptReqType->SessionID.bytesLen); + if (errn == 0) { + errn = (v2gMeteringReceiptReqType->SessionID.bytesLen) <= v2gMeteringReceiptReqType_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gMeteringReceiptReqType->SessionID.bytesLen, v2gMeteringReceiptReqType->SessionID.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 298; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 297: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gMeteringReceiptReqType->SessionID.bytesLen); + if (errn == 0) { + errn = (v2gMeteringReceiptReqType->SessionID.bytesLen) <= v2gMeteringReceiptReqType_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, v2gMeteringReceiptReqType->SessionID.bytesLen, v2gMeteringReceiptReqType->SessionID.bytes); + } + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 298; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 298: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + v2gMeteringReceiptReqType->SAScheduleTupleID = (uint8_t)(uint32 + 1); + v2gMeteringReceiptReqType->SAScheduleTupleID_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 299; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + errn = decode_v2gMeterInfoType(stream, &v2gMeteringReceiptReqType->MeterInfo); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 299: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gMeterInfoType(stream, &v2gMeteringReceiptReqType->MeterInfo); + grammarID = 3; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2013:MsgDataTypes":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FreeService)', derivedBy='RESTRICTION'. */ +static int decode_v2gServiceType(bitstream_t* stream, struct v2gServiceType* v2gServiceType) { + int grammarID = 300; + int done = 0; + + init_v2gServiceType(v2gServiceType); + + while(!done) { + switch(grammarID) { + case 300: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gServiceType->ServiceID); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 301; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 301: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gServiceType->ServiceName.charactersLen); + if (errn == 0) { + errn = (v2gServiceType->ServiceName.charactersLen - 2) <= v2gServiceType_ServiceName_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gServiceType->ServiceName.charactersLen >= 2) { + v2gServiceType->ServiceName.charactersLen = (uint16_t)(v2gServiceType->ServiceName.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gServiceType->ServiceName.charactersLen, v2gServiceType->ServiceName.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gServiceType->ServiceName_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 302; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gServiceType->ServiceCategory); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 303; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 302: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gServiceType->ServiceCategory); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 303; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 303: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gServiceType->ServiceScope.charactersLen); + if (errn == 0) { + errn = (v2gServiceType->ServiceScope.charactersLen - 2) <= v2gServiceType_ServiceScope_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gServiceType->ServiceScope.charactersLen >= 2) { + v2gServiceType->ServiceScope.charactersLen = (uint16_t)(v2gServiceType->ServiceScope.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gServiceType->ServiceScope.charactersLen, v2gServiceType->ServiceScope.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gServiceType->ServiceScope_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 304; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gServiceType->FreeService); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 304: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeBoolean(stream, &v2gServiceType->FreeService); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,NotificationType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":FaultCode,"urn:iso:15118:2:2013:MsgDataTypes":FaultMsg{0-1})', derivedBy='RESTRICTION'. */ +static int decode_v2gNotificationType(bitstream_t* stream, struct v2gNotificationType* v2gNotificationType) { + int grammarID = 305; + int done = 0; + + init_v2gNotificationType(v2gNotificationType); + + while(!done) { + switch(grammarID) { + case 305: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gNotificationType->FaultCode); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 306; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 306: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gNotificationType->FaultMsg.charactersLen); + if (errn == 0) { + errn = (v2gNotificationType->FaultMsg.charactersLen - 2) <= v2gNotificationType_FaultMsg_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gNotificationType->FaultMsg.charactersLen >= 2) { + v2gNotificationType->FaultMsg.charactersLen = (uint16_t)(v2gNotificationType->FaultMsg.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gNotificationType->FaultMsg.charactersLen, v2gNotificationType->FaultMsg.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gNotificationType->FaultMsg_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 3; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyInfoType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":KeyName|"http://www.w3.org/2000/09/xmldsig#":KeyValue|"http://www.w3.org/2000/09/xmldsig#":RetrievalMethod|"http://www.w3.org/2000/09/xmldsig#":X509Data|"http://www.w3.org/2000/09/xmldsig#":PGPData|"http://www.w3.org/2000/09/xmldsig#":SPKIData|"http://www.w3.org/2000/09/xmldsig#":MgmtData|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int decode_v2gKeyInfoType(bitstream_t* stream, struct v2gKeyInfoType* v2gKeyInfoType) { + int grammarID = 307; + int done = 0; + + init_v2gKeyInfoType(v2gKeyInfoType); + + while(!done) { + switch(grammarID) { + case 307: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gKeyInfoType->Id.charactersLen); + if (errn == 0) { + errn = (v2gKeyInfoType->Id.charactersLen - 2) <= v2gKeyInfoType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gKeyInfoType->Id.charactersLen >= 2) { + v2gKeyInfoType->Id.charactersLen = (uint16_t)(v2gKeyInfoType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gKeyInfoType->Id.charactersLen, v2gKeyInfoType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gKeyInfoType->Id_isUsed = 1u; + grammarID = 308; + break; + case 1: + if (v2gKeyInfoType->KeyName.arrayLen < v2gKeyInfoType_KeyName_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen - 2) <= v2gKeyInfoType_KeyName_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen >= 2) { + v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen, v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gKeyInfoType->KeyName.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 309; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 2: + if (v2gKeyInfoType->KeyValue.arrayLen < v2gKeyInfoType_KeyValue_ARRAY_SIZE) { + errn = decode_v2gKeyValueType(stream, &v2gKeyInfoType->KeyValue.array[v2gKeyInfoType->KeyValue.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 3: + if (v2gKeyInfoType->RetrievalMethod.arrayLen < v2gKeyInfoType_RetrievalMethod_ARRAY_SIZE) { + errn = decode_v2gRetrievalMethodType(stream, &v2gKeyInfoType->RetrievalMethod.array[v2gKeyInfoType->RetrievalMethod.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 4: + if (v2gKeyInfoType->X509Data.arrayLen < v2gKeyInfoType_X509Data_ARRAY_SIZE) { + errn = decode_v2gX509DataType(stream, &v2gKeyInfoType->X509Data.array[v2gKeyInfoType->X509Data.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 5: + if (v2gKeyInfoType->PGPData.arrayLen < v2gKeyInfoType_PGPData_ARRAY_SIZE) { + errn = decode_v2gPGPDataType(stream, &v2gKeyInfoType->PGPData.array[v2gKeyInfoType->PGPData.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 6: + if (v2gKeyInfoType->SPKIData.arrayLen < v2gKeyInfoType_SPKIData_ARRAY_SIZE) { + errn = decode_v2gSPKIDataType(stream, &v2gKeyInfoType->SPKIData.array[v2gKeyInfoType->SPKIData.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 7: + if (v2gKeyInfoType->MgmtData.arrayLen < v2gKeyInfoType_MgmtData_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen - 2) <= v2gKeyInfoType_MgmtData_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen >= 2) { + v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gKeyInfoType->MgmtData.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 309; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 8: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 309; + break; + case 9: + grammarID = 310; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 308: + /* 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]] */ + errn = decodeNBitUnsignedInteger(stream, 4, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gKeyInfoType->KeyName.arrayLen < v2gKeyInfoType_KeyName_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen - 2) <= v2gKeyInfoType_KeyName_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen >= 2) { + v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen, v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gKeyInfoType->KeyName.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 309; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + if (v2gKeyInfoType->KeyValue.arrayLen < v2gKeyInfoType_KeyValue_ARRAY_SIZE) { + errn = decode_v2gKeyValueType(stream, &v2gKeyInfoType->KeyValue.array[v2gKeyInfoType->KeyValue.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 2: + if (v2gKeyInfoType->RetrievalMethod.arrayLen < v2gKeyInfoType_RetrievalMethod_ARRAY_SIZE) { + errn = decode_v2gRetrievalMethodType(stream, &v2gKeyInfoType->RetrievalMethod.array[v2gKeyInfoType->RetrievalMethod.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 3: + if (v2gKeyInfoType->X509Data.arrayLen < v2gKeyInfoType_X509Data_ARRAY_SIZE) { + errn = decode_v2gX509DataType(stream, &v2gKeyInfoType->X509Data.array[v2gKeyInfoType->X509Data.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 4: + if (v2gKeyInfoType->PGPData.arrayLen < v2gKeyInfoType_PGPData_ARRAY_SIZE) { + errn = decode_v2gPGPDataType(stream, &v2gKeyInfoType->PGPData.array[v2gKeyInfoType->PGPData.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 5: + if (v2gKeyInfoType->SPKIData.arrayLen < v2gKeyInfoType_SPKIData_ARRAY_SIZE) { + errn = decode_v2gSPKIDataType(stream, &v2gKeyInfoType->SPKIData.array[v2gKeyInfoType->SPKIData.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 6: + if (v2gKeyInfoType->MgmtData.arrayLen < v2gKeyInfoType_MgmtData_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen - 2) <= v2gKeyInfoType_MgmtData_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen >= 2) { + v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gKeyInfoType->MgmtData.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 309; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 7: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 309; + break; + case 8: + grammarID = 310; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 309: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gKeyInfoType->KeyName.arrayLen < v2gKeyInfoType_KeyName_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen - 2) <= v2gKeyInfoType_KeyName_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen >= 2) { + v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen, v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gKeyInfoType->KeyName.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 309; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + if (v2gKeyInfoType->KeyValue.arrayLen < v2gKeyInfoType_KeyValue_ARRAY_SIZE) { + errn = decode_v2gKeyValueType(stream, &v2gKeyInfoType->KeyValue.array[v2gKeyInfoType->KeyValue.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 2: + if (v2gKeyInfoType->RetrievalMethod.arrayLen < v2gKeyInfoType_RetrievalMethod_ARRAY_SIZE) { + errn = decode_v2gRetrievalMethodType(stream, &v2gKeyInfoType->RetrievalMethod.array[v2gKeyInfoType->RetrievalMethod.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 3: + if (v2gKeyInfoType->X509Data.arrayLen < v2gKeyInfoType_X509Data_ARRAY_SIZE) { + errn = decode_v2gX509DataType(stream, &v2gKeyInfoType->X509Data.array[v2gKeyInfoType->X509Data.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 4: + if (v2gKeyInfoType->PGPData.arrayLen < v2gKeyInfoType_PGPData_ARRAY_SIZE) { + errn = decode_v2gPGPDataType(stream, &v2gKeyInfoType->PGPData.array[v2gKeyInfoType->PGPData.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 5: + if (v2gKeyInfoType->SPKIData.arrayLen < v2gKeyInfoType_SPKIData_ARRAY_SIZE) { + errn = decode_v2gSPKIDataType(stream, &v2gKeyInfoType->SPKIData.array[v2gKeyInfoType->SPKIData.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 6: + if (v2gKeyInfoType->MgmtData.arrayLen < v2gKeyInfoType_MgmtData_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen - 2) <= v2gKeyInfoType_MgmtData_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen >= 2) { + v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gKeyInfoType->MgmtData.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 309; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 7: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 309; + break; + case 8: + done = 1; + grammarID = 4; + break; + case 9: + grammarID = 309; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 310: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gKeyInfoType->KeyName.arrayLen < v2gKeyInfoType_KeyName_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen - 2) <= v2gKeyInfoType_KeyName_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen >= 2) { + v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].charactersLen, v2gKeyInfoType->KeyName.array[v2gKeyInfoType->KeyName.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gKeyInfoType->KeyName.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 309; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 1: + if (v2gKeyInfoType->KeyValue.arrayLen < v2gKeyInfoType_KeyValue_ARRAY_SIZE) { + errn = decode_v2gKeyValueType(stream, &v2gKeyInfoType->KeyValue.array[v2gKeyInfoType->KeyValue.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 2: + if (v2gKeyInfoType->RetrievalMethod.arrayLen < v2gKeyInfoType_RetrievalMethod_ARRAY_SIZE) { + errn = decode_v2gRetrievalMethodType(stream, &v2gKeyInfoType->RetrievalMethod.array[v2gKeyInfoType->RetrievalMethod.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 3: + if (v2gKeyInfoType->X509Data.arrayLen < v2gKeyInfoType_X509Data_ARRAY_SIZE) { + errn = decode_v2gX509DataType(stream, &v2gKeyInfoType->X509Data.array[v2gKeyInfoType->X509Data.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 4: + if (v2gKeyInfoType->PGPData.arrayLen < v2gKeyInfoType_PGPData_ARRAY_SIZE) { + errn = decode_v2gPGPDataType(stream, &v2gKeyInfoType->PGPData.array[v2gKeyInfoType->PGPData.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 5: + if (v2gKeyInfoType->SPKIData.arrayLen < v2gKeyInfoType_SPKIData_ARRAY_SIZE) { + errn = decode_v2gSPKIDataType(stream, &v2gKeyInfoType->SPKIData.array[v2gKeyInfoType->SPKIData.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 309; + break; + case 6: + if (v2gKeyInfoType->MgmtData.arrayLen < v2gKeyInfoType_MgmtData_ARRAY_SIZE) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen); + if (errn == 0) { + errn = (v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen - 2) <= v2gKeyInfoType_MgmtData_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen >= 2) { + v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].charactersLen, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType->MgmtData.arrayLen].characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gKeyInfoType->MgmtData.arrayLen++; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 309; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + case 7: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 309; + break; + case 8: + grammarID = 310; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SelectedServiceListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SelectedService{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int decode_v2gSelectedServiceListType(bitstream_t* stream, struct v2gSelectedServiceListType* v2gSelectedServiceListType) { + int grammarID = 311; + int done = 0; + + init_v2gSelectedServiceListType(v2gSelectedServiceListType); + + while(!done) { + switch(grammarID) { + case 311: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSelectedServiceListType->SelectedService.arrayLen < v2gSelectedServiceListType_SelectedService_ARRAY_SIZE) { + errn = decode_v2gSelectedServiceType(stream, &v2gSelectedServiceListType->SelectedService.array[v2gSelectedServiceListType->SelectedService.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 312; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 312: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + if (v2gSelectedServiceListType->SelectedService.arrayLen < v2gSelectedServiceListType_SelectedService_ARRAY_SIZE) { + errn = decode_v2gSelectedServiceType(stream, &v2gSelectedServiceListType->SelectedService.array[v2gSelectedServiceListType->SelectedService.arrayLen++]); + } else { + errn = EXI_ERROR_OUT_OF_BOUNDS; + } + grammarID = 312; + break; + case 1: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PowerDeliveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ChargeProgress,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":ChargingProfile{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVPowerDeliveryParameter{0-1})', derivedBy='EXTENSION'. */ +static int decode_v2gPowerDeliveryReqType(bitstream_t* stream, struct v2gPowerDeliveryReqType* v2gPowerDeliveryReqType) { + int grammarID = 313; + int done = 0; + + init_v2gPowerDeliveryReqType(v2gPowerDeliveryReqType); + + while(!done) { + switch(grammarID) { + case 313: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 2, &v2gPowerDeliveryReqType->ChargeProgress); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 314; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 314: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); + v2gPowerDeliveryReqType->SAScheduleTupleID = (uint8_t)(uint32 + 1); + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + if(errn == 0) { + /* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID) ? */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(eventCode == 0) { + grammarID = 315; + } else { + errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 315: + /* 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, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gChargingProfileType(stream, &v2gPowerDeliveryReqType->ChargingProfile); + v2gPowerDeliveryReqType->ChargingProfile_isUsed = 1u; + grammarID = 316; + break; + case 1: + errn = decode_v2gDC_EVPowerDeliveryParameterType(stream, &v2gPowerDeliveryReqType->DC_EVPowerDeliveryParameter); + v2gPowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 1u; + grammarID = 3; + break; + case 2: + errn = decode_v2gEVPowerDeliveryParameterType(stream, &v2gPowerDeliveryReqType->EVPowerDeliveryParameter); + v2gPowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 1u; + grammarID = 3; + break; + case 3: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 316: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decode_v2gDC_EVPowerDeliveryParameterType(stream, &v2gPowerDeliveryReqType->DC_EVPowerDeliveryParameter); + v2gPowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 1u; + grammarID = 3; + break; + case 1: + errn = decode_v2gEVPowerDeliveryParameterType(stream, &v2gPowerDeliveryReqType->EVPowerDeliveryParameter); + v2gPowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 1u; + grammarID = 3; + break; + case 2: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 3: + /* Element[END_ELEMENT] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + done = 1; + grammarID = 4; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ObjectType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##any])){0-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int decode_v2gObjectType(bitstream_t* stream, struct v2gObjectType* v2gObjectType) { + int grammarID = 317; + int done = 0; + + init_v2gObjectType(v2gObjectType); + + while(!done) { + switch(grammarID) { + case 317: + /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gObjectType->Encoding.charactersLen); + if (errn == 0) { + errn = (v2gObjectType->Encoding.charactersLen - 2) <= v2gObjectType_Encoding_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gObjectType->Encoding.charactersLen >= 2) { + v2gObjectType->Encoding.charactersLen = (uint16_t)(v2gObjectType->Encoding.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gObjectType->Encoding.charactersLen, v2gObjectType->Encoding.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gObjectType->Encoding_isUsed = 1u; + grammarID = 318; + break; + case 1: + errn = decodeUnsignedInteger16(stream, &v2gObjectType->Id.charactersLen); + if (errn == 0) { + errn = (v2gObjectType->Id.charactersLen - 2) <= v2gObjectType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gObjectType->Id.charactersLen >= 2) { + v2gObjectType->Id.charactersLen = (uint16_t)(v2gObjectType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gObjectType->Id.charactersLen, v2gObjectType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gObjectType->Id_isUsed = 1u; + grammarID = 319; + break; + case 2: + errn = decodeUnsignedInteger16(stream, &v2gObjectType->MimeType.charactersLen); + if (errn == 0) { + errn = (v2gObjectType->MimeType.charactersLen - 2) <= v2gObjectType_MimeType_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gObjectType->MimeType.charactersLen >= 2) { + v2gObjectType->MimeType.charactersLen = (uint16_t)(v2gObjectType->MimeType.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gObjectType->MimeType.charactersLen, v2gObjectType->MimeType.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gObjectType->MimeType_isUsed = 1u; + grammarID = 128; + break; + case 3: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 4: + done = 1; + grammarID = 4; + break; + case 5: + grammarID = 60; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 318: + /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gObjectType->Id.charactersLen); + if (errn == 0) { + errn = (v2gObjectType->Id.charactersLen - 2) <= v2gObjectType_Id_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gObjectType->Id.charactersLen >= 2) { + v2gObjectType->Id.charactersLen = (uint16_t)(v2gObjectType->Id.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gObjectType->Id.charactersLen, v2gObjectType->Id.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gObjectType->Id_isUsed = 1u; + grammarID = 319; + break; + case 1: + errn = decodeUnsignedInteger16(stream, &v2gObjectType->MimeType.charactersLen); + if (errn == 0) { + errn = (v2gObjectType->MimeType.charactersLen - 2) <= v2gObjectType_MimeType_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gObjectType->MimeType.charactersLen >= 2) { + v2gObjectType->MimeType.charactersLen = (uint16_t)(v2gObjectType->MimeType.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gObjectType->MimeType.charactersLen, v2gObjectType->MimeType.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gObjectType->MimeType_isUsed = 1u; + grammarID = 128; + break; + case 2: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 3: + done = 1; + grammarID = 4; + break; + case 4: + grammarID = 60; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 319: + /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 3, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = decodeUnsignedInteger16(stream, &v2gObjectType->MimeType.charactersLen); + if (errn == 0) { + errn = (v2gObjectType->MimeType.charactersLen - 2) <= v2gObjectType_MimeType_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (v2gObjectType->MimeType.charactersLen >= 2) { + v2gObjectType->MimeType.charactersLen = (uint16_t)(v2gObjectType->MimeType.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, v2gObjectType->MimeType.charactersLen, v2gObjectType->MimeType.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + v2gObjectType->MimeType_isUsed = 1u; + grammarID = 128; + break; + case 1: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 2: + done = 1; + grammarID = 4; + break; + case 3: + grammarID = 60; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 128: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 1: + done = 1; + grammarID = 4; + break; + case 2: + grammarID = 60; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + case 60: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); + if (errn == 0) { + switch(eventCode) { + case 0: + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + /* TODO unsupported event : START_ELEMENT_GENERIC */ + grammarID = 60; + break; + case 1: + done = 1; + grammarID = 4; + break; + case 2: + grammarID = 60; + break; + default: + errn = EXI_ERROR_UNKOWN_EVENT_CODE; + break; + } + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + + + + +int decode_v2gExiDocument(bitstream_t* stream, struct v2gEXIDocument* exiDoc) { + errn = readEXIHeader(stream); + + if(errn == 0) { + /* 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] */ + init_v2gEXIDocument(exiDoc); + errn = decodeNBitUnsignedInteger(stream, 7, &eventCode); + if(errn == 0) { + switch(eventCode) { + case 0: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter) */ + errn = decode_v2gAC_EVChargeParameterType(stream, &exiDoc->AC_EVChargeParameter); + exiDoc->AC_EVChargeParameter_isUsed = 1u; + break; + case 1: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter) */ + errn = decode_v2gAC_EVSEChargeParameterType(stream, &exiDoc->AC_EVSEChargeParameter); + exiDoc->AC_EVSEChargeParameter_isUsed = 1u; + break; + case 2: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus) */ + errn = decode_v2gAC_EVSEStatusType(stream, &exiDoc->AC_EVSEStatus); + exiDoc->AC_EVSEStatus_isUsed = 1u; + break; + case 3: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq) */ + errn = decode_v2gAuthorizationReqType(stream, &exiDoc->AuthorizationReq); + exiDoc->AuthorizationReq_isUsed = 1u; + break; + case 4: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes) */ + errn = decode_v2gAuthorizationResType(stream, &exiDoc->AuthorizationRes); + exiDoc->AuthorizationRes_isUsed = 1u; + break; + case 5: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement) */ + errn = decode_v2gBodyBaseType(stream, &exiDoc->BodyElement); + exiDoc->BodyElement_isUsed = 1u; + break; + case 6: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq) */ + errn = decode_v2gCableCheckReqType(stream, &exiDoc->CableCheckReq); + exiDoc->CableCheckReq_isUsed = 1u; + break; + case 7: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes) */ + errn = decode_v2gCableCheckResType(stream, &exiDoc->CableCheckRes); + exiDoc->CableCheckRes_isUsed = 1u; + break; + case 8: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod) */ + errn = decode_v2gCanonicalizationMethodType(stream, &exiDoc->CanonicalizationMethod); + exiDoc->CanonicalizationMethod_isUsed = 1u; + break; + case 9: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq) */ + errn = decode_v2gCertificateInstallationReqType(stream, &exiDoc->CertificateInstallationReq); + exiDoc->CertificateInstallationReq_isUsed = 1u; + break; + case 10: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes) */ + errn = decode_v2gCertificateInstallationResType(stream, &exiDoc->CertificateInstallationRes); + exiDoc->CertificateInstallationRes_isUsed = 1u; + break; + case 11: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq) */ + errn = decode_v2gCertificateUpdateReqType(stream, &exiDoc->CertificateUpdateReq); + exiDoc->CertificateUpdateReq_isUsed = 1u; + break; + case 12: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes) */ + errn = decode_v2gCertificateUpdateResType(stream, &exiDoc->CertificateUpdateRes); + exiDoc->CertificateUpdateRes_isUsed = 1u; + break; + case 13: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq) */ + errn = decode_v2gChargeParameterDiscoveryReqType(stream, &exiDoc->ChargeParameterDiscoveryReq); + exiDoc->ChargeParameterDiscoveryReq_isUsed = 1u; + break; + case 14: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes) */ + errn = decode_v2gChargeParameterDiscoveryResType(stream, &exiDoc->ChargeParameterDiscoveryRes); + exiDoc->ChargeParameterDiscoveryRes_isUsed = 1u; + break; + case 15: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq) */ + errn = decode_v2gChargingStatusReqType(stream, &exiDoc->ChargingStatusReq); + exiDoc->ChargingStatusReq_isUsed = 1u; + break; + case 16: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes) */ + errn = decode_v2gChargingStatusResType(stream, &exiDoc->ChargingStatusRes); + exiDoc->ChargingStatusRes_isUsed = 1u; + break; + case 17: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq) */ + errn = decode_v2gCurrentDemandReqType(stream, &exiDoc->CurrentDemandReq); + exiDoc->CurrentDemandReq_isUsed = 1u; + break; + case 18: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes) */ + errn = decode_v2gCurrentDemandResType(stream, &exiDoc->CurrentDemandRes); + exiDoc->CurrentDemandRes_isUsed = 1u; + break; + case 19: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter) */ + errn = decode_v2gDC_EVChargeParameterType(stream, &exiDoc->DC_EVChargeParameter); + exiDoc->DC_EVChargeParameter_isUsed = 1u; + break; + case 20: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter) */ + errn = decode_v2gDC_EVPowerDeliveryParameterType(stream, &exiDoc->DC_EVPowerDeliveryParameter); + exiDoc->DC_EVPowerDeliveryParameter_isUsed = 1u; + break; + case 21: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter) */ + errn = decode_v2gDC_EVSEChargeParameterType(stream, &exiDoc->DC_EVSEChargeParameter); + exiDoc->DC_EVSEChargeParameter_isUsed = 1u; + break; + case 22: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus) */ + errn = decode_v2gDC_EVSEStatusType(stream, &exiDoc->DC_EVSEStatus); + exiDoc->DC_EVSEStatus_isUsed = 1u; + break; + case 23: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus) */ + errn = decode_v2gDC_EVStatusType(stream, &exiDoc->DC_EVStatus); + exiDoc->DC_EVStatus_isUsed = 1u; + break; + case 24: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue) */ + errn = decode_v2gDSAKeyValueType(stream, &exiDoc->DSAKeyValue); + exiDoc->DSAKeyValue_isUsed = 1u; + break; + case 25: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod) */ + errn = decode_v2gDigestMethodType(stream, &exiDoc->DigestMethod); + exiDoc->DigestMethod_isUsed = 1u; + break; + case 26: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue) */ + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &exiDoc->DigestValue.bytesLen); + if (errn == 0) { + errn = (exiDoc->DigestValue.bytesLen) <= EXIDocument_DigestValue_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER; + } + if (errn == 0) { + errn = decodeBytes(stream, exiDoc->DigestValue.bytesLen, exiDoc->DigestValue.bytes); + } + exiDoc->DigestValue_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + break; + case 27: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter) */ + errn = decode_v2gEVChargeParameterType(stream, &exiDoc->EVChargeParameter); + exiDoc->EVChargeParameter_isUsed = 1u; + break; + case 28: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter) */ + errn = decode_v2gEVPowerDeliveryParameterType(stream, &exiDoc->EVPowerDeliveryParameter); + exiDoc->EVPowerDeliveryParameter_isUsed = 1u; + break; + case 29: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter) */ + errn = decode_v2gEVSEChargeParameterType(stream, &exiDoc->EVSEChargeParameter); + exiDoc->EVSEChargeParameter_isUsed = 1u; + break; + case 30: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus) */ + errn = decode_v2gEVSEStatusType(stream, &exiDoc->EVSEStatus); + exiDoc->EVSEStatus_isUsed = 1u; + break; + case 31: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus) */ + errn = decode_v2gEVStatusType(stream, &exiDoc->EVStatus); + exiDoc->EVStatus_isUsed = 1u; + break; + case 32: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry) */ + errn = decode_v2gEntryType(stream, &exiDoc->Entry); + exiDoc->Entry_isUsed = 1u; + break; + case 33: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo) */ + errn = decode_v2gKeyInfoType(stream, &exiDoc->KeyInfo); + exiDoc->KeyInfo_isUsed = 1u; + break; + case 34: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) */ + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &exiDoc->KeyName.charactersLen); + if (errn == 0) { + errn = (exiDoc->KeyName.charactersLen - 2) <= EXIDocument_KeyName_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (exiDoc->KeyName.charactersLen >= 2) { + exiDoc->KeyName.charactersLen = (uint16_t)(exiDoc->KeyName.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, exiDoc->KeyName.charactersLen, exiDoc->KeyName.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + exiDoc->KeyName_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + break; + case 35: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue) */ + errn = decode_v2gKeyValueType(stream, &exiDoc->KeyValue); + exiDoc->KeyValue_isUsed = 1u; + break; + case 36: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest) */ + errn = decode_v2gManifestType(stream, &exiDoc->Manifest); + exiDoc->Manifest_isUsed = 1u; + break; + case 37: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq) */ + errn = decode_v2gMeteringReceiptReqType(stream, &exiDoc->MeteringReceiptReq); + exiDoc->MeteringReceiptReq_isUsed = 1u; + break; + case 38: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes) */ + errn = decode_v2gMeteringReceiptResType(stream, &exiDoc->MeteringReceiptRes); + exiDoc->MeteringReceiptRes_isUsed = 1u; + break; + case 39: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) */ + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); + if(errn == 0) { + if(eventCode == 0) { + errn = decodeUnsignedInteger16(stream, &exiDoc->MgmtData.charactersLen); + if (errn == 0) { + errn = (exiDoc->MgmtData.charactersLen - 2) <= EXIDocument_MgmtData_CHARACTERS_SIZE ? 0 : EXI_ERROR_STRINGVALUES_OUT_OF_BOUND; + } + if (errn == 0) { + if (exiDoc->MgmtData.charactersLen >= 2) { + exiDoc->MgmtData.charactersLen = (uint16_t)(exiDoc->MgmtData.charactersLen - 2); /* string table miss */ + errn = decodeCharacters(stream, exiDoc->MgmtData.charactersLen, exiDoc->MgmtData.characters); + } else { + /* string table hit */ + errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; + } + } + exiDoc->MgmtData_isUsed = 1u; + } else { + /* Second level event (e.g., xsi:type, xsi:nil, ...) */ + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + } + } + break; + case 40: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object) */ + errn = decode_v2gObjectType(stream, &exiDoc->Object); + exiDoc->Object_isUsed = 1u; + break; + case 41: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData) */ + errn = decode_v2gPGPDataType(stream, &exiDoc->PGPData); + exiDoc->PGPData_isUsed = 1u; + break; + case 42: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry) */ + errn = decode_v2gPMaxScheduleEntryType(stream, &exiDoc->PMaxScheduleEntry); + exiDoc->PMaxScheduleEntry_isUsed = 1u; + break; + case 43: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq) */ + errn = decode_v2gPaymentDetailsReqType(stream, &exiDoc->PaymentDetailsReq); + exiDoc->PaymentDetailsReq_isUsed = 1u; + break; + case 44: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes) */ + errn = decode_v2gPaymentDetailsResType(stream, &exiDoc->PaymentDetailsRes); + exiDoc->PaymentDetailsRes_isUsed = 1u; + break; + case 45: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq) */ + errn = decode_v2gPaymentServiceSelectionReqType(stream, &exiDoc->PaymentServiceSelectionReq); + exiDoc->PaymentServiceSelectionReq_isUsed = 1u; + break; + case 46: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes) */ + errn = decode_v2gPaymentServiceSelectionResType(stream, &exiDoc->PaymentServiceSelectionRes); + exiDoc->PaymentServiceSelectionRes_isUsed = 1u; + break; + case 47: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq) */ + errn = decode_v2gPowerDeliveryReqType(stream, &exiDoc->PowerDeliveryReq); + exiDoc->PowerDeliveryReq_isUsed = 1u; + break; + case 48: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes) */ + errn = decode_v2gPowerDeliveryResType(stream, &exiDoc->PowerDeliveryRes); + exiDoc->PowerDeliveryRes_isUsed = 1u; + break; + case 49: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq) */ + errn = decode_v2gPreChargeReqType(stream, &exiDoc->PreChargeReq); + exiDoc->PreChargeReq_isUsed = 1u; + break; + case 50: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes) */ + errn = decode_v2gPreChargeResType(stream, &exiDoc->PreChargeRes); + exiDoc->PreChargeRes_isUsed = 1u; + break; + case 51: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue) */ + errn = decode_v2gRSAKeyValueType(stream, &exiDoc->RSAKeyValue); + exiDoc->RSAKeyValue_isUsed = 1u; + break; + case 52: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference) */ + errn = decode_v2gReferenceType(stream, &exiDoc->Reference); + exiDoc->Reference_isUsed = 1u; + break; + case 53: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval) */ + errn = decode_v2gRelativeTimeIntervalType(stream, &exiDoc->RelativeTimeInterval); + exiDoc->RelativeTimeInterval_isUsed = 1u; + break; + case 54: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod) */ + errn = decode_v2gRetrievalMethodType(stream, &exiDoc->RetrievalMethod); + exiDoc->RetrievalMethod_isUsed = 1u; + break; + case 55: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList) */ + errn = decode_v2gSAScheduleListType(stream, &exiDoc->SAScheduleList); + exiDoc->SAScheduleList_isUsed = 1u; + break; + case 56: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules) */ + errn = decode_v2gSASchedulesType(stream, &exiDoc->SASchedules); + exiDoc->SASchedules_isUsed = 1u; + break; + case 57: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData) */ + errn = decode_v2gSPKIDataType(stream, &exiDoc->SPKIData); + exiDoc->SPKIData_isUsed = 1u; + break; + case 58: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry) */ + errn = decode_v2gSalesTariffEntryType(stream, &exiDoc->SalesTariffEntry); + exiDoc->SalesTariffEntry_isUsed = 1u; + break; + case 59: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq) */ + errn = decode_v2gServiceDetailReqType(stream, &exiDoc->ServiceDetailReq); + exiDoc->ServiceDetailReq_isUsed = 1u; + break; + case 60: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes) */ + errn = decode_v2gServiceDetailResType(stream, &exiDoc->ServiceDetailRes); + exiDoc->ServiceDetailRes_isUsed = 1u; + break; + case 61: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq) */ + errn = decode_v2gServiceDiscoveryReqType(stream, &exiDoc->ServiceDiscoveryReq); + exiDoc->ServiceDiscoveryReq_isUsed = 1u; + break; + case 62: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes) */ + errn = decode_v2gServiceDiscoveryResType(stream, &exiDoc->ServiceDiscoveryRes); + exiDoc->ServiceDiscoveryRes_isUsed = 1u; + break; + case 63: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq) */ + errn = decode_v2gSessionSetupReqType(stream, &exiDoc->SessionSetupReq); + exiDoc->SessionSetupReq_isUsed = 1u; + break; + case 64: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes) */ + errn = decode_v2gSessionSetupResType(stream, &exiDoc->SessionSetupRes); + exiDoc->SessionSetupRes_isUsed = 1u; + break; + case 65: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq) */ + errn = decode_v2gSessionStopReqType(stream, &exiDoc->SessionStopReq); + exiDoc->SessionStopReq_isUsed = 1u; + break; + case 66: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes) */ + errn = decode_v2gSessionStopResType(stream, &exiDoc->SessionStopRes); + exiDoc->SessionStopRes_isUsed = 1u; + break; + case 67: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature) */ + errn = decode_v2gSignatureType(stream, &exiDoc->Signature); + exiDoc->Signature_isUsed = 1u; + break; + case 68: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod) */ + errn = decode_v2gSignatureMethodType(stream, &exiDoc->SignatureMethod); + exiDoc->SignatureMethod_isUsed = 1u; + break; + case 69: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties) */ + errn = decode_v2gSignaturePropertiesType(stream, &exiDoc->SignatureProperties); + exiDoc->SignatureProperties_isUsed = 1u; + break; + case 70: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty) */ + errn = decode_v2gSignaturePropertyType(stream, &exiDoc->SignatureProperty); + exiDoc->SignatureProperty_isUsed = 1u; + break; + case 71: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue) */ + errn = decode_v2gSignatureValueType(stream, &exiDoc->SignatureValue); + exiDoc->SignatureValue_isUsed = 1u; + break; + case 72: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo) */ + errn = decode_v2gSignedInfoType(stream, &exiDoc->SignedInfo); + exiDoc->SignedInfo_isUsed = 1u; + break; + case 73: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval) */ + errn = decode_v2gIntervalType(stream, &exiDoc->TimeInterval); + exiDoc->TimeInterval_isUsed = 1u; + break; + case 74: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform) */ + errn = decode_v2gTransformType(stream, &exiDoc->Transform); + exiDoc->Transform_isUsed = 1u; + break; + case 75: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms) */ + errn = decode_v2gTransformsType(stream, &exiDoc->Transforms); + exiDoc->Transforms_isUsed = 1u; + break; + case 76: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message) */ + errn = decode_v2gAnonType_V2G_Message(stream, &exiDoc->V2G_Message); + exiDoc->V2G_Message_isUsed = 1u; + break; + case 77: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq) */ + errn = decode_v2gWeldingDetectionReqType(stream, &exiDoc->WeldingDetectionReq); + exiDoc->WeldingDetectionReq_isUsed = 1u; + break; + case 78: + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes) */ + errn = decode_v2gWeldingDetectionResType(stream, &exiDoc->WeldingDetectionRes); + exiDoc->WeldingDetectionRes_isUsed = 1u; + break; + case 79: + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data) */ + errn = decode_v2gX509DataType(stream, &exiDoc->X509Data); + exiDoc->X509Data_isUsed = 1u; + break; + default: + errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; + break; + } + } + + } + + return errn; +} + + +#endif + diff --git a/src/codec/CoderChannel.h b/src/codec/v2gEXIDatatypesDecoder.h similarity index 69% rename from src/codec/CoderChannel.h rename to src/codec/v2gEXIDatatypesDecoder.h index d24a197..f7c847d 100644 --- a/src/codec/CoderChannel.h +++ b/src/codec/v2gEXIDatatypesDecoder.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2012 Siemens AG + * 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 @@ -10,7 +10,6 @@ * 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 . @@ -19,33 +18,40 @@ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com - * @version 0.7 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * - *

Code generated by EXIdizer.com

+ *

Code generated by EXIdizer

+ *

Schema: V2G_CI_MsgDef.xsd

+ * + * ********************************************************************/ - - -#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 - + + +/** + * \file EXIDatatypesDecoder.h + * \brief Decoder for datatype definitions + * + */ + +#ifndef EXI_v2g_DATATYPES_DECODER_H +#define EXI_v2g_DATATYPES_DECODER_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#include + +#include "EXITypes.h" +#include "v2gEXIDatatypes.h" + +int decode_v2gExiDocument(bitstream_t* stream, struct v2gEXIDocument* exiDoc); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/codec/v2gEXIDatatypesEncoder.c b/src/codec/v2gEXIDatatypesEncoder.c new file mode 100644 index 0000000..63fbb13 --- /dev/null +++ b/src/codec/v2gEXIDatatypesEncoder.c @@ -0,0 +1,11183 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.9 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer

+ *

Schema: V2G_CI_MsgDef.xsd

+ * + * + ********************************************************************/ + + + + +#include "v2gEXIDatatypesEncoder.h" + +#include "EncoderChannel.h" +#include "EXIHeaderEncoder.h" + +#include "v2gEXIDatatypes.h" +#include "ErrorCodes.h" + +#ifndef EXI_v2g_DATATYPES_ENCODER_C +#define EXI_v2g_DATATYPES_ENCODER_C + +static int errn; + +/* Forward Declarations */ +static int encode_v2gServiceDetailResType(bitstream_t* stream, struct v2gServiceDetailResType* v2gServiceDetailResType); +static int encode_v2gSPKIDataType(bitstream_t* stream, struct v2gSPKIDataType* v2gSPKIDataType); +static int encode_v2gAuthorizationResType(bitstream_t* stream, struct v2gAuthorizationResType* v2gAuthorizationResType); +static int encode_v2gBodyType(bitstream_t* stream, struct v2gBodyType* v2gBodyType); +static int encode_v2gPaymentServiceSelectionReqType(bitstream_t* stream, struct v2gPaymentServiceSelectionReqType* v2gPaymentServiceSelectionReqType); +static int encode_v2gEVSEStatusType(bitstream_t* stream, struct v2gEVSEStatusType* v2gEVSEStatusType); +static int encode_v2gSelectedServiceType(bitstream_t* stream, struct v2gSelectedServiceType* v2gSelectedServiceType); +static int encode_v2gEntryType(bitstream_t* stream, struct v2gEntryType* v2gEntryType); +static int encode_v2gDC_EVSEChargeParameterType(bitstream_t* stream, struct v2gDC_EVSEChargeParameterType* v2gDC_EVSEChargeParameterType); +static int encode_v2gSalesTariffType(bitstream_t* stream, struct v2gSalesTariffType* v2gSalesTariffType); +static int encode_v2gPMaxScheduleType(bitstream_t* stream, struct v2gPMaxScheduleType* v2gPMaxScheduleType); +static int encode_v2gCostType(bitstream_t* stream, struct v2gCostType* v2gCostType); +static int encode_v2gChargeServiceType(bitstream_t* stream, struct v2gChargeServiceType* v2gChargeServiceType); +static int encode_v2gPMaxScheduleEntryType(bitstream_t* stream, struct v2gPMaxScheduleEntryType* v2gPMaxScheduleEntryType); +static int encode_v2gServiceListType(bitstream_t* stream, struct v2gServiceListType* v2gServiceListType); +static int encode_v2gKeyValueType(bitstream_t* stream, struct v2gKeyValueType* v2gKeyValueType); +static int encode_v2gPaymentServiceSelectionResType(bitstream_t* stream, struct v2gPaymentServiceSelectionResType* v2gPaymentServiceSelectionResType); +static int encode_v2gSignatureMethodType(bitstream_t* stream, struct v2gSignatureMethodType* v2gSignatureMethodType); +static int encode_v2gMeteringReceiptResType(bitstream_t* stream, struct v2gMeteringReceiptResType* v2gMeteringReceiptResType); +static int encode_v2gMessageHeaderType(bitstream_t* stream, struct v2gMessageHeaderType* v2gMessageHeaderType); +static int encode_v2gRetrievalMethodType(bitstream_t* stream, struct v2gRetrievalMethodType* v2gRetrievalMethodType); +static int encode_v2gEVChargeParameterType(bitstream_t* stream, struct v2gEVChargeParameterType* v2gEVChargeParameterType); +static int encode_v2gCertificateInstallationReqType(bitstream_t* stream, struct v2gCertificateInstallationReqType* v2gCertificateInstallationReqType); +static int encode_v2gChargeParameterDiscoveryResType(bitstream_t* stream, struct v2gChargeParameterDiscoveryResType* v2gChargeParameterDiscoveryResType); +static int encode_v2gWeldingDetectionReqType(bitstream_t* stream, struct v2gWeldingDetectionReqType* v2gWeldingDetectionReqType); +static int encode_v2gCableCheckReqType(bitstream_t* stream, struct v2gCableCheckReqType* v2gCableCheckReqType); +static int encode_v2gParameterType(bitstream_t* stream, struct v2gParameterType* v2gParameterType); +static int encode_v2gEVSEChargeParameterType(bitstream_t* stream, struct v2gEVSEChargeParameterType* v2gEVSEChargeParameterType); +static int encode_v2gManifestType(bitstream_t* stream, struct v2gManifestType* v2gManifestType); +static int encode_v2gDC_EVStatusType(bitstream_t* stream, struct v2gDC_EVStatusType* v2gDC_EVStatusType); +static int encode_v2gPaymentDetailsReqType(bitstream_t* stream, struct v2gPaymentDetailsReqType* v2gPaymentDetailsReqType); +static int encode_v2gSAScheduleListType(bitstream_t* stream, struct v2gSAScheduleListType* v2gSAScheduleListType); +static int encode_v2gRSAKeyValueType(bitstream_t* stream, struct v2gRSAKeyValueType* v2gRSAKeyValueType); +static int encode_v2gAC_EVSEChargeParameterType(bitstream_t* stream, struct v2gAC_EVSEChargeParameterType* v2gAC_EVSEChargeParameterType); +static int encode_v2gTransformsType(bitstream_t* stream, struct v2gTransformsType* v2gTransformsType); +static int encode_v2gWeldingDetectionResType(bitstream_t* stream, struct v2gWeldingDetectionResType* v2gWeldingDetectionResType); +static int encode_v2gConsumptionCostType(bitstream_t* stream, struct v2gConsumptionCostType* v2gConsumptionCostType); +static int encode_v2gChargingStatusResType(bitstream_t* stream, struct v2gChargingStatusResType* v2gChargingStatusResType); +static int encode_v2gEVStatusType(bitstream_t* stream, struct v2gEVStatusType* v2gEVStatusType); +static int encode_v2gPGPDataType(bitstream_t* stream, struct v2gPGPDataType* v2gPGPDataType); +static int encode_v2gSessionStopResType(bitstream_t* stream, struct v2gSessionStopResType* v2gSessionStopResType); +static int encode_v2gServiceDiscoveryReqType(bitstream_t* stream, struct v2gServiceDiscoveryReqType* v2gServiceDiscoveryReqType); +static int encode_v2gAuthorizationReqType(bitstream_t* stream, struct v2gAuthorizationReqType* v2gAuthorizationReqType); +static int encode_v2gSAScheduleTupleType(bitstream_t* stream, struct v2gSAScheduleTupleType* v2gSAScheduleTupleType); +static int encode_v2gPhysicalValueType(bitstream_t* stream, struct v2gPhysicalValueType* v2gPhysicalValueType); +static int encode_v2gDigestMethodType(bitstream_t* stream, struct v2gDigestMethodType* v2gDigestMethodType); +static int encode_v2gAC_EVSEStatusType(bitstream_t* stream, struct v2gAC_EVSEStatusType* v2gAC_EVSEStatusType); +static int encode_v2gSessionSetupResType(bitstream_t* stream, struct v2gSessionSetupResType* v2gSessionSetupResType); +static int encode_v2gX509IssuerSerialType(bitstream_t* stream, struct v2gX509IssuerSerialType* v2gX509IssuerSerialType); +static int encode_v2gSessionStopReqType(bitstream_t* stream, struct v2gSessionStopReqType* v2gSessionStopReqType); +static int encode_v2gDC_EVSEStatusType(bitstream_t* stream, struct v2gDC_EVSEStatusType* v2gDC_EVSEStatusType); +static int encode_v2gDiffieHellmanPublickeyType(bitstream_t* stream, struct v2gDiffieHellmanPublickeyType* v2gDiffieHellmanPublickeyType); +static int encode_v2gCertificateUpdateReqType(bitstream_t* stream, struct v2gCertificateUpdateReqType* v2gCertificateUpdateReqType); +static int encode_v2gBodyBaseType(bitstream_t* stream, struct v2gBodyBaseType* v2gBodyBaseType); +static int encode_v2gDC_EVChargeParameterType(bitstream_t* stream, struct v2gDC_EVChargeParameterType* v2gDC_EVChargeParameterType); +static int encode_v2gSubCertificatesType(bitstream_t* stream, struct v2gSubCertificatesType* v2gSubCertificatesType); +static int encode_v2gSupportedEnergyTransferModeType(bitstream_t* stream, struct v2gSupportedEnergyTransferModeType* v2gSupportedEnergyTransferModeType); +static int encode_v2gChargingStatusReqType(bitstream_t* stream, struct v2gChargingStatusReqType* v2gChargingStatusReqType); +static int encode_v2gSignaturePropertyType(bitstream_t* stream, struct v2gSignaturePropertyType* v2gSignaturePropertyType); +static int encode_v2gContractSignatureEncryptedPrivateKeyType(bitstream_t* stream, struct v2gContractSignatureEncryptedPrivateKeyType* v2gContractSignatureEncryptedPrivateKeyType); +static int encode_v2gReferenceType(bitstream_t* stream, struct v2gReferenceType* v2gReferenceType); +static int encode_v2gCurrentDemandResType(bitstream_t* stream, struct v2gCurrentDemandResType* v2gCurrentDemandResType); +static int encode_v2gCanonicalizationMethodType(bitstream_t* stream, struct v2gCanonicalizationMethodType* v2gCanonicalizationMethodType); +static int encode_v2gTransformType(bitstream_t* stream, struct v2gTransformType* v2gTransformType); +static int encode_v2gCertificateChainType(bitstream_t* stream, struct v2gCertificateChainType* v2gCertificateChainType); +static int encode_v2gSignatureValueType(bitstream_t* stream, struct v2gSignatureValueType* v2gSignatureValueType); +static int encode_v2gEVPowerDeliveryParameterType(bitstream_t* stream, struct v2gEVPowerDeliveryParameterType* v2gEVPowerDeliveryParameterType); +static int encode_v2gServiceDetailReqType(bitstream_t* stream, struct v2gServiceDetailReqType* v2gServiceDetailReqType); +static int encode_v2gPaymentDetailsResType(bitstream_t* stream, struct v2gPaymentDetailsResType* v2gPaymentDetailsResType); +static int encode_v2gX509DataType(bitstream_t* stream, struct v2gX509DataType* v2gX509DataType); +static int encode_v2gDSAKeyValueType(bitstream_t* stream, struct v2gDSAKeyValueType* v2gDSAKeyValueType); +static int encode_v2gPowerDeliveryResType(bitstream_t* stream, struct v2gPowerDeliveryResType* v2gPowerDeliveryResType); +static int encode_v2gChargeParameterDiscoveryReqType(bitstream_t* stream, struct v2gChargeParameterDiscoveryReqType* v2gChargeParameterDiscoveryReqType); +static int encode_v2gParameterSetType(bitstream_t* stream, struct v2gParameterSetType* v2gParameterSetType); +static int encode_v2gServiceDiscoveryResType(bitstream_t* stream, struct v2gServiceDiscoveryResType* v2gServiceDiscoveryResType); +static int encode_v2gAnonType_V2G_Message(bitstream_t* stream, struct v2gAnonType_V2G_Message* v2gAnonType_V2G_Message); +static int encode_v2gSignatureType(bitstream_t* stream, struct v2gSignatureType* v2gSignatureType); +static int encode_v2gEMAIDType(bitstream_t* stream, struct v2gEMAIDType* v2gEMAIDType); +static int encode_v2gCertificateInstallationResType(bitstream_t* stream, struct v2gCertificateInstallationResType* v2gCertificateInstallationResType); +static int encode_v2gCableCheckResType(bitstream_t* stream, struct v2gCableCheckResType* v2gCableCheckResType); +static int encode_v2gMeterInfoType(bitstream_t* stream, struct v2gMeterInfoType* v2gMeterInfoType); +static int encode_v2gAC_EVChargeParameterType(bitstream_t* stream, struct v2gAC_EVChargeParameterType* v2gAC_EVChargeParameterType); +static int encode_v2gServiceParameterListType(bitstream_t* stream, struct v2gServiceParameterListType* v2gServiceParameterListType); +static int encode_v2gCurrentDemandReqType(bitstream_t* stream, struct v2gCurrentDemandReqType* v2gCurrentDemandReqType); +static int encode_v2gSASchedulesType(bitstream_t* stream, struct v2gSASchedulesType* v2gSASchedulesType); +static int encode_v2gIntervalType(bitstream_t* stream, struct v2gIntervalType* v2gIntervalType); +static int encode_v2gPreChargeResType(bitstream_t* stream, struct v2gPreChargeResType* v2gPreChargeResType); +static int encode_v2gSalesTariffEntryType(bitstream_t* stream, struct v2gSalesTariffEntryType* v2gSalesTariffEntryType); +static int encode_v2gPaymentOptionListType(bitstream_t* stream, struct v2gPaymentOptionListType* v2gPaymentOptionListType); +static int encode_v2gSignedInfoType(bitstream_t* stream, struct v2gSignedInfoType* v2gSignedInfoType); +static int encode_v2gSessionSetupReqType(bitstream_t* stream, struct v2gSessionSetupReqType* v2gSessionSetupReqType); +static int encode_v2gSignaturePropertiesType(bitstream_t* stream, struct v2gSignaturePropertiesType* v2gSignaturePropertiesType); +static int encode_v2gProfileEntryType(bitstream_t* stream, struct v2gProfileEntryType* v2gProfileEntryType); +static int encode_v2gPreChargeReqType(bitstream_t* stream, struct v2gPreChargeReqType* v2gPreChargeReqType); +static int encode_v2gListOfRootCertificateIDsType(bitstream_t* stream, struct v2gListOfRootCertificateIDsType* v2gListOfRootCertificateIDsType); +static int encode_v2gDC_EVPowerDeliveryParameterType(bitstream_t* stream, struct v2gDC_EVPowerDeliveryParameterType* v2gDC_EVPowerDeliveryParameterType); +static int encode_v2gRelativeTimeIntervalType(bitstream_t* stream, struct v2gRelativeTimeIntervalType* v2gRelativeTimeIntervalType); +static int encode_v2gChargingProfileType(bitstream_t* stream, struct v2gChargingProfileType* v2gChargingProfileType); +static int encode_v2gCertificateUpdateResType(bitstream_t* stream, struct v2gCertificateUpdateResType* v2gCertificateUpdateResType); +static int encode_v2gMeteringReceiptReqType(bitstream_t* stream, struct v2gMeteringReceiptReqType* v2gMeteringReceiptReqType); +static int encode_v2gServiceType(bitstream_t* stream, struct v2gServiceType* v2gServiceType); +static int encode_v2gNotificationType(bitstream_t* stream, struct v2gNotificationType* v2gNotificationType); +static int encode_v2gKeyInfoType(bitstream_t* stream, struct v2gKeyInfoType* v2gKeyInfoType); +static int encode_v2gSelectedServiceListType(bitstream_t* stream, struct v2gSelectedServiceListType* v2gSelectedServiceListType); +static int encode_v2gPowerDeliveryReqType(bitstream_t* stream, struct v2gPowerDeliveryReqType* v2gPowerDeliveryReqType); +static int encode_v2gObjectType(bitstream_t* stream, struct v2gObjectType* v2gObjectType); + + + /* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDetailResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":ServiceID,"urn:iso:15118:2:2013:MsgBody":ServiceParameterList{0-1})', derivedBy='EXTENSION'. */ +static int encode_v2gServiceDetailResType(bitstream_t* stream, struct v2gServiceDetailResType* v2gServiceDetailResType) { + int grammarID = 0; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 0: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gServiceDetailResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 1; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 1: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, v2gServiceDetailResType->ServiceID); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 2; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 2: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceParameterList), END_ELEMENT] */ + if ( v2gServiceDetailResType->ServiceParameterList_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gServiceParameterListType(stream, &v2gServiceDetailResType->ServiceParameterList ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SPKIDataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SPKISexp,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-1}){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int encode_v2gSPKIDataType(bitstream_t* stream, struct v2gSPKIDataType* v2gSPKIDataType) { + int grammarID = 5; + int done = 0; + + unsigned int v2gSPKIDataType_SPKISexp_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 5: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */ + if (v2gSPKIDataType_SPKISexp_currArrayIndex < v2gSPKIDataType->SPKISexp.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType_SPKISexp_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType_SPKISexp_currArrayIndex].bytes, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType_SPKISexp_currArrayIndex].bytesLen); + v2gSPKIDataType_SPKISexp_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 6; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 6: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] */ + if (v2gSPKIDataType_SPKISexp_currArrayIndex < v2gSPKIDataType->SPKISexp.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType_SPKISexp_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType_SPKISexp_currArrayIndex].bytes, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType_SPKISexp_currArrayIndex].bytesLen); + v2gSPKIDataType_SPKISexp_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 6; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 7; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 7: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */ + if (v2gSPKIDataType_SPKISexp_currArrayIndex < v2gSPKIDataType->SPKISexp.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType_SPKISexp_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType_SPKISexp_currArrayIndex].bytes, v2gSPKIDataType->SPKISexp.array[v2gSPKIDataType_SPKISexp_currArrayIndex].bytesLen); + v2gSPKIDataType_SPKISexp_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 6; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,AuthorizationResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing)', derivedBy='EXTENSION'. */ +static int encode_v2gAuthorizationResType(bitstream_t* stream, struct v2gAuthorizationResType* v2gAuthorizationResType) { + int grammarID = 8; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 8: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gAuthorizationResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 9; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 9: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gAuthorizationResType->EVSEProcessing); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,BodyType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":BodyElement{0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gBodyType(bitstream_t* stream, struct v2gBodyType* v2gBodyType) { + int grammarID = 10; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 10: + /* 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] */ + if ( v2gBodyType->AuthorizationReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 0); + if(errn == 0) { + errn = encode_v2gAuthorizationReqType(stream, &v2gBodyType->AuthorizationReq ); + } + grammarID = 3; + } else if ( v2gBodyType->AuthorizationRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 1); + if(errn == 0) { + errn = encode_v2gAuthorizationResType(stream, &v2gBodyType->AuthorizationRes ); + } + grammarID = 3; + } else if ( v2gBodyType->BodyElement_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 2); + if(errn == 0) { + errn = encode_v2gBodyBaseType(stream, &v2gBodyType->BodyElement ); + } + grammarID = 3; + } else if ( v2gBodyType->CableCheckReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 3); + if(errn == 0) { + errn = encode_v2gCableCheckReqType(stream, &v2gBodyType->CableCheckReq ); + } + grammarID = 3; + } else if ( v2gBodyType->CableCheckRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 4); + if(errn == 0) { + errn = encode_v2gCableCheckResType(stream, &v2gBodyType->CableCheckRes ); + } + grammarID = 3; + } else if ( v2gBodyType->CertificateInstallationReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 5); + if(errn == 0) { + errn = encode_v2gCertificateInstallationReqType(stream, &v2gBodyType->CertificateInstallationReq ); + } + grammarID = 3; + } else if ( v2gBodyType->CertificateInstallationRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 6); + if(errn == 0) { + errn = encode_v2gCertificateInstallationResType(stream, &v2gBodyType->CertificateInstallationRes ); + } + grammarID = 3; + } else if ( v2gBodyType->CertificateUpdateReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 7); + if(errn == 0) { + errn = encode_v2gCertificateUpdateReqType(stream, &v2gBodyType->CertificateUpdateReq ); + } + grammarID = 3; + } else if ( v2gBodyType->CertificateUpdateRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 8); + if(errn == 0) { + errn = encode_v2gCertificateUpdateResType(stream, &v2gBodyType->CertificateUpdateRes ); + } + grammarID = 3; + } else if ( v2gBodyType->ChargeParameterDiscoveryReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 9); + if(errn == 0) { + errn = encode_v2gChargeParameterDiscoveryReqType(stream, &v2gBodyType->ChargeParameterDiscoveryReq ); + } + grammarID = 3; + } else if ( v2gBodyType->ChargeParameterDiscoveryRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 10); + if(errn == 0) { + errn = encode_v2gChargeParameterDiscoveryResType(stream, &v2gBodyType->ChargeParameterDiscoveryRes ); + } + grammarID = 3; + } else if ( v2gBodyType->ChargingStatusReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 11); + if(errn == 0) { + errn = encode_v2gChargingStatusReqType(stream, &v2gBodyType->ChargingStatusReq ); + } + grammarID = 3; + } else if ( v2gBodyType->ChargingStatusRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 12); + if(errn == 0) { + errn = encode_v2gChargingStatusResType(stream, &v2gBodyType->ChargingStatusRes ); + } + grammarID = 3; + } else if ( v2gBodyType->CurrentDemandReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 13); + if(errn == 0) { + errn = encode_v2gCurrentDemandReqType(stream, &v2gBodyType->CurrentDemandReq ); + } + grammarID = 3; + } else if ( v2gBodyType->CurrentDemandRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 14); + if(errn == 0) { + errn = encode_v2gCurrentDemandResType(stream, &v2gBodyType->CurrentDemandRes ); + } + grammarID = 3; + } else if ( v2gBodyType->MeteringReceiptReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 15); + if(errn == 0) { + errn = encode_v2gMeteringReceiptReqType(stream, &v2gBodyType->MeteringReceiptReq ); + } + grammarID = 3; + } else if ( v2gBodyType->MeteringReceiptRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 16); + if(errn == 0) { + errn = encode_v2gMeteringReceiptResType(stream, &v2gBodyType->MeteringReceiptRes ); + } + grammarID = 3; + } else if ( v2gBodyType->PaymentDetailsReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 17); + if(errn == 0) { + errn = encode_v2gPaymentDetailsReqType(stream, &v2gBodyType->PaymentDetailsReq ); + } + grammarID = 3; + } else if ( v2gBodyType->PaymentDetailsRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 18); + if(errn == 0) { + errn = encode_v2gPaymentDetailsResType(stream, &v2gBodyType->PaymentDetailsRes ); + } + grammarID = 3; + } else if ( v2gBodyType->PaymentServiceSelectionReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 19); + if(errn == 0) { + errn = encode_v2gPaymentServiceSelectionReqType(stream, &v2gBodyType->PaymentServiceSelectionReq ); + } + grammarID = 3; + } else if ( v2gBodyType->PaymentServiceSelectionRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 20); + if(errn == 0) { + errn = encode_v2gPaymentServiceSelectionResType(stream, &v2gBodyType->PaymentServiceSelectionRes ); + } + grammarID = 3; + } else if ( v2gBodyType->PowerDeliveryReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 21); + if(errn == 0) { + errn = encode_v2gPowerDeliveryReqType(stream, &v2gBodyType->PowerDeliveryReq ); + } + grammarID = 3; + } else if ( v2gBodyType->PowerDeliveryRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 22); + if(errn == 0) { + errn = encode_v2gPowerDeliveryResType(stream, &v2gBodyType->PowerDeliveryRes ); + } + grammarID = 3; + } else if ( v2gBodyType->PreChargeReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 23); + if(errn == 0) { + errn = encode_v2gPreChargeReqType(stream, &v2gBodyType->PreChargeReq ); + } + grammarID = 3; + } else if ( v2gBodyType->PreChargeRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 24); + if(errn == 0) { + errn = encode_v2gPreChargeResType(stream, &v2gBodyType->PreChargeRes ); + } + grammarID = 3; + } else if ( v2gBodyType->ServiceDetailReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 25); + if(errn == 0) { + errn = encode_v2gServiceDetailReqType(stream, &v2gBodyType->ServiceDetailReq ); + } + grammarID = 3; + } else if ( v2gBodyType->ServiceDetailRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 26); + if(errn == 0) { + errn = encode_v2gServiceDetailResType(stream, &v2gBodyType->ServiceDetailRes ); + } + grammarID = 3; + } else if ( v2gBodyType->ServiceDiscoveryReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 27); + if(errn == 0) { + errn = encode_v2gServiceDiscoveryReqType(stream, &v2gBodyType->ServiceDiscoveryReq ); + } + grammarID = 3; + } else if ( v2gBodyType->ServiceDiscoveryRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 28); + if(errn == 0) { + errn = encode_v2gServiceDiscoveryResType(stream, &v2gBodyType->ServiceDiscoveryRes ); + } + grammarID = 3; + } else if ( v2gBodyType->SessionSetupReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 29); + if(errn == 0) { + errn = encode_v2gSessionSetupReqType(stream, &v2gBodyType->SessionSetupReq ); + } + grammarID = 3; + } else if ( v2gBodyType->SessionSetupRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 30); + if(errn == 0) { + errn = encode_v2gSessionSetupResType(stream, &v2gBodyType->SessionSetupRes ); + } + grammarID = 3; + } else if ( v2gBodyType->SessionStopReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 31); + if(errn == 0) { + errn = encode_v2gSessionStopReqType(stream, &v2gBodyType->SessionStopReq ); + } + grammarID = 3; + } else if ( v2gBodyType->SessionStopRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 32); + if(errn == 0) { + errn = encode_v2gSessionStopResType(stream, &v2gBodyType->SessionStopRes ); + } + grammarID = 3; + } else if ( v2gBodyType->WeldingDetectionReq_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 33); + if(errn == 0) { + errn = encode_v2gWeldingDetectionReqType(stream, &v2gBodyType->WeldingDetectionReq ); + } + grammarID = 3; + } else if ( v2gBodyType->WeldingDetectionRes_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 6, 34); + if(errn == 0) { + errn = encode_v2gWeldingDetectionResType(stream, &v2gBodyType->WeldingDetectionRes ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 6, 35); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentServiceSelectionReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":SelectedPaymentOption,"urn:iso:15118:2:2013:MsgBody":SelectedServiceList)', derivedBy='EXTENSION'. */ +static int encode_v2gPaymentServiceSelectionReqType(bitstream_t* stream, struct v2gPaymentServiceSelectionReqType* v2gPaymentServiceSelectionReqType) { + int grammarID = 11; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 11: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, v2gPaymentServiceSelectionReqType->SelectedPaymentOption); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 12; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 12: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SelectedServiceList)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gSelectedServiceListType(stream, &v2gPaymentServiceSelectionReqType->SelectedServiceList ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVSEStatusType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification)', derivedBy='RESTRICTION'. */ +static int encode_v2gEVSEStatusType(bitstream_t* stream, struct v2gEVSEStatusType* v2gEVSEStatusType) { + int grammarID = 13; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 13: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, v2gEVSEStatusType->NotificationMaxDelay); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 14; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 14: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gEVSEStatusType->EVSENotification); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SelectedServiceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID{0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gSelectedServiceType(bitstream_t* stream, struct v2gSelectedServiceType* v2gSelectedServiceType) { + int grammarID = 15; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 15: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, v2gSelectedServiceType->ServiceID); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 16; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 16: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID), END_ELEMENT] */ + if ( v2gSelectedServiceType->ParameterSetID_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger16(stream, v2gSelectedServiceType->ParameterSetID); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EntryType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval)', derivedBy='RESTRICTION'. */ +static int encode_v2gEntryType(bitstream_t* stream, struct v2gEntryType* v2gEntryType) { + int grammarID = 17; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 17: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + if ( v2gEntryType->RelativeTimeInterval_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gRelativeTimeIntervalType(stream, &v2gEntryType->RelativeTimeInterval ); + } + grammarID = 3; + } else if ( v2gEntryType->TimeInterval_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gIntervalType(stream, &v2gEntryType->TimeInterval ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEChargeParameterType', base type name='EVSEChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumPowerLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaximumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMinimumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVSECurrentRegulationTolerance{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEPeakCurrentRipple,"urn:iso:15118:2:2013:MsgDataTypes":EVSEEnergyToBeDelivered{0-1})', derivedBy='EXTENSION'. */ +static int encode_v2gDC_EVSEChargeParameterType(bitstream_t* stream, struct v2gDC_EVSEChargeParameterType* v2gDC_EVSEChargeParameterType) { + int grammarID = 18; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 18: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDC_EVSEStatusType(stream, &v2gDC_EVSEChargeParameterType->DC_EVSEStatus ); + } + grammarID = 19; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 19: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEMaximumCurrentLimit ); + } + grammarID = 20; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 20: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEMaximumPowerLimit ); + } + grammarID = 21; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 21: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEMaximumVoltageLimit ); + } + grammarID = 22; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 22: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEMinimumCurrentLimit ); + } + grammarID = 23; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 23: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEMinimumVoltageLimit ); + } + grammarID = 24; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 24: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + if ( v2gDC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSECurrentRegulationTolerance ); + } + grammarID = 25; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEPeakCurrentRipple ); + } + grammarID = 26; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 25: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEPeakCurrentRipple ); + } + grammarID = 26; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 26: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] */ + if ( v2gDC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVSEChargeParameterType->EVSEEnergyToBeDelivered ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SalesTariffType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SalesTariffID,"urn:iso:15118:2:2013:MsgDataTypes":SalesTariffDescription{0-1},"urn:iso:15118:2:2013:MsgDataTypes":NumEPriceLevels{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SalesTariffEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gSalesTariffType(bitstream_t* stream, struct v2gSalesTariffType* v2gSalesTariffType) { + int grammarID = 27; + int done = 0; + + unsigned int v2gSalesTariffType_SalesTariffEntry_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 27: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + if ( v2gSalesTariffType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSalesTariffType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gSalesTariffType->Id.characters, v2gSalesTariffType->Id.charactersLen); + } + } + grammarID = 28; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(v2gSalesTariffType->SalesTariffID - 1)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 29; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 28: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(v2gSalesTariffType->SalesTariffID - 1)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 29; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 29: + /* 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)] */ + if ( v2gSalesTariffType->SalesTariffDescription_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSalesTariffType->SalesTariffDescription.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gSalesTariffType->SalesTariffDescription.characters, v2gSalesTariffType->SalesTariffDescription.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 30; + } else if ( v2gSalesTariffType->NumEPriceLevels_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(v2gSalesTariffType->NumEPriceLevels - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 31; + } else if (v2gSalesTariffType_SalesTariffEntry_currArrayIndex < v2gSalesTariffType->SalesTariffEntry.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encode_v2gSalesTariffEntryType(stream, &v2gSalesTariffType->SalesTariffEntry.array [v2gSalesTariffType_SalesTariffEntry_currArrayIndex++]); + } + grammarID = 32; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 30: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + if ( v2gSalesTariffType->NumEPriceLevels_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(v2gSalesTariffType->NumEPriceLevels - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 31; + } else if (v2gSalesTariffType_SalesTariffEntry_currArrayIndex < v2gSalesTariffType->SalesTariffEntry.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gSalesTariffEntryType(stream, &v2gSalesTariffType->SalesTariffEntry.array [v2gSalesTariffType_SalesTariffEntry_currArrayIndex++]); + } + grammarID = 32; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 31: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry)] */ + if (v2gSalesTariffType_SalesTariffEntry_currArrayIndex < v2gSalesTariffType->SalesTariffEntry.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gSalesTariffEntryType(stream, &v2gSalesTariffType->SalesTariffEntry.array [v2gSalesTariffType_SalesTariffEntry_currArrayIndex++]); + } + grammarID = 32; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 32: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry), END_ELEMENT] */ + if (v2gSalesTariffType_SalesTariffEntry_currArrayIndex < v2gSalesTariffType->SalesTariffEntry.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gSalesTariffEntryType(stream, &v2gSalesTariffType->SalesTariffEntry.array [v2gSalesTariffType_SalesTariffEntry_currArrayIndex++]); + } + grammarID = 32; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PMaxScheduleType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":PMaxScheduleEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gPMaxScheduleType(bitstream_t* stream, struct v2gPMaxScheduleType* v2gPMaxScheduleType) { + int grammarID = 33; + int done = 0; + + unsigned int v2gPMaxScheduleType_PMaxScheduleEntry_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 33: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry)] */ + if (v2gPMaxScheduleType_PMaxScheduleEntry_currArrayIndex < v2gPMaxScheduleType->PMaxScheduleEntry.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPMaxScheduleEntryType(stream, &v2gPMaxScheduleType->PMaxScheduleEntry.array [v2gPMaxScheduleType_PMaxScheduleEntry_currArrayIndex++]); + } + grammarID = 34; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 34: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] */ + if (v2gPMaxScheduleType_PMaxScheduleEntry_currArrayIndex < v2gPMaxScheduleType->PMaxScheduleEntry.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gPMaxScheduleEntryType(stream, &v2gPMaxScheduleType->PMaxScheduleEntry.array [v2gPMaxScheduleType_PMaxScheduleEntry_currArrayIndex++]); + } + grammarID = 34; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CostType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":costKind,"urn:iso:15118:2:2013:MsgDataTypes":amount,"urn:iso:15118:2:2013:MsgDataTypes":amountMultiplier{0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gCostType(bitstream_t* stream, struct v2gCostType* v2gCostType) { + int grammarID = 35; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 35: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}costKind)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gCostType->costKind); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 36; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 36: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amount)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, v2gCostType->amount); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 37; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 37: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier), END_ELEMENT] */ + if ( v2gCostType->amountMultiplier_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, (uint32_t)(v2gCostType->amountMultiplier + 3)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ChargeServiceType', base type name='ServiceType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2013:MsgDataTypes":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FreeService),("urn:iso:15118:2:2013:MsgDataTypes":SupportedEnergyTransferMode))', derivedBy='EXTENSION'. */ +static int encode_v2gChargeServiceType(bitstream_t* stream, struct v2gChargeServiceType* v2gChargeServiceType) { + int grammarID = 38; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 38: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, v2gChargeServiceType->ServiceID); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 39; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 39: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + if ( v2gChargeServiceType->ServiceName_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gChargeServiceType->ServiceName.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gChargeServiceType->ServiceName.characters, v2gChargeServiceType->ServiceName.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 40; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gChargeServiceType->ServiceCategory); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 41; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 40: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gChargeServiceType->ServiceCategory); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 41; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 41: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + if ( v2gChargeServiceType->ServiceScope_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gChargeServiceType->ServiceScope.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gChargeServiceType->ServiceScope.characters, v2gChargeServiceType->ServiceScope.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 42; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gChargeServiceType->FreeService); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 43; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 42: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gChargeServiceType->FreeService); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 43; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 43: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gSupportedEnergyTransferModeType(stream, &v2gChargeServiceType->SupportedEnergyTransferMode ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PMaxScheduleEntryType', base type name='EntryType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2013:MsgDataTypes":PMax))', derivedBy='EXTENSION'. */ +static int encode_v2gPMaxScheduleEntryType(bitstream_t* stream, struct v2gPMaxScheduleEntryType* v2gPMaxScheduleEntryType) { + int grammarID = 44; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 44: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + if ( v2gPMaxScheduleEntryType->RelativeTimeInterval_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gRelativeTimeIntervalType(stream, &v2gPMaxScheduleEntryType->RelativeTimeInterval ); + } + grammarID = 45; + } else if ( v2gPMaxScheduleEntryType->TimeInterval_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gIntervalType(stream, &v2gPMaxScheduleEntryType->TimeInterval ); + } + grammarID = 45; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 45: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMax)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gPMaxScheduleEntryType->PMax ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Service{1-8})', derivedBy='RESTRICTION'. */ +static int encode_v2gServiceListType(bitstream_t* stream, struct v2gServiceListType* v2gServiceListType) { + int grammarID = 46; + int done = 0; + + unsigned int v2gServiceListType_Service_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 46: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service)] */ + if (v2gServiceListType_Service_currArrayIndex < v2gServiceListType->Service.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gServiceType(stream, &v2gServiceListType->Service.array [v2gServiceListType_Service_currArrayIndex++]); + } + grammarID = 47; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 47: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + if (v2gServiceListType_Service_currArrayIndex < v2gServiceListType->Service.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gServiceType(stream, &v2gServiceListType->Service.array [v2gServiceListType_Service_currArrayIndex++]); + } + grammarID = 48; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 48: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + if (v2gServiceListType_Service_currArrayIndex < v2gServiceListType->Service.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gServiceType(stream, &v2gServiceListType->Service.array [v2gServiceListType_Service_currArrayIndex++]); + } + grammarID = 49; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 49: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + if (v2gServiceListType_Service_currArrayIndex < v2gServiceListType->Service.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gServiceType(stream, &v2gServiceListType->Service.array [v2gServiceListType_Service_currArrayIndex++]); + } + grammarID = 50; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 50: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + if (v2gServiceListType_Service_currArrayIndex < v2gServiceListType->Service.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gServiceType(stream, &v2gServiceListType->Service.array [v2gServiceListType_Service_currArrayIndex++]); + } + grammarID = 51; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 51: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + if (v2gServiceListType_Service_currArrayIndex < v2gServiceListType->Service.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gServiceType(stream, &v2gServiceListType->Service.array [v2gServiceListType_Service_currArrayIndex++]); + } + grammarID = 52; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 52: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + if (v2gServiceListType_Service_currArrayIndex < v2gServiceListType->Service.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gServiceType(stream, &v2gServiceListType->Service.array [v2gServiceListType_Service_currArrayIndex++]); + } + grammarID = 53; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 53: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Service), END_ELEMENT] */ + if (v2gServiceListType_Service_currArrayIndex < v2gServiceListType->Service.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gServiceType(stream, &v2gServiceListType->Service.array [v2gServiceListType_Service_currArrayIndex++]); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyValueType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":DSAKeyValue|"http://www.w3.org/2000/09/xmldsig#":RSAKeyValue|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))', derivedBy='RESTRICTION'. */ +static int encode_v2gKeyValueType(bitstream_t* stream, struct v2gKeyValueType* v2gKeyValueType) { + int grammarID = 54; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 54: + /* 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 ( v2gKeyValueType->DSAKeyValue_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gDSAKeyValueType(stream, &v2gKeyValueType->DSAKeyValue ); + } + grammarID = 55; + } else if ( v2gKeyValueType->RSAKeyValue_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encode_v2gRSAKeyValueType(stream, &v2gKeyValueType->RSAKeyValue ); + } + grammarID = 55; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 55; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 56; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 55: + /* Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 55; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 56: + /* 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 ( v2gKeyValueType->DSAKeyValue_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gDSAKeyValueType(stream, &v2gKeyValueType->DSAKeyValue ); + } + grammarID = 55; + } else if ( v2gKeyValueType->RSAKeyValue_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encode_v2gRSAKeyValueType(stream, &v2gKeyValueType->RSAKeyValue ); + } + grammarID = 55; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 55; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 56; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentServiceSelectionResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode)', derivedBy='EXTENSION'. */ +static int encode_v2gPaymentServiceSelectionResType(bitstream_t* stream, struct v2gPaymentServiceSelectionResType* v2gPaymentServiceSelectionResType) { + int grammarID = 57; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 57: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gPaymentServiceSelectionResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":HMACOutputLength{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gSignatureMethodType(bitstream_t* stream, struct v2gSignatureMethodType* v2gSignatureMethodType) { + int grammarID = 58; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 58: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSignatureMethodType->Algorithm.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gSignatureMethodType->Algorithm.characters, v2gSignatureMethodType->Algorithm.charactersLen); + } + } + grammarID = 59; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 59: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if ( v2gSignatureMethodType->HMACOutputLength_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger64(stream, v2gSignatureMethodType->HMACOutputLength); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 60; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 61; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 60: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 61: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if ( v2gSignatureMethodType->HMACOutputLength_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger64(stream, v2gSignatureMethodType->HMACOutputLength); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 60; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 61; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,MeteringReceiptResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus)', derivedBy='EXTENSION'. */ +static int encode_v2gMeteringReceiptResType(bitstream_t* stream, struct v2gMeteringReceiptResType* v2gMeteringReceiptResType) { + int grammarID = 62; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 62: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gMeteringReceiptResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 63; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 63: + /* 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)] */ + if ( v2gMeteringReceiptResType->AC_EVSEStatus_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gAC_EVSEStatusType(stream, &v2gMeteringReceiptResType->AC_EVSEStatus ); + } + grammarID = 3; + } else if ( v2gMeteringReceiptResType->DC_EVSEStatus_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gDC_EVSEStatusType(stream, &v2gMeteringReceiptResType->DC_EVSEStatus ); + } + grammarID = 3; + } else if ( v2gMeteringReceiptResType->EVSEStatus_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encode_v2gEVSEStatusType(stream, &v2gMeteringReceiptResType->EVSEStatus ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgHeader,MessageHeaderType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgHeader":SessionID,"urn:iso:15118:2:2013:MsgHeader":Notification{0-1},"http://www.w3.org/2000/09/xmldsig#":Signature{0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gMessageHeaderType(bitstream_t* stream, struct v2gMessageHeaderType* v2gMessageHeaderType) { + int grammarID = 64; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 64: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}SessionID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gMessageHeaderType->SessionID.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gMessageHeaderType->SessionID.bytes, v2gMessageHeaderType->SessionID.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 65; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 65: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgHeader}Notification), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + if ( v2gMessageHeaderType->Notification_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gNotificationType(stream, &v2gMessageHeaderType->Notification ); + } + grammarID = 66; + } else if ( v2gMessageHeaderType->Signature_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gSignatureType(stream, &v2gMessageHeaderType->Signature ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 66: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */ + if ( v2gMessageHeaderType->Signature_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gSignatureType(stream, &v2gMessageHeaderType->Signature ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,RetrievalMethodType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gRetrievalMethodType(bitstream_t* stream, struct v2gRetrievalMethodType* v2gRetrievalMethodType) { + int grammarID = 67; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 67: + /* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + if ( v2gRetrievalMethodType->Type_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gRetrievalMethodType->Type.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gRetrievalMethodType->Type.characters, v2gRetrievalMethodType->Type.charactersLen); + } + } + grammarID = 68; + } else if ( v2gRetrievalMethodType->URI_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gRetrievalMethodType->URI.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gRetrievalMethodType->URI.characters, v2gRetrievalMethodType->URI.charactersLen); + } + } + grammarID = 69; + } else if ( v2gRetrievalMethodType->Transforms_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + errn = encode_v2gTransformsType(stream, &v2gRetrievalMethodType->Transforms ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 68: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + if ( v2gRetrievalMethodType->URI_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gRetrievalMethodType->URI.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gRetrievalMethodType->URI.characters, v2gRetrievalMethodType->URI.charactersLen); + } + } + grammarID = 69; + } else if ( v2gRetrievalMethodType->Transforms_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gTransformsType(stream, &v2gRetrievalMethodType->Transforms ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 69: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */ + if ( v2gRetrievalMethodType->Transforms_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gTransformsType(stream, &v2gRetrievalMethodType->Transforms ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVChargeParameterType', base type name='anyType', content type='ELEMENT', isAbstract='true', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gEVChargeParameterType(bitstream_t* stream, struct v2gEVChargeParameterType* v2gEVChargeParameterType) { + int grammarID = 70; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 70: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), END_ELEMENT] */ + if ( v2gEVChargeParameterType->DepartureTime_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, v2gEVChargeParameterType->DepartureTime); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateInstallationReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":OEMProvisioningCert,"urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs)', derivedBy='EXTENSION'. */ +static int encode_v2gCertificateInstallationReqType(bitstream_t* stream, struct v2gCertificateInstallationReqType* v2gCertificateInstallationReqType) { + int grammarID = 71; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 71: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCertificateInstallationReqType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gCertificateInstallationReqType->Id.characters, v2gCertificateInstallationReqType->Id.charactersLen); + } + } + grammarID = 72; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 72: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCertificateInstallationReqType->OEMProvisioningCert.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gCertificateInstallationReqType->OEMProvisioningCert.bytes, v2gCertificateInstallationReqType->OEMProvisioningCert.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 73; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 73: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gListOfRootCertificateIDsType(stream, &v2gCertificateInstallationReqType->ListOfRootCertificateIDs ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargeParameterDiscoveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing,"urn:iso:15118:2:2013:MsgDataTypes":SASchedules{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEChargeParameter)', derivedBy='EXTENSION'. */ +static int encode_v2gChargeParameterDiscoveryResType(bitstream_t* stream, struct v2gChargeParameterDiscoveryResType* v2gChargeParameterDiscoveryResType) { + int grammarID = 74; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 74: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gChargeParameterDiscoveryResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 75; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 75: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gChargeParameterDiscoveryResType->EVSEProcessing); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 76; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 76: + /* 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)] */ + if ( v2gChargeParameterDiscoveryResType->SAScheduleList_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gSAScheduleListType(stream, &v2gChargeParameterDiscoveryResType->SAScheduleList ); + } + grammarID = 77; + } else if ( v2gChargeParameterDiscoveryResType->SASchedules_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encode_v2gSASchedulesType(stream, &v2gChargeParameterDiscoveryResType->SASchedules ); + } + grammarID = 77; + } else if ( v2gChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + errn = encode_v2gAC_EVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->AC_EVSEChargeParameter ); + } + grammarID = 3; + } else if ( v2gChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encode_v2gDC_EVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->DC_EVSEChargeParameter ); + } + grammarID = 3; + } else if ( v2gChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encode_v2gEVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->EVSEChargeParameter ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 77: + /* 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)] */ + if ( v2gChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gAC_EVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->AC_EVSEChargeParameter ); + } + grammarID = 3; + } else if ( v2gChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gDC_EVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->DC_EVSEChargeParameter ); + } + grammarID = 3; + } else if ( v2gChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encode_v2gEVSEChargeParameterType(stream, &v2gChargeParameterDiscoveryResType->EVSEChargeParameter ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,WeldingDetectionReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus)', derivedBy='EXTENSION'. */ +static int encode_v2gWeldingDetectionReqType(bitstream_t* stream, struct v2gWeldingDetectionReqType* v2gWeldingDetectionReqType) { + int grammarID = 78; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 78: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDC_EVStatusType(stream, &v2gWeldingDetectionReqType->DC_EVStatus ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CableCheckReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus)', derivedBy='EXTENSION'. */ +static int encode_v2gCableCheckReqType(bitstream_t* stream, struct v2gCableCheckReqType* v2gCableCheckReqType) { + int grammarID = 78; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 78: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDC_EVStatusType(stream, &v2gCableCheckReqType->DC_EVStatus ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ParameterType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":boolValue|"urn:iso:15118:2:2013:MsgDataTypes":byteValue|"urn:iso:15118:2:2013:MsgDataTypes":shortValue|"urn:iso:15118:2:2013:MsgDataTypes":intValue|"urn:iso:15118:2:2013:MsgDataTypes":physicalValue|"urn:iso:15118:2:2013:MsgDataTypes":stringValue)', derivedBy='RESTRICTION'. */ +static int encode_v2gParameterType(bitstream_t* stream, struct v2gParameterType* v2gParameterType) { + int grammarID = 79; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 79: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Name)] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gParameterType->Name.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gParameterType->Name.characters, v2gParameterType->Name.charactersLen); + } + } + grammarID = 80; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 80: + /* 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)] */ + if ( v2gParameterType->boolValue_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gParameterType->boolValue); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if ( v2gParameterType->byteValue_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(v2gParameterType->byteValue + 128)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if ( v2gParameterType->shortValue_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger16(stream, v2gParameterType->shortValue); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if ( v2gParameterType->intValue_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger32(stream, v2gParameterType->intValue); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if ( v2gParameterType->physicalValue_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gParameterType->physicalValue ); + } + grammarID = 3; + } else if ( v2gParameterType->stringValue_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 5); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gParameterType->stringValue.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gParameterType->stringValue.characters, v2gParameterType->stringValue.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVSEChargeParameterType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int encode_v2gEVSEChargeParameterType(bitstream_t* stream, struct v2gEVSEChargeParameterType* v2gEVSEChargeParameterType) { + int grammarID = 81; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ManifestType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gManifestType(bitstream_t* stream, struct v2gManifestType* v2gManifestType) { + int grammarID = 82; + int done = 0; + + unsigned int v2gManifestType_Reference_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 82: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + if ( v2gManifestType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gManifestType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gManifestType->Id.characters, v2gManifestType->Id.charactersLen); + } + } + grammarID = 83; + } else if (v2gManifestType_Reference_currArrayIndex < v2gManifestType->Reference.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gReferenceType(stream, &v2gManifestType->Reference.array [v2gManifestType_Reference_currArrayIndex++]); + } + grammarID = 84; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 83: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + if (v2gManifestType_Reference_currArrayIndex < v2gManifestType->Reference.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gReferenceType(stream, &v2gManifestType->Reference.array [v2gManifestType_Reference_currArrayIndex++]); + } + grammarID = 84; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 84: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */ + if (v2gManifestType_Reference_currArrayIndex < v2gManifestType->Reference.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gReferenceType(stream, &v2gManifestType->Reference.array [v2gManifestType_Reference_currArrayIndex++]); + } + grammarID = 84; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVStatusType', base type name='EVStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EVReady,"urn:iso:15118:2:2013:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2013:MsgDataTypes":EVRESSSOC)', derivedBy='EXTENSION'. */ +static int encode_v2gDC_EVStatusType(bitstream_t* stream, struct v2gDC_EVStatusType* v2gDC_EVStatusType) { + int grammarID = 85; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 85: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVReady)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gDC_EVStatusType->EVReady); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 86; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 86: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 4, v2gDC_EVStatusType->EVErrorCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 87; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 87: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(v2gDC_EVStatusType->EVRESSSOC - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentDetailsReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain)', derivedBy='EXTENSION'. */ +static int encode_v2gPaymentDetailsReqType(bitstream_t* stream, struct v2gPaymentDetailsReqType* v2gPaymentDetailsReqType) { + int grammarID = 88; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 88: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gPaymentDetailsReqType->eMAID.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gPaymentDetailsReqType->eMAID.characters, v2gPaymentDetailsReqType->eMAID.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 89; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 89: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gCertificateChainType(stream, &v2gPaymentDetailsReqType->ContractSignatureCertChain ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SAScheduleListType', base type name='SASchedulesType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTuple{1-3})', derivedBy='EXTENSION'. */ +static int encode_v2gSAScheduleListType(bitstream_t* stream, struct v2gSAScheduleListType* v2gSAScheduleListType) { + int grammarID = 90; + int done = 0; + + unsigned int v2gSAScheduleListType_SAScheduleTuple_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 90: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple)] */ + if (v2gSAScheduleListType_SAScheduleTuple_currArrayIndex < v2gSAScheduleListType->SAScheduleTuple.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gSAScheduleTupleType(stream, &v2gSAScheduleListType->SAScheduleTuple.array [v2gSAScheduleListType_SAScheduleTuple_currArrayIndex++]); + } + grammarID = 91; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 91: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + if (v2gSAScheduleListType_SAScheduleTuple_currArrayIndex < v2gSAScheduleListType->SAScheduleTuple.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gSAScheduleTupleType(stream, &v2gSAScheduleListType->SAScheduleTuple.array [v2gSAScheduleListType_SAScheduleTuple_currArrayIndex++]); + } + grammarID = 92; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 92: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */ + if (v2gSAScheduleListType_SAScheduleTuple_currArrayIndex < v2gSAScheduleListType->SAScheduleTuple.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gSAScheduleTupleType(stream, &v2gSAScheduleListType->SAScheduleTuple.array [v2gSAScheduleListType_SAScheduleTuple_currArrayIndex++]); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,RSAKeyValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Modulus,"http://www.w3.org/2000/09/xmldsig#":Exponent)', derivedBy='RESTRICTION'. */ +static int encode_v2gRSAKeyValueType(bitstream_t* stream, struct v2gRSAKeyValueType* v2gRSAKeyValueType) { + int grammarID = 93; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 93: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gRSAKeyValueType->Modulus.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gRSAKeyValueType->Modulus.bytes, v2gRSAKeyValueType->Modulus.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 94; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 94: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gRSAKeyValueType->Exponent.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gRSAKeyValueType->Exponent.bytes, v2gRSAKeyValueType->Exponent.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEChargeParameterType', base type name='EVSEChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":AC_EVSEStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVSENominalVoltage,"urn:iso:15118:2:2013:MsgDataTypes":EVSEMaxCurrent)', derivedBy='EXTENSION'. */ +static int encode_v2gAC_EVSEChargeParameterType(bitstream_t* stream, struct v2gAC_EVSEChargeParameterType* v2gAC_EVSEChargeParameterType) { + int grammarID = 95; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 95: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gAC_EVSEStatusType(stream, &v2gAC_EVSEChargeParameterType->AC_EVSEStatus ); + } + grammarID = 96; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 96: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gAC_EVSEChargeParameterType->EVSENominalVoltage ); + } + grammarID = 97; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 97: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gAC_EVSEChargeParameterType->EVSEMaxCurrent ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transform{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gTransformsType(bitstream_t* stream, struct v2gTransformsType* v2gTransformsType) { + int grammarID = 98; + int done = 0; + + unsigned int v2gTransformsType_Transform_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 98: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */ + if (v2gTransformsType_Transform_currArrayIndex < v2gTransformsType->Transform.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gTransformType(stream, &v2gTransformsType->Transform.array [v2gTransformsType_Transform_currArrayIndex++]); + } + grammarID = 99; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 99: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] */ + if (v2gTransformsType_Transform_currArrayIndex < v2gTransformsType->Transform.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gTransformType(stream, &v2gTransformsType->Transform.array [v2gTransformsType_Transform_currArrayIndex++]); + } + grammarID = 99; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,WeldingDetectionResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage)', derivedBy='EXTENSION'. */ +static int encode_v2gWeldingDetectionResType(bitstream_t* stream, struct v2gWeldingDetectionResType* v2gWeldingDetectionResType) { + int grammarID = 100; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 100: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gWeldingDetectionResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 101; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 101: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDC_EVSEStatusType(stream, &v2gWeldingDetectionResType->DC_EVSEStatus ); + } + grammarID = 102; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 102: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gWeldingDetectionResType->EVSEPresentVoltage ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ConsumptionCostType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":startValue,"urn:iso:15118:2:2013:MsgDataTypes":Cost{1-3})', derivedBy='RESTRICTION'. */ +static int encode_v2gConsumptionCostType(bitstream_t* stream, struct v2gConsumptionCostType* v2gConsumptionCostType) { + int grammarID = 103; + int done = 0; + + unsigned int v2gConsumptionCostType_Cost_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 103: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}startValue)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gConsumptionCostType->startValue ); + } + grammarID = 104; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 104: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost)] */ + if (v2gConsumptionCostType_Cost_currArrayIndex < v2gConsumptionCostType->Cost.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gCostType(stream, &v2gConsumptionCostType->Cost.array [v2gConsumptionCostType_Cost_currArrayIndex++]); + } + grammarID = 105; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + if (v2gConsumptionCostType_Cost_currArrayIndex < v2gConsumptionCostType->Cost.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gCostType(stream, &v2gConsumptionCostType->Cost.array [v2gConsumptionCostType_Cost_currArrayIndex++]); + } + grammarID = 106; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Cost), END_ELEMENT] */ + if (v2gConsumptionCostType_Cost_currArrayIndex < v2gConsumptionCostType->Cost.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gCostType(stream, &v2gConsumptionCostType->Cost.array [v2gConsumptionCostType_Cost_currArrayIndex++]); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargingStatusResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":EVSEMaxCurrent{0-1},"urn:iso:15118:2:2013:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2013:MsgBody":ReceiptRequired{0-1},"urn:iso:15118:2:2013:MsgBody":AC_EVSEStatus)', derivedBy='EXTENSION'. */ +static int encode_v2gChargingStatusResType(bitstream_t* stream, struct v2gChargingStatusResType* v2gChargingStatusResType) { + int grammarID = 107; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 107: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gChargingStatusResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 108; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 108: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gChargingStatusResType->EVSEID.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gChargingStatusResType->EVSEID.characters, v2gChargingStatusResType->EVSEID.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 109; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 109: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(v2gChargingStatusResType->SAScheduleTupleID - 1)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 110; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 110: + /* 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)] */ + if ( v2gChargingStatusResType->EVSEMaxCurrent_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gChargingStatusResType->EVSEMaxCurrent ); + } + grammarID = 111; + } else if ( v2gChargingStatusResType->MeterInfo_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encode_v2gMeterInfoType(stream, &v2gChargingStatusResType->MeterInfo ); + } + grammarID = 112; + } else if ( v2gChargingStatusResType->ReceiptRequired_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gChargingStatusResType->ReceiptRequired); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 113; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encode_v2gAC_EVSEStatusType(stream, &v2gChargingStatusResType->AC_EVSEStatus ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 111: + /* 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)] */ + if ( v2gChargingStatusResType->MeterInfo_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gMeterInfoType(stream, &v2gChargingStatusResType->MeterInfo ); + } + grammarID = 112; + } else if ( v2gChargingStatusResType->ReceiptRequired_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gChargingStatusResType->ReceiptRequired); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 113; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encode_v2gAC_EVSEStatusType(stream, &v2gChargingStatusResType->AC_EVSEStatus ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 112: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + if ( v2gChargingStatusResType->ReceiptRequired_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gChargingStatusResType->ReceiptRequired); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 113; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gAC_EVSEStatusType(stream, &v2gChargingStatusResType->AC_EVSEStatus ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 113: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gAC_EVSEStatusType(stream, &v2gChargingStatusResType->AC_EVSEStatus ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVStatusType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int encode_v2gEVStatusType(bitstream_t* stream, struct v2gEVStatusType* v2gEVStatusType) { + int grammarID = 81; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,PGPDataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":PGPKeyID,"http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})|("http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED}))', derivedBy='RESTRICTION'. */ +static int encode_v2gPGPDataType(bitstream_t* stream, struct v2gPGPDataType* v2gPGPDataType) { + int grammarID = 114; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 114: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */ + if ( v2gPGPDataType->PGPKeyID_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gPGPDataType->PGPKeyID.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gPGPDataType->PGPKeyID.bytes, v2gPGPDataType->PGPKeyID.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 115; + } else if ( v2gPGPDataType->PGPKeyPacket_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gPGPDataType->PGPKeyPacket.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gPGPDataType->PGPKeyPacket.bytes, v2gPGPDataType->PGPKeyPacket.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 116; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 115: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] */ + if ( v2gPGPDataType->PGPKeyPacket_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gPGPDataType->PGPKeyPacket.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gPGPDataType->PGPKeyPacket.bytes, v2gPGPDataType->PGPKeyPacket.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 116; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 116; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 116: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT] */ + if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 116; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionStopResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode)', derivedBy='EXTENSION'. */ +static int encode_v2gSessionStopResType(bitstream_t* stream, struct v2gSessionStopResType* v2gSessionStopResType) { + int grammarID = 57; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 57: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gSessionStopResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDiscoveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgBody":ServiceCategory{0-1})', derivedBy='EXTENSION'. */ +static int encode_v2gServiceDiscoveryReqType(bitstream_t* stream, struct v2gServiceDiscoveryReqType* v2gServiceDiscoveryReqType) { + int grammarID = 117; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 117: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + if ( v2gServiceDiscoveryReqType->ServiceScope_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gServiceDiscoveryReqType->ServiceScope.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gServiceDiscoveryReqType->ServiceScope.characters, v2gServiceDiscoveryReqType->ServiceScope.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 118; + } else if ( v2gServiceDiscoveryReqType->ServiceCategory_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gServiceDiscoveryReqType->ServiceCategory); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 118: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceCategory), END_ELEMENT] */ + if ( v2gServiceDiscoveryReqType->ServiceCategory_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gServiceDiscoveryReqType->ServiceCategory); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,AuthorizationReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":GenChallenge{0-1})', derivedBy='EXTENSION'. */ +static int encode_v2gAuthorizationReqType(bitstream_t* stream, struct v2gAuthorizationReqType* v2gAuthorizationReqType) { + int grammarID = 119; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 119: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + if ( v2gAuthorizationReqType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gAuthorizationReqType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gAuthorizationReqType->Id.characters, v2gAuthorizationReqType->Id.charactersLen); + } + } + grammarID = 120; + } else if ( v2gAuthorizationReqType->GenChallenge_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gAuthorizationReqType->GenChallenge.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gAuthorizationReqType->GenChallenge.bytes, v2gAuthorizationReqType->GenChallenge.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 120: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge), END_ELEMENT] */ + if ( v2gAuthorizationReqType->GenChallenge_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gAuthorizationReqType->GenChallenge.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gAuthorizationReqType->GenChallenge.bytes, v2gAuthorizationReqType->GenChallenge.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SAScheduleTupleType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgDataTypes":PMaxSchedule,"urn:iso:15118:2:2013:MsgDataTypes":SalesTariff{0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gSAScheduleTupleType(bitstream_t* stream, struct v2gSAScheduleTupleType* v2gSAScheduleTupleType) { + int grammarID = 121; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 121: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(v2gSAScheduleTupleType->SAScheduleTupleID - 1)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 122; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 122: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPMaxScheduleType(stream, &v2gSAScheduleTupleType->PMaxSchedule ); + } + grammarID = 123; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 123: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariff), END_ELEMENT] */ + if ( v2gSAScheduleTupleType->SalesTariff_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gSalesTariffType(stream, &v2gSAScheduleTupleType->SalesTariff ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PhysicalValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Multiplier,"urn:iso:15118:2:2013:MsgDataTypes":Unit,"urn:iso:15118:2:2013:MsgDataTypes":Value)', derivedBy='RESTRICTION'. */ +static int encode_v2gPhysicalValueType(bitstream_t* stream, struct v2gPhysicalValueType* v2gPhysicalValueType) { + int grammarID = 124; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 124: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Multiplier)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, (uint32_t)(v2gPhysicalValueType->Multiplier + 3)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 125; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 125: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Unit)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, v2gPhysicalValueType->Unit); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 126; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 126: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Value)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger16(stream, v2gPhysicalValueType->Value); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,DigestMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gDigestMethodType(bitstream_t* stream, struct v2gDigestMethodType* v2gDigestMethodType) { + int grammarID = 127; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 127: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDigestMethodType->Algorithm.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gDigestMethodType->Algorithm.characters, v2gDigestMethodType->Algorithm.charactersLen); + } + } + grammarID = 128; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 128: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 60: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":RCD))', derivedBy='EXTENSION'. */ +static int encode_v2gAC_EVSEStatusType(bitstream_t* stream, struct v2gAC_EVSEStatusType* v2gAC_EVSEStatusType) { + int grammarID = 129; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 129: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, v2gAC_EVSEStatusType->NotificationMaxDelay); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 130; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gAC_EVSEStatusType->EVSENotification); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 131; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 131: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RCD)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gAC_EVSEStatusType->RCD); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionSetupResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":EVSETimeStamp{0-1})', derivedBy='EXTENSION'. */ +static int encode_v2gSessionSetupResType(bitstream_t* stream, struct v2gSessionSetupResType* v2gSessionSetupResType) { + int grammarID = 132; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 132: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gSessionSetupResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 133; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 133: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSessionSetupResType->EVSEID.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gSessionSetupResType->EVSEID.characters, v2gSessionSetupResType->EVSEID.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 134; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 134: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp), END_ELEMENT] */ + if ( v2gSessionSetupResType->EVSETimeStamp_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger64(stream, v2gSessionSetupResType->EVSETimeStamp); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509IssuerSerialType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":X509IssuerName,"http://www.w3.org/2000/09/xmldsig#":X509SerialNumber)', derivedBy='RESTRICTION'. */ +static int encode_v2gX509IssuerSerialType(bitstream_t* stream, struct v2gX509IssuerSerialType* v2gX509IssuerSerialType) { + int grammarID = 135; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 135: + /* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gX509IssuerSerialType->X509IssuerName.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gX509IssuerSerialType->X509IssuerName.characters, v2gX509IssuerSerialType->X509IssuerName.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 136; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 136: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger64(stream, v2gX509IssuerSerialType->X509SerialNumber); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionStopReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ChargingSession)', derivedBy='EXTENSION'. */ +static int encode_v2gSessionStopReqType(bitstream_t* stream, struct v2gSessionStopReqType* v2gSessionStopReqType) { + int grammarID = 137; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 137: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingSession)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, v2gSessionStopReqType->ChargingSession); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVSEStatusType', base type name='EVSEStatusType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2013:MsgDataTypes":EVSENotification),("urn:iso:15118:2:2013:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatusCode))', derivedBy='EXTENSION'. */ +static int encode_v2gDC_EVSEStatusType(bitstream_t* stream, struct v2gDC_EVSEStatusType* v2gDC_EVSEStatusType) { + int grammarID = 138; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 138: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, v2gDC_EVSEStatusType->NotificationMaxDelay); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 139; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 139: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSENotification)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gDC_EVSEStatusType->EVSENotification); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 140; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 140: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + if ( v2gDC_EVSEStatusType->EVSEIsolationStatus_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, v2gDC_EVSEStatusType->EVSEIsolationStatus); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 141; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 4, v2gDC_EVSEStatusType->EVSEStatusCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 141: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 4, v2gDC_EVSEStatusType->EVSEStatusCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DiffieHellmanPublickeyType', base type name='dHpublickeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +static int encode_v2gDiffieHellmanPublickeyType(bitstream_t* stream, struct v2gDiffieHellmanPublickeyType* v2gDiffieHellmanPublickeyType) { + int grammarID = 142; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 142: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDiffieHellmanPublickeyType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gDiffieHellmanPublickeyType->Id.characters, v2gDiffieHellmanPublickeyType->Id.charactersLen); + } + } + grammarID = 143; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 143: + /* StartTag[CHARACTERS[BINARY_BASE64]] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDiffieHellmanPublickeyType->CONTENT.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDiffieHellmanPublickeyType->CONTENT.bytes, v2gDiffieHellmanPublickeyType->CONTENT.bytesLen); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateUpdateReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":ListOfRootCertificateIDs)', derivedBy='EXTENSION'. */ +static int encode_v2gCertificateUpdateReqType(bitstream_t* stream, struct v2gCertificateUpdateReqType* v2gCertificateUpdateReqType) { + int grammarID = 144; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 144: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id)] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCertificateUpdateReqType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gCertificateUpdateReqType->Id.characters, v2gCertificateUpdateReqType->Id.charactersLen); + } + } + grammarID = 145; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 145: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gCertificateChainType(stream, &v2gCertificateUpdateReqType->ContractSignatureCertChain ); + } + grammarID = 146; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 146: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCertificateUpdateReqType->eMAID.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gCertificateUpdateReqType->eMAID.characters, v2gCertificateUpdateReqType->eMAID.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 73; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 73: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gListOfRootCertificateIDsType(stream, &v2gCertificateUpdateReqType->ListOfRootCertificateIDs ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,BodyBaseType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int encode_v2gBodyBaseType(bitstream_t* stream, struct v2gBodyBaseType* v2gBodyBaseType) { + int grammarID = 81; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVChargeParameterType', base type name='EVChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1}),("urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumCurrentLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVMaximumVoltageLimit,"urn:iso:15118:2:2013:MsgDataTypes":EVEnergyCapacity{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVEnergyRequest{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FullSOC{0-1},"urn:iso:15118:2:2013:MsgDataTypes":BulkSOC{0-1}))', derivedBy='EXTENSION'. */ +static int encode_v2gDC_EVChargeParameterType(bitstream_t* stream, struct v2gDC_EVChargeParameterType* v2gDC_EVChargeParameterType) { + int grammarID = 147; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 147: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + if ( v2gDC_EVChargeParameterType->DepartureTime_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, v2gDC_EVChargeParameterType->DepartureTime); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 148; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gDC_EVStatusType(stream, &v2gDC_EVChargeParameterType->DC_EVStatus ); + } + grammarID = 149; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDC_EVStatusType(stream, &v2gDC_EVChargeParameterType->DC_EVStatus ); + } + grammarID = 149; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 149: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVMaximumCurrentLimit ); + } + grammarID = 150; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 150: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + if ( v2gDC_EVChargeParameterType->EVMaximumPowerLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVMaximumPowerLimit ); + } + grammarID = 151; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVMaximumVoltageLimit ); + } + grammarID = 152; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 151: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVMaximumVoltageLimit ); + } + grammarID = 152; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 152: + /* 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] */ + if ( v2gDC_EVChargeParameterType->EVEnergyCapacity_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVEnergyCapacity ); + } + grammarID = 153; + } else if ( v2gDC_EVChargeParameterType->EVEnergyRequest_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVEnergyRequest ); + } + grammarID = 154; + } else if ( v2gDC_EVChargeParameterType->FullSOC_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(v2gDC_EVChargeParameterType->FullSOC - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 155; + } else if ( v2gDC_EVChargeParameterType->BulkSOC_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(v2gDC_EVChargeParameterType->BulkSOC - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 153: + /* 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] */ + if ( v2gDC_EVChargeParameterType->EVEnergyRequest_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gDC_EVChargeParameterType->EVEnergyRequest ); + } + grammarID = 154; + } else if ( v2gDC_EVChargeParameterType->FullSOC_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(v2gDC_EVChargeParameterType->FullSOC - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 155; + } else if ( v2gDC_EVChargeParameterType->BulkSOC_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(v2gDC_EVChargeParameterType->BulkSOC - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 154: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FullSOC), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + if ( v2gDC_EVChargeParameterType->FullSOC_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(v2gDC_EVChargeParameterType->FullSOC - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 155; + } else if ( v2gDC_EVChargeParameterType->BulkSOC_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(v2gDC_EVChargeParameterType->BulkSOC - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 155: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkSOC), END_ELEMENT] */ + if ( v2gDC_EVChargeParameterType->BulkSOC_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 7, (uint32_t)(v2gDC_EVChargeParameterType->BulkSOC - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SubCertificatesType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate{1-4})', derivedBy='RESTRICTION'. */ +static int encode_v2gSubCertificatesType(bitstream_t* stream, struct v2gSubCertificatesType* v2gSubCertificatesType) { + int grammarID = 156; + int done = 0; + + unsigned int v2gSubCertificatesType_Certificate_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 156: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + if (v2gSubCertificatesType_Certificate_currArrayIndex < v2gSubCertificatesType->Certificate.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytes, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytesLen); + v2gSubCertificatesType_Certificate_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 157; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 157: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + if (v2gSubCertificatesType_Certificate_currArrayIndex < v2gSubCertificatesType->Certificate.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytes, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytesLen); + v2gSubCertificatesType_Certificate_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 158; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 158: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + if (v2gSubCertificatesType_Certificate_currArrayIndex < v2gSubCertificatesType->Certificate.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytes, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytesLen); + v2gSubCertificatesType_Certificate_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 159; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 159: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate), END_ELEMENT] */ + if (v2gSubCertificatesType_Certificate_currArrayIndex < v2gSubCertificatesType->Certificate.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytes, v2gSubCertificatesType->Certificate.array[v2gSubCertificatesType_Certificate_currArrayIndex].bytesLen); + v2gSubCertificatesType_Certificate_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SupportedEnergyTransferModeType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":EnergyTransferMode{1-6})', derivedBy='RESTRICTION'. */ +static int encode_v2gSupportedEnergyTransferModeType(bitstream_t* stream, struct v2gSupportedEnergyTransferModeType* v2gSupportedEnergyTransferModeType) { + int grammarID = 160; + int done = 0; + + unsigned int v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 160: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode)] */ + if (v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 161; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 161: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + if (v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 162; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + if (v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 163; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 163: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + if (v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 164; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 164: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + if (v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 165; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 165: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode), END_ELEMENT] */ + if (v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex < v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, v2gSupportedEnergyTransferModeType->EnergyTransferMode.array[v2gSupportedEnergyTransferModeType_EnergyTransferMode_currArrayIndex++]); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargingStatusReqType', base type name='BodyBaseType', content type='EMPTY', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +static int encode_v2gChargingStatusReqType(bitstream_t* stream, struct v2gChargingStatusReqType* v2gChargingStatusReqType) { + int grammarID = 81; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertyType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int encode_v2gSignaturePropertyType(bitstream_t* stream, struct v2gSignaturePropertyType* v2gSignaturePropertyType) { + int grammarID = 166; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 166: + /* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Target)] */ + if ( v2gSignaturePropertyType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSignaturePropertyType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gSignaturePropertyType->Id.characters, v2gSignaturePropertyType->Id.charactersLen); + } + } + grammarID = 167; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSignaturePropertyType->Target.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gSignaturePropertyType->Target.characters, v2gSignaturePropertyType->Target.charactersLen); + } + } + grammarID = 168; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 167: + /* StartTag[ATTRIBUTE[STRING](Target)] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSignaturePropertyType->Target.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gSignaturePropertyType->Target.characters, v2gSignaturePropertyType->Target.charactersLen); + } + } + grammarID = 168; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 168: + /* StartTag[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 169; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 60: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 169: + /* Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */ + if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 169; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ContractSignatureEncryptedPrivateKeyType', base type name='privateKeyType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +static int encode_v2gContractSignatureEncryptedPrivateKeyType(bitstream_t* stream, struct v2gContractSignatureEncryptedPrivateKeyType* v2gContractSignatureEncryptedPrivateKeyType) { + int grammarID = 142; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 142: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gContractSignatureEncryptedPrivateKeyType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gContractSignatureEncryptedPrivateKeyType->Id.characters, v2gContractSignatureEncryptedPrivateKeyType->Id.charactersLen); + } + } + grammarID = 143; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 143: + /* StartTag[CHARACTERS[BINARY_BASE64]] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gContractSignatureEncryptedPrivateKeyType->CONTENT.bytes, v2gContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ReferenceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1},"http://www.w3.org/2000/09/xmldsig#":DigestMethod,"http://www.w3.org/2000/09/xmldsig#":DigestValue)', derivedBy='RESTRICTION'. */ +static int encode_v2gReferenceType(bitstream_t* stream, struct v2gReferenceType* v2gReferenceType) { + int grammarID = 170; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 170: + /* 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)] */ + if ( v2gReferenceType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gReferenceType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gReferenceType->Id.characters, v2gReferenceType->Id.charactersLen); + } + } + grammarID = 171; + } else if ( v2gReferenceType->Type_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gReferenceType->Type.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gReferenceType->Type.characters, v2gReferenceType->Type.charactersLen); + } + } + grammarID = 172; + } else if ( v2gReferenceType->URI_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gReferenceType->URI.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gReferenceType->URI.characters, v2gReferenceType->URI.charactersLen); + } + } + grammarID = 173; + } else if ( v2gReferenceType->Transforms_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encode_v2gTransformsType(stream, &v2gReferenceType->Transforms ); + } + grammarID = 174; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + errn = encode_v2gDigestMethodType(stream, &v2gReferenceType->DigestMethod ); + } + grammarID = 175; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 171: + /* 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)] */ + if ( v2gReferenceType->Type_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gReferenceType->Type.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gReferenceType->Type.characters, v2gReferenceType->Type.charactersLen); + } + } + grammarID = 172; + } else if ( v2gReferenceType->URI_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gReferenceType->URI.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gReferenceType->URI.characters, v2gReferenceType->URI.charactersLen); + } + } + grammarID = 173; + } else if ( v2gReferenceType->Transforms_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + errn = encode_v2gTransformsType(stream, &v2gReferenceType->Transforms ); + } + grammarID = 174; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + errn = encode_v2gDigestMethodType(stream, &v2gReferenceType->DigestMethod ); + } + grammarID = 175; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 172: + /* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + if ( v2gReferenceType->URI_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gReferenceType->URI.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gReferenceType->URI.characters, v2gReferenceType->URI.charactersLen); + } + } + grammarID = 173; + } else if ( v2gReferenceType->Transforms_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gTransformsType(stream, &v2gReferenceType->Transforms ); + } + grammarID = 174; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encode_v2gDigestMethodType(stream, &v2gReferenceType->DigestMethod ); + } + grammarID = 175; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 173: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + if ( v2gReferenceType->Transforms_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gTransformsType(stream, &v2gReferenceType->Transforms ); + } + grammarID = 174; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gDigestMethodType(stream, &v2gReferenceType->DigestMethod ); + } + grammarID = 175; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 174: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDigestMethodType(stream, &v2gReferenceType->DigestMethod ); + } + grammarID = 175; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 175: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gReferenceType->DigestValue.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gReferenceType->DigestValue.bytes, v2gReferenceType->DigestValue.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CurrentDemandResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage,"urn:iso:15118:2:2013:MsgBody":EVSEPresentCurrent,"urn:iso:15118:2:2013:MsgBody":EVSECurrentLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEVoltageLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEPowerLimitAchieved,"urn:iso:15118:2:2013:MsgBody":EVSEMaximumVoltageLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEMaximumCurrentLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVSEID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2013:MsgBody":ReceiptRequired{0-1})', derivedBy='EXTENSION'. */ +static int encode_v2gCurrentDemandResType(bitstream_t* stream, struct v2gCurrentDemandResType* v2gCurrentDemandResType) { + int grammarID = 176; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 176: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gCurrentDemandResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 177; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 177: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDC_EVSEStatusType(stream, &v2gCurrentDemandResType->DC_EVSEStatus ); + } + grammarID = 178; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEPresentVoltage ); + } + grammarID = 179; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 179: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEPresentCurrent ); + } + grammarID = 180; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 180: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandResType->EVSECurrentLimitAchieved); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 181; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 181: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandResType->EVSEVoltageLimitAchieved); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 182; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 182: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandResType->EVSEPowerLimitAchieved); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 183; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 183: + /* 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)] */ + if ( v2gCurrentDemandResType->EVSEMaximumVoltageLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumVoltageLimit ); + } + grammarID = 184; + } else if ( v2gCurrentDemandResType->EVSEMaximumCurrentLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumCurrentLimit ); + } + grammarID = 185; + } else if ( v2gCurrentDemandResType->EVSEMaximumPowerLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumPowerLimit ); + } + grammarID = 186; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCurrentDemandResType->EVSEID.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gCurrentDemandResType->EVSEID.characters, v2gCurrentDemandResType->EVSEID.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 187; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 184: + /* 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)] */ + if ( v2gCurrentDemandResType->EVSEMaximumCurrentLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumCurrentLimit ); + } + grammarID = 185; + } else if ( v2gCurrentDemandResType->EVSEMaximumPowerLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumPowerLimit ); + } + grammarID = 186; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCurrentDemandResType->EVSEID.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gCurrentDemandResType->EVSEID.characters, v2gCurrentDemandResType->EVSEID.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 187; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 185: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + if ( v2gCurrentDemandResType->EVSEMaximumPowerLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandResType->EVSEMaximumPowerLimit ); + } + grammarID = 186; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCurrentDemandResType->EVSEID.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gCurrentDemandResType->EVSEID.characters, v2gCurrentDemandResType->EVSEID.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 187; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCurrentDemandResType->EVSEID.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gCurrentDemandResType->EVSEID.characters, v2gCurrentDemandResType->EVSEID.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 187; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 187: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(v2gCurrentDemandResType->SAScheduleTupleID - 1)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 188; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + if ( v2gCurrentDemandResType->MeterInfo_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gMeterInfoType(stream, &v2gCurrentDemandResType->MeterInfo ); + } + grammarID = 189; + } else if ( v2gCurrentDemandResType->ReceiptRequired_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandResType->ReceiptRequired); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 189: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ReceiptRequired), END_ELEMENT] */ + if ( v2gCurrentDemandResType->ReceiptRequired_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandResType->ReceiptRequired); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,CanonicalizationMethodType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##any]){0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gCanonicalizationMethodType(bitstream_t* stream, struct v2gCanonicalizationMethodType* v2gCanonicalizationMethodType) { + int grammarID = 127; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 127: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCanonicalizationMethodType->Algorithm.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gCanonicalizationMethodType->Algorithm.characters, v2gCanonicalizationMethodType->Algorithm.charactersLen); + } + } + grammarID = 128; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 128: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 60: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])|"http://www.w3.org/2000/09/xmldsig#":XPath){0-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int encode_v2gTransformType(bitstream_t* stream, struct v2gTransformType* v2gTransformType) { + int grammarID = 190; + int done = 0; + + unsigned int v2gTransformType_XPath_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 190: + /* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gTransformType->Algorithm.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gTransformType->Algorithm.characters, v2gTransformType->Algorithm.charactersLen); + } + } + grammarID = 191; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 191: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (v2gTransformType_XPath_currArrayIndex < v2gTransformType->XPath.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gTransformType->XPath.array[v2gTransformType_XPath_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gTransformType->XPath.array[v2gTransformType_XPath_currArrayIndex].characters, v2gTransformType->XPath.array[v2gTransformType_XPath_currArrayIndex].charactersLen); + v2gTransformType_XPath_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 192; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 192; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 192; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 192: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (v2gTransformType_XPath_currArrayIndex < v2gTransformType->XPath.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gTransformType->XPath.array[v2gTransformType_XPath_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gTransformType->XPath.array[v2gTransformType_XPath_currArrayIndex].characters, v2gTransformType->XPath.array[v2gTransformType_XPath_currArrayIndex].charactersLen); + v2gTransformType_XPath_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 192; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 192; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 192; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,CertificateChainType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":Certificate,"urn:iso:15118:2:2013:MsgDataTypes":SubCertificates{0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gCertificateChainType(bitstream_t* stream, struct v2gCertificateChainType* v2gCertificateChainType) { + int grammarID = 193; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 193: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + if ( v2gCertificateChainType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCertificateChainType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gCertificateChainType->Id.characters, v2gCertificateChainType->Id.charactersLen); + } + } + grammarID = 194; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCertificateChainType->Certificate.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gCertificateChainType->Certificate.bytes, v2gCertificateChainType->Certificate.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 195; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 194: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Certificate)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gCertificateChainType->Certificate.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gCertificateChainType->Certificate.bytes, v2gCertificateChainType->Certificate.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 195; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 195: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SubCertificates), END_ELEMENT] */ + if ( v2gCertificateChainType->SubCertificates_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gSubCertificatesType(stream, &v2gCertificateChainType->SubCertificates ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureValueType', base type name='base64Binary', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +static int encode_v2gSignatureValueType(bitstream_t* stream, struct v2gSignatureValueType* v2gSignatureValueType) { + int grammarID = 196; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 196: + /* FirstStartTag[ATTRIBUTE[STRING](Id), CHARACTERS[BINARY_BASE64]] */ + if ( v2gSignatureValueType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSignatureValueType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gSignatureValueType->Id.characters, v2gSignatureValueType->Id.charactersLen); + } + } + grammarID = 143; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSignatureValueType->CONTENT.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gSignatureValueType->CONTENT.bytes, v2gSignatureValueType->CONTENT.bytesLen); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 143: + /* StartTag[CHARACTERS[BINARY_BASE64]] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSignatureValueType->CONTENT.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gSignatureValueType->CONTENT.bytes, v2gSignatureValueType->CONTENT.bytesLen); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EVPowerDeliveryParameterType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int encode_v2gEVPowerDeliveryParameterType(bitstream_t* stream, struct v2gEVPowerDeliveryParameterType* v2gEVPowerDeliveryParameterType) { + int grammarID = 81; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDetailReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ServiceID)', derivedBy='EXTENSION'. */ +static int encode_v2gServiceDetailReqType(bitstream_t* stream, struct v2gServiceDetailReqType* v2gServiceDetailReqType) { + int grammarID = 197; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 197: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, v2gServiceDetailReqType->ServiceID); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PaymentDetailsResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":GenChallenge,"urn:iso:15118:2:2013:MsgBody":EVSETimeStamp)', derivedBy='EXTENSION'. */ +static int encode_v2gPaymentDetailsResType(bitstream_t* stream, struct v2gPaymentDetailsResType* v2gPaymentDetailsResType) { + int grammarID = 198; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 198: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gPaymentDetailsResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 199; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 199: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}GenChallenge)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gPaymentDetailsResType->GenChallenge.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gPaymentDetailsResType->GenChallenge.bytes, v2gPaymentDetailsResType->GenChallenge.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 200; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 200: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSETimeStamp)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger64(stream, v2gPaymentDetailsResType->EVSETimeStamp); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509DataType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":X509IssuerSerial|"http://www.w3.org/2000/09/xmldsig#":X509SKI|"http://www.w3.org/2000/09/xmldsig#":X509SubjectName|"http://www.w3.org/2000/09/xmldsig#":X509Certificate|"http://www.w3.org/2000/09/xmldsig#":X509CRL|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int encode_v2gX509DataType(bitstream_t* stream, struct v2gX509DataType* v2gX509DataType) { + int grammarID = 201; + int done = 0; + + unsigned int v2gX509DataType_X509IssuerSerial_currArrayIndex = 0; + unsigned int v2gX509DataType_X509SKI_currArrayIndex = 0; + unsigned int v2gX509DataType_X509SubjectName_currArrayIndex = 0; + unsigned int v2gX509DataType_X509Certificate_currArrayIndex = 0; + unsigned int v2gX509DataType_X509CRL_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 201: + /* 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] */ + if (v2gX509DataType_X509IssuerSerial_currArrayIndex < v2gX509DataType->X509IssuerSerial.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gX509IssuerSerialType(stream, &v2gX509DataType->X509IssuerSerial.array [v2gX509DataType_X509IssuerSerial_currArrayIndex++]); + } + grammarID = 202; + } else if (v2gX509DataType_X509SKI_currArrayIndex < v2gX509DataType->X509SKI.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gX509DataType->X509SKI.array[v2gX509DataType_X509SKI_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gX509DataType->X509SKI.array[v2gX509DataType_X509SKI_currArrayIndex].bytes, v2gX509DataType->X509SKI.array[v2gX509DataType_X509SKI_currArrayIndex].bytesLen); + v2gX509DataType_X509SKI_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 202; + } else if (v2gX509DataType_X509SubjectName_currArrayIndex < v2gX509DataType->X509SubjectName.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gX509DataType->X509SubjectName.array[v2gX509DataType_X509SubjectName_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gX509DataType->X509SubjectName.array[v2gX509DataType_X509SubjectName_currArrayIndex].characters, v2gX509DataType->X509SubjectName.array[v2gX509DataType_X509SubjectName_currArrayIndex].charactersLen); + v2gX509DataType_X509SubjectName_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 202; + } else if (v2gX509DataType_X509Certificate_currArrayIndex < v2gX509DataType->X509Certificate.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gX509DataType->X509Certificate.array[v2gX509DataType_X509Certificate_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gX509DataType->X509Certificate.array[v2gX509DataType_X509Certificate_currArrayIndex].bytes, v2gX509DataType->X509Certificate.array[v2gX509DataType_X509Certificate_currArrayIndex].bytesLen); + v2gX509DataType_X509Certificate_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 202; + } else if (v2gX509DataType_X509CRL_currArrayIndex < v2gX509DataType->X509CRL.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gX509DataType->X509CRL.array[v2gX509DataType_X509CRL_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gX509DataType->X509CRL.array[v2gX509DataType_X509CRL_currArrayIndex].bytes, v2gX509DataType->X509CRL.array[v2gX509DataType_X509CRL_currArrayIndex].bytesLen); + v2gX509DataType_X509CRL_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 202; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 202; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 202: + /* 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] */ + if (v2gX509DataType_X509IssuerSerial_currArrayIndex < v2gX509DataType->X509IssuerSerial.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gX509IssuerSerialType(stream, &v2gX509DataType->X509IssuerSerial.array [v2gX509DataType_X509IssuerSerial_currArrayIndex++]); + } + grammarID = 202; + } else if (v2gX509DataType_X509SKI_currArrayIndex < v2gX509DataType->X509SKI.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gX509DataType->X509SKI.array[v2gX509DataType_X509SKI_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gX509DataType->X509SKI.array[v2gX509DataType_X509SKI_currArrayIndex].bytes, v2gX509DataType->X509SKI.array[v2gX509DataType_X509SKI_currArrayIndex].bytesLen); + v2gX509DataType_X509SKI_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 202; + } else if (v2gX509DataType_X509SubjectName_currArrayIndex < v2gX509DataType->X509SubjectName.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gX509DataType->X509SubjectName.array[v2gX509DataType_X509SubjectName_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gX509DataType->X509SubjectName.array[v2gX509DataType_X509SubjectName_currArrayIndex].characters, v2gX509DataType->X509SubjectName.array[v2gX509DataType_X509SubjectName_currArrayIndex].charactersLen); + v2gX509DataType_X509SubjectName_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 202; + } else if (v2gX509DataType_X509Certificate_currArrayIndex < v2gX509DataType->X509Certificate.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gX509DataType->X509Certificate.array[v2gX509DataType_X509Certificate_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gX509DataType->X509Certificate.array[v2gX509DataType_X509Certificate_currArrayIndex].bytes, v2gX509DataType->X509Certificate.array[v2gX509DataType_X509Certificate_currArrayIndex].bytesLen); + v2gX509DataType_X509Certificate_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 202; + } else if (v2gX509DataType_X509CRL_currArrayIndex < v2gX509DataType->X509CRL.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gX509DataType->X509CRL.array[v2gX509DataType_X509CRL_currArrayIndex].bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gX509DataType->X509CRL.array[v2gX509DataType_X509CRL_currArrayIndex].bytes, v2gX509DataType->X509CRL.array[v2gX509DataType_X509CRL_currArrayIndex].bytesLen); + v2gX509DataType_X509CRL_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 202; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 202; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 6); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,DSAKeyValueType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("http://www.w3.org/2000/09/xmldsig#":P,"http://www.w3.org/2000/09/xmldsig#":Q){0-1},"http://www.w3.org/2000/09/xmldsig#":G{0-1},"http://www.w3.org/2000/09/xmldsig#":Y,"http://www.w3.org/2000/09/xmldsig#":J{0-1},("http://www.w3.org/2000/09/xmldsig#":Seed,"http://www.w3.org/2000/09/xmldsig#":PgenCounter){0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gDSAKeyValueType(bitstream_t* stream, struct v2gDSAKeyValueType* v2gDSAKeyValueType) { + int grammarID = 203; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 203: + /* 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)] */ + if ( v2gDSAKeyValueType->P_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDSAKeyValueType->P.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDSAKeyValueType->P.bytes, v2gDSAKeyValueType->P.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 204; + } else if ( v2gDSAKeyValueType->G_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDSAKeyValueType->G.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDSAKeyValueType->G.bytes, v2gDSAKeyValueType->G.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 205; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDSAKeyValueType->Y.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDSAKeyValueType->Y.bytes, v2gDSAKeyValueType->Y.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 206; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 204: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q)] */ + if ( v2gDSAKeyValueType->Q_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDSAKeyValueType->Q.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDSAKeyValueType->Q.bytes, v2gDSAKeyValueType->Q.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 207; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 207: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + if ( v2gDSAKeyValueType->G_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDSAKeyValueType->G.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDSAKeyValueType->G.bytes, v2gDSAKeyValueType->G.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 205; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDSAKeyValueType->Y.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDSAKeyValueType->Y.bytes, v2gDSAKeyValueType->Y.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 206; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 205: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDSAKeyValueType->Y.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDSAKeyValueType->Y.bytes, v2gDSAKeyValueType->Y.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 206; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 206: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + if ( v2gDSAKeyValueType->J_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDSAKeyValueType->J.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDSAKeyValueType->J.bytes, v2gDSAKeyValueType->J.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 208; + } else if ( v2gDSAKeyValueType->Seed_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDSAKeyValueType->Seed.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDSAKeyValueType->Seed.bytes, v2gDSAKeyValueType->Seed.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 209; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 208: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */ + if ( v2gDSAKeyValueType->Seed_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDSAKeyValueType->Seed.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDSAKeyValueType->Seed.bytes, v2gDSAKeyValueType->Seed.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 209; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 209: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter)] */ + if ( v2gDSAKeyValueType->PgenCounter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gDSAKeyValueType->PgenCounter.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gDSAKeyValueType->PgenCounter.bytes, v2gDSAKeyValueType->PgenCounter.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PowerDeliveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgDataTypes":EVSEStatus)', derivedBy='EXTENSION'. */ +static int encode_v2gPowerDeliveryResType(bitstream_t* stream, struct v2gPowerDeliveryResType* v2gPowerDeliveryResType) { + int grammarID = 62; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 62: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gPowerDeliveryResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 63; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 63: + /* 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)] */ + if ( v2gPowerDeliveryResType->AC_EVSEStatus_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gAC_EVSEStatusType(stream, &v2gPowerDeliveryResType->AC_EVSEStatus ); + } + grammarID = 3; + } else if ( v2gPowerDeliveryResType->DC_EVSEStatus_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gDC_EVSEStatusType(stream, &v2gPowerDeliveryResType->DC_EVSEStatus ); + } + grammarID = 3; + } else if ( v2gPowerDeliveryResType->EVSEStatus_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encode_v2gEVSEStatusType(stream, &v2gPowerDeliveryResType->EVSEStatus ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ChargeParameterDiscoveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":MaxEntriesSAScheduleTuple{0-1},"urn:iso:15118:2:2013:MsgBody":RequestedEnergyTransferMode,"urn:iso:15118:2:2013:MsgDataTypes":EVChargeParameter)', derivedBy='EXTENSION'. */ +static int encode_v2gChargeParameterDiscoveryReqType(bitstream_t* stream, struct v2gChargeParameterDiscoveryReqType* v2gChargeParameterDiscoveryReqType) { + int grammarID = 210; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 210: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + if ( v2gChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, v2gChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 211; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, v2gChargeParameterDiscoveryReqType->RequestedEnergyTransferMode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 212; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 211: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 3, v2gChargeParameterDiscoveryReqType->RequestedEnergyTransferMode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 212; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 212: + /* 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)] */ + if ( v2gChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gAC_EVChargeParameterType(stream, &v2gChargeParameterDiscoveryReqType->AC_EVChargeParameter ); + } + grammarID = 3; + } else if ( v2gChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gDC_EVChargeParameterType(stream, &v2gChargeParameterDiscoveryReqType->DC_EVChargeParameter ); + } + grammarID = 3; + } else if ( v2gChargeParameterDiscoveryReqType->EVChargeParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encode_v2gEVChargeParameterType(stream, &v2gChargeParameterDiscoveryReqType->EVChargeParameter ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ParameterSetType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ParameterSetID,"urn:iso:15118:2:2013:MsgDataTypes":Parameter{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gParameterSetType(bitstream_t* stream, struct v2gParameterSetType* v2gParameterSetType) { + int grammarID = 213; + int done = 0; + + unsigned int v2gParameterSetType_Parameter_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 213: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger16(stream, v2gParameterSetType->ParameterSetID); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 214; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 214: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter)] */ + if (v2gParameterSetType_Parameter_currArrayIndex < v2gParameterSetType->Parameter.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gParameterType(stream, &v2gParameterSetType->Parameter.array [v2gParameterSetType_Parameter_currArrayIndex++]); + } + grammarID = 215; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 215: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Parameter), END_ELEMENT] */ + if (v2gParameterSetType_Parameter_currArrayIndex < v2gParameterSetType->Parameter.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gParameterType(stream, &v2gParameterSetType->Parameter.array [v2gParameterSetType_Parameter_currArrayIndex++]); + } + grammarID = 215; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,ServiceDiscoveryResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":PaymentOptionList,"urn:iso:15118:2:2013:MsgBody":ChargeService,"urn:iso:15118:2:2013:MsgBody":ServiceList{0-1})', derivedBy='EXTENSION'. */ +static int encode_v2gServiceDiscoveryResType(bitstream_t* stream, struct v2gServiceDiscoveryResType* v2gServiceDiscoveryResType) { + int grammarID = 216; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 216: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gServiceDiscoveryResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 217; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 217: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentOptionList)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPaymentOptionListType(stream, &v2gServiceDiscoveryResType->PaymentOptionList ); + } + grammarID = 218; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeService)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gChargeServiceType(stream, &v2gServiceDiscoveryResType->ChargeService ); + } + grammarID = 219; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 219: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceList), END_ELEMENT] */ + if ( v2gServiceDiscoveryResType->ServiceList_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gServiceListType(stream, &v2gServiceDiscoveryResType->ServiceList ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDef,#AnonType_V2G_Message', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDef":Header,"urn:iso:15118:2:2013:MsgDef":Body)', derivedBy='RESTRICTION'. */ +static int encode_v2gAnonType_V2G_Message(bitstream_t* stream, struct v2gAnonType_V2G_Message* v2gAnonType_V2G_Message) { + int grammarID = 220; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 220: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Header)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gMessageHeaderType(stream, &v2gAnonType_V2G_Message->Header ); + } + grammarID = 221; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 221: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDef}Body)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gBodyType(stream, &v2gAnonType_V2G_Message->Body ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SignedInfo,"http://www.w3.org/2000/09/xmldsig#":SignatureValue,"http://www.w3.org/2000/09/xmldsig#":KeyInfo{0-1},"http://www.w3.org/2000/09/xmldsig#":Object{0-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gSignatureType(bitstream_t* stream, struct v2gSignatureType* v2gSignatureType) { + int grammarID = 222; + int done = 0; + + unsigned int v2gSignatureType_Object_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 222: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + if ( v2gSignatureType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSignatureType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gSignatureType->Id.characters, v2gSignatureType->Id.charactersLen); + } + } + grammarID = 223; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gSignedInfoType(stream, &v2gSignatureType->SignedInfo ); + } + grammarID = 224; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 223: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gSignedInfoType(stream, &v2gSignatureType->SignedInfo ); + } + grammarID = 224; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 224: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gSignatureValueType(stream, &v2gSignatureType->SignatureValue ); + } + grammarID = 225; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 225: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + if ( v2gSignatureType->KeyInfo_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gKeyInfoType(stream, &v2gSignatureType->KeyInfo ); + } + grammarID = 226; + } else if (v2gSignatureType_Object_currArrayIndex < v2gSignatureType->Object.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gObjectType(stream, &v2gSignatureType->Object.array [v2gSignatureType_Object_currArrayIndex++]); + } + grammarID = 226; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 226: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */ + if (v2gSignatureType_Object_currArrayIndex < v2gSignatureType->Object.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gObjectType(stream, &v2gSignatureType->Object.array [v2gSignatureType_Object_currArrayIndex++]); + } + grammarID = 226; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,EMAIDType', base type name='eMAIDType', content type='SIMPLE', isAbstract='false', hasTypeId='false', final='0', block='0', derivedBy='EXTENSION'. */ +static int encode_v2gEMAIDType(bitstream_t* stream, struct v2gEMAIDType* v2gEMAIDType) { + int grammarID = 227; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 227: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgDataTypes}Id)] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gEMAIDType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gEMAIDType->Id.characters, v2gEMAIDType->Id.charactersLen); + } + } + grammarID = 228; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 228: + /* StartTag[CHARACTERS[STRING]] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gEMAIDType->CONTENT.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gEMAIDType->CONTENT.characters, v2gEMAIDType->CONTENT.charactersLen); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateInstallationResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2013:MsgBody":DHpublickey,"urn:iso:15118:2:2013:MsgBody":eMAID)', derivedBy='EXTENSION'. */ +static int encode_v2gCertificateInstallationResType(bitstream_t* stream, struct v2gCertificateInstallationResType* v2gCertificateInstallationResType) { + int grammarID = 229; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 229: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gCertificateInstallationResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 230; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 230: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gCertificateChainType(stream, &v2gCertificateInstallationResType->SAProvisioningCertificateChain ); + } + grammarID = 231; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 231: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gCertificateChainType(stream, &v2gCertificateInstallationResType->ContractSignatureCertChain ); + } + grammarID = 232; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 232: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gContractSignatureEncryptedPrivateKeyType(stream, &v2gCertificateInstallationResType->ContractSignatureEncryptedPrivateKey ); + } + grammarID = 233; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 233: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDiffieHellmanPublickeyType(stream, &v2gCertificateInstallationResType->DHpublickey ); + } + grammarID = 234; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 234: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gEMAIDType(stream, &v2gCertificateInstallationResType->eMAID ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CableCheckResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEProcessing)', derivedBy='EXTENSION'. */ +static int encode_v2gCableCheckResType(bitstream_t* stream, struct v2gCableCheckResType* v2gCableCheckResType) { + int grammarID = 235; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 235: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gCableCheckResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 236; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 236: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDC_EVSEStatusType(stream, &v2gCableCheckResType->DC_EVSEStatus ); + } + grammarID = 9; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 9: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEProcessing)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gCableCheckResType->EVSEProcessing); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,MeterInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":MeterID,"urn:iso:15118:2:2013:MsgDataTypes":MeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":SigMeterReading{0-1},"urn:iso:15118:2:2013:MsgDataTypes":MeterStatus{0-1},"urn:iso:15118:2:2013:MsgDataTypes":TMeter{0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gMeterInfoType(bitstream_t* stream, struct v2gMeterInfoType* v2gMeterInfoType) { + int grammarID = 237; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 237: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gMeterInfoType->MeterID.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gMeterInfoType->MeterID.characters, v2gMeterInfoType->MeterID.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 238; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 238: + /* 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] */ + if ( v2gMeterInfoType->MeterReading_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger64(stream, v2gMeterInfoType->MeterReading); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 239; + } else if ( v2gMeterInfoType->SigMeterReading_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gMeterInfoType->SigMeterReading.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gMeterInfoType->SigMeterReading.bytes, v2gMeterInfoType->SigMeterReading.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 240; + } else if ( v2gMeterInfoType->MeterStatus_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger16(stream, v2gMeterInfoType->MeterStatus); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 241; + } else if ( v2gMeterInfoType->TMeter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger64(stream, v2gMeterInfoType->TMeter); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 239: + /* 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] */ + if ( v2gMeterInfoType->SigMeterReading_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gMeterInfoType->SigMeterReading.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gMeterInfoType->SigMeterReading.bytes, v2gMeterInfoType->SigMeterReading.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 240; + } else if ( v2gMeterInfoType->MeterStatus_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger16(stream, v2gMeterInfoType->MeterStatus); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 241; + } else if ( v2gMeterInfoType->TMeter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger64(stream, v2gMeterInfoType->TMeter); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 240: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + if ( v2gMeterInfoType->MeterStatus_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger16(stream, v2gMeterInfoType->MeterStatus); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 241; + } else if ( v2gMeterInfoType->TMeter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger64(stream, v2gMeterInfoType->TMeter); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 241: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TMeter), END_ELEMENT] */ + if ( v2gMeterInfoType->TMeter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger64(stream, v2gMeterInfoType->TMeter); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,AC_EVChargeParameterType', base type name='EVChargeParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":DepartureTime{0-1}),("urn:iso:15118:2:2013:MsgDataTypes":EAmount,"urn:iso:15118:2:2013:MsgDataTypes":EVMaxVoltage,"urn:iso:15118:2:2013:MsgDataTypes":EVMaxCurrent,"urn:iso:15118:2:2013:MsgDataTypes":EVMinCurrent))', derivedBy='EXTENSION'. */ +static int encode_v2gAC_EVChargeParameterType(bitstream_t* stream, struct v2gAC_EVChargeParameterType* v2gAC_EVChargeParameterType) { + int grammarID = 242; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 242: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DepartureTime), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + if ( v2gAC_EVChargeParameterType->DepartureTime_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, v2gAC_EVChargeParameterType->DepartureTime); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 243; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gAC_EVChargeParameterType->EAmount ); + } + grammarID = 244; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 243: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EAmount)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gAC_EVChargeParameterType->EAmount ); + } + grammarID = 244; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 244: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gAC_EVChargeParameterType->EVMaxVoltage ); + } + grammarID = 245; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 245: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gAC_EVChargeParameterType->EVMaxCurrent ); + } + grammarID = 246; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 246: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gAC_EVChargeParameterType->EVMinCurrent ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceParameterListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ParameterSet{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gServiceParameterListType(bitstream_t* stream, struct v2gServiceParameterListType* v2gServiceParameterListType) { + int grammarID = 247; + int done = 0; + + unsigned int v2gServiceParameterListType_ParameterSet_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 247: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet)] */ + if (v2gServiceParameterListType_ParameterSet_currArrayIndex < v2gServiceParameterListType->ParameterSet.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gParameterSetType(stream, &v2gServiceParameterListType->ParameterSet.array [v2gServiceParameterListType_ParameterSet_currArrayIndex++]); + } + grammarID = 248; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ParameterSet), END_ELEMENT] */ + if (v2gServiceParameterListType_ParameterSet_currArrayIndex < v2gServiceParameterListType->ParameterSet.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gParameterSetType(stream, &v2gServiceParameterListType->ParameterSet.array [v2gServiceParameterListType_ParameterSet_currArrayIndex++]); + } + grammarID = 248; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CurrentDemandReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus,"urn:iso:15118:2:2013:MsgBody":EVTargetCurrent,"urn:iso:15118:2:2013:MsgBody":EVMaximumVoltageLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVMaximumCurrentLimit{0-1},"urn:iso:15118:2:2013:MsgBody":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2013:MsgBody":BulkChargingComplete{0-1},"urn:iso:15118:2:2013:MsgBody":ChargingComplete,"urn:iso:15118:2:2013:MsgBody":RemainingTimeToFullSoC{0-1},"urn:iso:15118:2:2013:MsgBody":RemainingTimeToBulkSoC{0-1},"urn:iso:15118:2:2013:MsgBody":EVTargetVoltage)', derivedBy='EXTENSION'. */ +static int encode_v2gCurrentDemandReqType(bitstream_t* stream, struct v2gCurrentDemandReqType* v2gCurrentDemandReqType) { + int grammarID = 249; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 249: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDC_EVStatusType(stream, &v2gCurrentDemandReqType->DC_EVStatus ); + } + grammarID = 250; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 250: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVTargetCurrent ); + } + grammarID = 251; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 251: + /* 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)] */ + if ( v2gCurrentDemandReqType->EVMaximumVoltageLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumVoltageLimit ); + } + grammarID = 252; + } else if ( v2gCurrentDemandReqType->EVMaximumCurrentLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumCurrentLimit ); + } + grammarID = 253; + } else if ( v2gCurrentDemandReqType->EVMaximumPowerLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumPowerLimit ); + } + grammarID = 254; + } else if ( v2gCurrentDemandReqType->BulkChargingComplete_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandReqType->BulkChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 255; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandReqType->ChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 256; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 252: + /* 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)] */ + if ( v2gCurrentDemandReqType->EVMaximumCurrentLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumCurrentLimit ); + } + grammarID = 253; + } else if ( v2gCurrentDemandReqType->EVMaximumPowerLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumPowerLimit ); + } + grammarID = 254; + } else if ( v2gCurrentDemandReqType->BulkChargingComplete_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandReqType->BulkChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 255; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandReqType->ChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 256; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 253: + /* 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)] */ + if ( v2gCurrentDemandReqType->EVMaximumPowerLimit_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVMaximumPowerLimit ); + } + grammarID = 254; + } else if ( v2gCurrentDemandReqType->BulkChargingComplete_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandReqType->BulkChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 255; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandReqType->ChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 256; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 254: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + if ( v2gCurrentDemandReqType->BulkChargingComplete_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandReqType->BulkChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 255; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandReqType->ChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 256; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 255: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingComplete)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gCurrentDemandReqType->ChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 256; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 256: + /* 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)] */ + if ( v2gCurrentDemandReqType->RemainingTimeToFullSoC_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->RemainingTimeToFullSoC ); + } + grammarID = 257; + } else if ( v2gCurrentDemandReqType->RemainingTimeToBulkSoC_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->RemainingTimeToBulkSoC ); + } + grammarID = 258; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVTargetVoltage ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 257: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + if ( v2gCurrentDemandReqType->RemainingTimeToBulkSoC_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->RemainingTimeToBulkSoC ); + } + grammarID = 258; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVTargetVoltage ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 258: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gCurrentDemandReqType->EVTargetVoltage ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SASchedulesType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int encode_v2gSASchedulesType(bitstream_t* stream, struct v2gSASchedulesType* v2gSASchedulesType) { + int grammarID = 81; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,IntervalType', base type name='anyType', content type='EMPTY', isAbstract='true', hasTypeId='false', final='0', block='0', derivedBy='RESTRICTION'. */ +static int encode_v2gIntervalType(bitstream_t* stream, struct v2gIntervalType* v2gIntervalType) { + int grammarID = 81; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 81: + /* FirstStartTag[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PreChargeResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2013:MsgBody":EVSEPresentVoltage)', derivedBy='EXTENSION'. */ +static int encode_v2gPreChargeResType(bitstream_t* stream, struct v2gPreChargeResType* v2gPreChargeResType) { + int grammarID = 100; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 100: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gPreChargeResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 101; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 101: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDC_EVSEStatusType(stream, &v2gPreChargeResType->DC_EVSEStatus ); + } + grammarID = 102; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 102: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gPreChargeResType->EVSEPresentVoltage ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SalesTariffEntryType', base type name='EntryType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='(("urn:iso:15118:2:2013:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2013:MsgDataTypes":EPriceLevel{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ConsumptionCost{0-3}))', derivedBy='EXTENSION'. */ +static int encode_v2gSalesTariffEntryType(bitstream_t* stream, struct v2gSalesTariffEntryType* v2gSalesTariffEntryType) { + int grammarID = 259; + int done = 0; + + unsigned int v2gSalesTariffEntryType_ConsumptionCost_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 259: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval)] */ + if ( v2gSalesTariffEntryType->RelativeTimeInterval_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gRelativeTimeIntervalType(stream, &v2gSalesTariffEntryType->RelativeTimeInterval ); + } + grammarID = 260; + } else if ( v2gSalesTariffEntryType->TimeInterval_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gIntervalType(stream, &v2gSalesTariffEntryType->TimeInterval ); + } + grammarID = 260; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 260: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + if ( v2gSalesTariffEntryType->EPriceLevel_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(v2gSalesTariffEntryType->EPriceLevel - 0)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 261; + } else if (v2gSalesTariffEntryType_ConsumptionCost_currArrayIndex < v2gSalesTariffEntryType->ConsumptionCost.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gConsumptionCostType(stream, &v2gSalesTariffEntryType->ConsumptionCost.array [v2gSalesTariffEntryType_ConsumptionCost_currArrayIndex++]); + } + grammarID = 262; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 261: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + if (v2gSalesTariffEntryType_ConsumptionCost_currArrayIndex < v2gSalesTariffEntryType->ConsumptionCost.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gConsumptionCostType(stream, &v2gSalesTariffEntryType->ConsumptionCost.array [v2gSalesTariffEntryType_ConsumptionCost_currArrayIndex++]); + } + grammarID = 262; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 262: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + if (v2gSalesTariffEntryType_ConsumptionCost_currArrayIndex < v2gSalesTariffEntryType->ConsumptionCost.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gConsumptionCostType(stream, &v2gSalesTariffEntryType->ConsumptionCost.array [v2gSalesTariffEntryType_ConsumptionCost_currArrayIndex++]); + } + grammarID = 263; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 263: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost), END_ELEMENT] */ + if (v2gSalesTariffEntryType_ConsumptionCost_currArrayIndex < v2gSalesTariffEntryType->ConsumptionCost.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gConsumptionCostType(stream, &v2gSalesTariffEntryType->ConsumptionCost.array [v2gSalesTariffEntryType_ConsumptionCost_currArrayIndex++]); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,PaymentOptionListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":PaymentOption{1-2})', derivedBy='RESTRICTION'. */ +static int encode_v2gPaymentOptionListType(bitstream_t* stream, struct v2gPaymentOptionListType* v2gPaymentOptionListType) { + int grammarID = 264; + int done = 0; + + unsigned int v2gPaymentOptionListType_PaymentOption_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 264: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption)] */ + if (v2gPaymentOptionListType_PaymentOption_currArrayIndex < v2gPaymentOptionListType->PaymentOption.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, v2gPaymentOptionListType->PaymentOption.array[v2gPaymentOptionListType_PaymentOption_currArrayIndex++]); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 265; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 265: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PaymentOption), END_ELEMENT] */ + if (v2gPaymentOptionListType_PaymentOption_currArrayIndex < v2gPaymentOptionListType->PaymentOption.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 1, v2gPaymentOptionListType->PaymentOption.array[v2gPaymentOptionListType_PaymentOption_currArrayIndex++]); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignedInfoType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":CanonicalizationMethod,"http://www.w3.org/2000/09/xmldsig#":SignatureMethod,"http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gSignedInfoType(bitstream_t* stream, struct v2gSignedInfoType* v2gSignedInfoType) { + int grammarID = 266; + int done = 0; + + unsigned int v2gSignedInfoType_Reference_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 266: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + if ( v2gSignedInfoType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSignedInfoType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gSignedInfoType->Id.characters, v2gSignedInfoType->Id.charactersLen); + } + } + grammarID = 267; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gCanonicalizationMethodType(stream, &v2gSignedInfoType->CanonicalizationMethod ); + } + grammarID = 268; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 267: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gCanonicalizationMethodType(stream, &v2gSignedInfoType->CanonicalizationMethod ); + } + grammarID = 268; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 268: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gSignatureMethodType(stream, &v2gSignedInfoType->SignatureMethod ); + } + grammarID = 269; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 269: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */ + if (v2gSignedInfoType_Reference_currArrayIndex < v2gSignedInfoType->Reference.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gReferenceType(stream, &v2gSignedInfoType->Reference.array [v2gSignedInfoType_Reference_currArrayIndex++]); + } + grammarID = 84; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 84: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */ + if (v2gSignedInfoType_Reference_currArrayIndex < v2gSignedInfoType->Reference.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gReferenceType(stream, &v2gSignedInfoType->Reference.array [v2gSignedInfoType_Reference_currArrayIndex++]); + } + grammarID = 84; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,SessionSetupReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":EVCCID)', derivedBy='EXTENSION'. */ +static int encode_v2gSessionSetupReqType(bitstream_t* stream, struct v2gSessionSetupReqType* v2gSessionSetupReqType) { + int grammarID = 270; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 270: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVCCID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSessionSetupReqType->EVCCID.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gSessionSetupReqType->EVCCID.bytes, v2gSessionSetupReqType->EVCCID.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertiesType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":SignatureProperty{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gSignaturePropertiesType(bitstream_t* stream, struct v2gSignaturePropertiesType* v2gSignaturePropertiesType) { + int grammarID = 271; + int done = 0; + + unsigned int v2gSignaturePropertiesType_SignatureProperty_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 271: + /* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + if ( v2gSignaturePropertiesType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gSignaturePropertiesType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gSignaturePropertiesType->Id.characters, v2gSignaturePropertiesType->Id.charactersLen); + } + } + grammarID = 272; + } else if (v2gSignaturePropertiesType_SignatureProperty_currArrayIndex < v2gSignaturePropertiesType->SignatureProperty.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gSignaturePropertyType(stream, &v2gSignaturePropertiesType->SignatureProperty.array [v2gSignaturePropertiesType_SignatureProperty_currArrayIndex++]); + } + grammarID = 273; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 272: + /* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */ + if (v2gSignaturePropertiesType_SignatureProperty_currArrayIndex < v2gSignaturePropertiesType->SignatureProperty.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gSignaturePropertyType(stream, &v2gSignaturePropertiesType->SignatureProperty.array [v2gSignaturePropertiesType_SignatureProperty_currArrayIndex++]); + } + grammarID = 273; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 273: + /* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] */ + if (v2gSignaturePropertiesType_SignatureProperty_currArrayIndex < v2gSignaturePropertiesType->SignatureProperty.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gSignaturePropertyType(stream, &v2gSignaturePropertiesType->SignatureProperty.array [v2gSignaturePropertiesType_SignatureProperty_currArrayIndex++]); + } + grammarID = 273; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ProfileEntryType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryStart,"urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxPower,"urn:iso:15118:2:2013:MsgDataTypes":ChargingProfileEntryMaxNumberOfPhasesInUse{0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gProfileEntryType(bitstream_t* stream, struct v2gProfileEntryType* v2gProfileEntryType) { + int grammarID = 274; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 274: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, v2gProfileEntryType->ChargingProfileEntryStart); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 275; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 275: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gProfileEntryType->ChargingProfileEntryMaxPower ); + } + grammarID = 276; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 276: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse), END_ELEMENT] */ + if ( v2gProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, (uint32_t)(v2gProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse - 1)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PreChargeReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":DC_EVStatus,"urn:iso:15118:2:2013:MsgBody":EVTargetVoltage,"urn:iso:15118:2:2013:MsgBody":EVTargetCurrent)', derivedBy='EXTENSION'. */ +static int encode_v2gPreChargeReqType(bitstream_t* stream, struct v2gPreChargeReqType* v2gPreChargeReqType) { + int grammarID = 277; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 277: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DC_EVStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDC_EVStatusType(stream, &v2gPreChargeReqType->DC_EVStatus ); + } + grammarID = 278; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 278: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetVoltage)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gPreChargeReqType->EVTargetVoltage ); + } + grammarID = 279; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 279: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}EVTargetCurrent)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gPhysicalValueType(stream, &v2gPreChargeReqType->EVTargetCurrent ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ListOfRootCertificateIDsType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":RootCertificateID{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gListOfRootCertificateIDsType(bitstream_t* stream, struct v2gListOfRootCertificateIDsType* v2gListOfRootCertificateIDsType) { + int grammarID = 280; + int done = 0; + + unsigned int v2gListOfRootCertificateIDsType_RootCertificateID_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 280: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID)] */ + if (v2gListOfRootCertificateIDsType_RootCertificateID_currArrayIndex < v2gListOfRootCertificateIDsType->RootCertificateID.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gX509IssuerSerialType(stream, &v2gListOfRootCertificateIDsType->RootCertificateID.array [v2gListOfRootCertificateIDsType_RootCertificateID_currArrayIndex++]); + } + grammarID = 281; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 281: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID), END_ELEMENT] */ + if (v2gListOfRootCertificateIDsType_RootCertificateID_currArrayIndex < v2gListOfRootCertificateIDsType->RootCertificateID.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gX509IssuerSerialType(stream, &v2gListOfRootCertificateIDsType->RootCertificateID.array [v2gListOfRootCertificateIDsType_RootCertificateID_currArrayIndex++]); + } + grammarID = 281; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,DC_EVPowerDeliveryParameterType', base type name='EVPowerDeliveryParameterType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2013:MsgDataTypes":BulkChargingComplete{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ChargingComplete)', derivedBy='EXTENSION'. */ +static int encode_v2gDC_EVPowerDeliveryParameterType(bitstream_t* stream, struct v2gDC_EVPowerDeliveryParameterType* v2gDC_EVPowerDeliveryParameterType) { + int grammarID = 282; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 282: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDC_EVStatusType(stream, &v2gDC_EVPowerDeliveryParameterType->DC_EVStatus ); + } + grammarID = 283; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 283: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + if ( v2gDC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gDC_EVPowerDeliveryParameterType->BulkChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 284; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gDC_EVPowerDeliveryParameterType->ChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 284: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gDC_EVPowerDeliveryParameterType->ChargingComplete); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,RelativeTimeIntervalType', base type name='IntervalType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":start,"urn:iso:15118:2:2013:MsgDataTypes":duration{0-1})', derivedBy='EXTENSION'. */ +static int encode_v2gRelativeTimeIntervalType(bitstream_t* stream, struct v2gRelativeTimeIntervalType* v2gRelativeTimeIntervalType) { + int grammarID = 285; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 285: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}start)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, v2gRelativeTimeIntervalType->start); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 286; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 286: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}duration), END_ELEMENT] */ + if ( v2gRelativeTimeIntervalType->duration_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger32(stream, v2gRelativeTimeIntervalType->duration); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ChargingProfileType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ProfileEntry{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gChargingProfileType(bitstream_t* stream, struct v2gChargingProfileType* v2gChargingProfileType) { + int grammarID = 287; + int done = 0; + + unsigned int v2gChargingProfileType_ProfileEntry_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 287: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry)] */ + if (v2gChargingProfileType_ProfileEntry_currArrayIndex < v2gChargingProfileType->ProfileEntry.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gProfileEntryType(stream, &v2gChargingProfileType->ProfileEntry.array [v2gChargingProfileType_ProfileEntry_currArrayIndex++]); + } + grammarID = 288; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 288: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry), END_ELEMENT] */ + if (v2gChargingProfileType_ProfileEntry_currArrayIndex < v2gChargingProfileType->ProfileEntry.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gProfileEntryType(stream, &v2gChargingProfileType->ProfileEntry.array [v2gChargingProfileType_ProfileEntry_currArrayIndex++]); + } + grammarID = 288; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,CertificateUpdateResType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ResponseCode,"urn:iso:15118:2:2013:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2013:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2013:MsgBody":DHpublickey,"urn:iso:15118:2:2013:MsgBody":eMAID,"urn:iso:15118:2:2013:MsgBody":RetryCounter{0-1})', derivedBy='EXTENSION'. */ +static int encode_v2gCertificateUpdateResType(bitstream_t* stream, struct v2gCertificateUpdateResType* v2gCertificateUpdateResType) { + int grammarID = 289; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 289: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ResponseCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 5, v2gCertificateUpdateResType->ResponseCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 290; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 290: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gCertificateChainType(stream, &v2gCertificateUpdateResType->SAProvisioningCertificateChain ); + } + grammarID = 291; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 291: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gCertificateChainType(stream, &v2gCertificateUpdateResType->ContractSignatureCertChain ); + } + grammarID = 292; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 292: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gContractSignatureEncryptedPrivateKeyType(stream, &v2gCertificateUpdateResType->ContractSignatureEncryptedPrivateKey ); + } + grammarID = 293; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 293: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}DHpublickey)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gDiffieHellmanPublickeyType(stream, &v2gCertificateUpdateResType->DHpublickey ); + } + grammarID = 294; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 294: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}eMAID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gEMAIDType(stream, &v2gCertificateUpdateResType->eMAID ); + } + grammarID = 295; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 295: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}RetryCounter), END_ELEMENT] */ + if ( v2gCertificateUpdateResType->RetryCounter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeInteger16(stream, v2gCertificateUpdateResType->RetryCounter); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,MeteringReceiptReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":SessionID,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2013:MsgBody":MeterInfo)', derivedBy='EXTENSION'. */ +static int encode_v2gMeteringReceiptReqType(bitstream_t* stream, struct v2gMeteringReceiptReqType* v2gMeteringReceiptReqType) { + int grammarID = 296; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 296: + /* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2013:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + if ( v2gMeteringReceiptReqType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gMeteringReceiptReqType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gMeteringReceiptReqType->Id.characters, v2gMeteringReceiptReqType->Id.charactersLen); + } + } + grammarID = 297; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gMeteringReceiptReqType->SessionID.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gMeteringReceiptReqType->SessionID.bytes, v2gMeteringReceiptReqType->SessionID.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 298; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 297: + /* StartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_HEX]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gMeteringReceiptReqType->SessionID.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, v2gMeteringReceiptReqType->SessionID.bytes, v2gMeteringReceiptReqType->SessionID.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 298; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 298: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + if ( v2gMeteringReceiptReqType->SAScheduleTupleID_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(v2gMeteringReceiptReqType->SAScheduleTupleID - 1)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 299; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gMeterInfoType(stream, &v2gMeteringReceiptReqType->MeterInfo ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 299: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeterInfo)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gMeterInfoType(stream, &v2gMeteringReceiptReqType->MeterInfo ); + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,ServiceType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":ServiceID,"urn:iso:15118:2:2013:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2013:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2013:MsgDataTypes":ServiceScope{0-1},"urn:iso:15118:2:2013:MsgDataTypes":FreeService)', derivedBy='RESTRICTION'. */ +static int encode_v2gServiceType(bitstream_t* stream, struct v2gServiceType* v2gServiceType) { + int grammarID = 300; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 300: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, v2gServiceType->ServiceID); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 301; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 301: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + if ( v2gServiceType->ServiceName_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gServiceType->ServiceName.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gServiceType->ServiceName.characters, v2gServiceType->ServiceName.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 302; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gServiceType->ServiceCategory); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 303; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 302: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gServiceType->ServiceCategory); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 303; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 303: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + if ( v2gServiceType->ServiceScope_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gServiceType->ServiceScope.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gServiceType->ServiceScope.characters, v2gServiceType->ServiceScope.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 304; + } else if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gServiceType->FreeService); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 304: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FreeService)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BOOLEAN]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeBoolean(stream, v2gServiceType->FreeService); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,NotificationType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":FaultCode,"urn:iso:15118:2:2013:MsgDataTypes":FaultMsg{0-1})', derivedBy='RESTRICTION'. */ +static int encode_v2gNotificationType(bitstream_t* stream, struct v2gNotificationType* v2gNotificationType) { + int grammarID = 305; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 305: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultCode)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gNotificationType->FaultCode); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 306; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 306: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}FaultMsg), END_ELEMENT] */ + if ( v2gNotificationType->FaultMsg_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gNotificationType->FaultMsg.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gNotificationType->FaultMsg.characters, v2gNotificationType->FaultMsg.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyInfoType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("http://www.w3.org/2000/09/xmldsig#":KeyName|"http://www.w3.org/2000/09/xmldsig#":KeyValue|"http://www.w3.org/2000/09/xmldsig#":RetrievalMethod|"http://www.w3.org/2000/09/xmldsig#":X509Data|"http://www.w3.org/2000/09/xmldsig#":PGPData|"http://www.w3.org/2000/09/xmldsig#":SPKIData|"http://www.w3.org/2000/09/xmldsig#":MgmtData|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int encode_v2gKeyInfoType(bitstream_t* stream, struct v2gKeyInfoType* v2gKeyInfoType) { + int grammarID = 307; + int done = 0; + + unsigned int v2gKeyInfoType_KeyName_currArrayIndex = 0; + unsigned int v2gKeyInfoType_KeyValue_currArrayIndex = 0; + unsigned int v2gKeyInfoType_RetrievalMethod_currArrayIndex = 0; + unsigned int v2gKeyInfoType_X509Data_currArrayIndex = 0; + unsigned int v2gKeyInfoType_PGPData_currArrayIndex = 0; + unsigned int v2gKeyInfoType_SPKIData_currArrayIndex = 0; + unsigned int v2gKeyInfoType_MgmtData_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 307: + /* 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 ( v2gKeyInfoType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 4, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gKeyInfoType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gKeyInfoType->Id.characters, v2gKeyInfoType->Id.charactersLen); + } + } + grammarID = 308; + } else if (v2gKeyInfoType_KeyName_currArrayIndex < v2gKeyInfoType->KeyName.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 1); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].characters, v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].charactersLen); + v2gKeyInfoType_KeyName_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 309; + } else if (v2gKeyInfoType_KeyValue_currArrayIndex < v2gKeyInfoType->KeyValue.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 2); + if(errn == 0) { + errn = encode_v2gKeyValueType(stream, &v2gKeyInfoType->KeyValue.array [v2gKeyInfoType_KeyValue_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_RetrievalMethod_currArrayIndex < v2gKeyInfoType->RetrievalMethod.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 3); + if(errn == 0) { + errn = encode_v2gRetrievalMethodType(stream, &v2gKeyInfoType->RetrievalMethod.array [v2gKeyInfoType_RetrievalMethod_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_X509Data_currArrayIndex < v2gKeyInfoType->X509Data.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 4); + if(errn == 0) { + errn = encode_v2gX509DataType(stream, &v2gKeyInfoType->X509Data.array [v2gKeyInfoType_X509Data_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_PGPData_currArrayIndex < v2gKeyInfoType->PGPData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 5); + if(errn == 0) { + errn = encode_v2gPGPDataType(stream, &v2gKeyInfoType->PGPData.array [v2gKeyInfoType_PGPData_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_SPKIData_currArrayIndex < v2gKeyInfoType->SPKIData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 6); + if(errn == 0) { + errn = encode_v2gSPKIDataType(stream, &v2gKeyInfoType->SPKIData.array [v2gKeyInfoType_SPKIData_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_MgmtData_currArrayIndex < v2gKeyInfoType->MgmtData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 7); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].characters, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].charactersLen); + v2gKeyInfoType_MgmtData_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 309; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 309; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 310; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 308: + /* 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 (v2gKeyInfoType_KeyName_currArrayIndex < v2gKeyInfoType->KeyName.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].characters, v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].charactersLen); + v2gKeyInfoType_KeyName_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 309; + } else if (v2gKeyInfoType_KeyValue_currArrayIndex < v2gKeyInfoType->KeyValue.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 1); + if(errn == 0) { + errn = encode_v2gKeyValueType(stream, &v2gKeyInfoType->KeyValue.array [v2gKeyInfoType_KeyValue_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_RetrievalMethod_currArrayIndex < v2gKeyInfoType->RetrievalMethod.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 2); + if(errn == 0) { + errn = encode_v2gRetrievalMethodType(stream, &v2gKeyInfoType->RetrievalMethod.array [v2gKeyInfoType_RetrievalMethod_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_X509Data_currArrayIndex < v2gKeyInfoType->X509Data.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 3); + if(errn == 0) { + errn = encode_v2gX509DataType(stream, &v2gKeyInfoType->X509Data.array [v2gKeyInfoType_X509Data_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_PGPData_currArrayIndex < v2gKeyInfoType->PGPData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 4); + if(errn == 0) { + errn = encode_v2gPGPDataType(stream, &v2gKeyInfoType->PGPData.array [v2gKeyInfoType_PGPData_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_SPKIData_currArrayIndex < v2gKeyInfoType->SPKIData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 5); + if(errn == 0) { + errn = encode_v2gSPKIDataType(stream, &v2gKeyInfoType->SPKIData.array [v2gKeyInfoType_SPKIData_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_MgmtData_currArrayIndex < v2gKeyInfoType->MgmtData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 6); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].characters, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].charactersLen); + v2gKeyInfoType_MgmtData_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 309; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 309; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 310; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 309: + /* 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 (v2gKeyInfoType_KeyName_currArrayIndex < v2gKeyInfoType->KeyName.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].characters, v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].charactersLen); + v2gKeyInfoType_KeyName_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 309; + } else if (v2gKeyInfoType_KeyValue_currArrayIndex < v2gKeyInfoType->KeyValue.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 1); + if(errn == 0) { + errn = encode_v2gKeyValueType(stream, &v2gKeyInfoType->KeyValue.array [v2gKeyInfoType_KeyValue_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_RetrievalMethod_currArrayIndex < v2gKeyInfoType->RetrievalMethod.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 2); + if(errn == 0) { + errn = encode_v2gRetrievalMethodType(stream, &v2gKeyInfoType->RetrievalMethod.array [v2gKeyInfoType_RetrievalMethod_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_X509Data_currArrayIndex < v2gKeyInfoType->X509Data.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 3); + if(errn == 0) { + errn = encode_v2gX509DataType(stream, &v2gKeyInfoType->X509Data.array [v2gKeyInfoType_X509Data_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_PGPData_currArrayIndex < v2gKeyInfoType->PGPData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 4); + if(errn == 0) { + errn = encode_v2gPGPDataType(stream, &v2gKeyInfoType->PGPData.array [v2gKeyInfoType_PGPData_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_SPKIData_currArrayIndex < v2gKeyInfoType->SPKIData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 5); + if(errn == 0) { + errn = encode_v2gSPKIDataType(stream, &v2gKeyInfoType->SPKIData.array [v2gKeyInfoType_SPKIData_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_MgmtData_currArrayIndex < v2gKeyInfoType->MgmtData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 6); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].characters, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].charactersLen); + v2gKeyInfoType_MgmtData_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 309; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 309; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 4, 8); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 309; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 310: + /* 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 (v2gKeyInfoType_KeyName_currArrayIndex < v2gKeyInfoType->KeyName.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 0); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].characters, v2gKeyInfoType->KeyName.array[v2gKeyInfoType_KeyName_currArrayIndex].charactersLen); + v2gKeyInfoType_KeyName_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 309; + } else if (v2gKeyInfoType_KeyValue_currArrayIndex < v2gKeyInfoType->KeyValue.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 1); + if(errn == 0) { + errn = encode_v2gKeyValueType(stream, &v2gKeyInfoType->KeyValue.array [v2gKeyInfoType_KeyValue_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_RetrievalMethod_currArrayIndex < v2gKeyInfoType->RetrievalMethod.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 2); + if(errn == 0) { + errn = encode_v2gRetrievalMethodType(stream, &v2gKeyInfoType->RetrievalMethod.array [v2gKeyInfoType_RetrievalMethod_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_X509Data_currArrayIndex < v2gKeyInfoType->X509Data.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 3); + if(errn == 0) { + errn = encode_v2gX509DataType(stream, &v2gKeyInfoType->X509Data.array [v2gKeyInfoType_X509Data_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_PGPData_currArrayIndex < v2gKeyInfoType->PGPData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 4); + if(errn == 0) { + errn = encode_v2gPGPDataType(stream, &v2gKeyInfoType->PGPData.array [v2gKeyInfoType_PGPData_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_SPKIData_currArrayIndex < v2gKeyInfoType->SPKIData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 5); + if(errn == 0) { + errn = encode_v2gSPKIDataType(stream, &v2gKeyInfoType->SPKIData.array [v2gKeyInfoType_SPKIData_currArrayIndex++]); + } + grammarID = 309; + } else if (v2gKeyInfoType_MgmtData_currArrayIndex < v2gKeyInfoType->MgmtData.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 4, 6); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].characters, v2gKeyInfoType->MgmtData.array[v2gKeyInfoType_MgmtData_currArrayIndex].charactersLen); + v2gKeyInfoType_MgmtData_currArrayIndex++; + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 309; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 309; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 310; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgDataTypes,SelectedServiceListType', base type name='anyType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgDataTypes":SelectedService{1-UNBOUNDED})', derivedBy='RESTRICTION'. */ +static int encode_v2gSelectedServiceListType(bitstream_t* stream, struct v2gSelectedServiceListType* v2gSelectedServiceListType) { + int grammarID = 311; + int done = 0; + + unsigned int v2gSelectedServiceListType_SelectedService_currArrayIndex = 0; + + while(!done) { + switch(grammarID) { + case 311: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService)] */ + if (v2gSelectedServiceListType_SelectedService_currArrayIndex < v2gSelectedServiceListType->SelectedService.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encode_v2gSelectedServiceType(stream, &v2gSelectedServiceListType->SelectedService.array [v2gSelectedServiceListType_SelectedService_currArrayIndex++]); + } + grammarID = 312; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 312: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SelectedService), END_ELEMENT] */ + if (v2gSelectedServiceListType_SelectedService_currArrayIndex < v2gSelectedServiceListType->SelectedService.arrayLen ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gSelectedServiceType(stream, &v2gSelectedServiceListType->SelectedService.array [v2gSelectedServiceListType_SelectedService_currArrayIndex++]); + } + grammarID = 312; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='urn:iso:15118:2:2013:MsgBody,PowerDeliveryReqType', base type name='BodyBaseType', content type='ELEMENT', isAbstract='false', hasTypeId='false', final='0', block='0', particle='("urn:iso:15118:2:2013:MsgBody":ChargeProgress,"urn:iso:15118:2:2013:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2013:MsgBody":ChargingProfile{0-1},"urn:iso:15118:2:2013:MsgDataTypes":EVPowerDeliveryParameter{0-1})', derivedBy='EXTENSION'. */ +static int encode_v2gPowerDeliveryReqType(bitstream_t* stream, struct v2gPowerDeliveryReqType* v2gPowerDeliveryReqType) { + int grammarID = 313; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 313: + /* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeProgress)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[ENUMERATION]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 2, v2gPowerDeliveryReqType->ChargeProgress); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 314; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 314: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID)] */ + if ( 1 == 1 ) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(v2gPowerDeliveryReqType->SAScheduleTupleID - 1)); + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + grammarID = 315; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 315: + /* 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] */ + if ( v2gPowerDeliveryReqType->ChargingProfile_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + errn = encode_v2gChargingProfileType(stream, &v2gPowerDeliveryReqType->ChargingProfile ); + } + grammarID = 316; + } else if ( v2gPowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + errn = encode_v2gDC_EVPowerDeliveryParameterType(stream, &v2gPowerDeliveryReqType->DC_EVPowerDeliveryParameter ); + } + grammarID = 3; + } else if ( v2gPowerDeliveryReqType->EVPowerDeliveryParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + errn = encode_v2gEVPowerDeliveryParameterType(stream, &v2gPowerDeliveryReqType->EVPowerDeliveryParameter ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 316: + /* Element[START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter), START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter), END_ELEMENT] */ + if ( v2gPowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 0); + if(errn == 0) { + errn = encode_v2gDC_EVPowerDeliveryParameterType(stream, &v2gPowerDeliveryReqType->DC_EVPowerDeliveryParameter ); + } + grammarID = 3; + } else if ( v2gPowerDeliveryReqType->EVPowerDeliveryParameter_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + errn = encode_v2gEVPowerDeliveryParameterType(stream, &v2gPowerDeliveryReqType->EVPowerDeliveryParameter ); + } + grammarID = 3; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 3: + /* Element[END_ELEMENT] */ + if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + +/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ObjectType', base type name='anyType', content type='MIXED', isAbstract='false', hasTypeId='false', final='0', block='0', particle='((WC[##any])){0-UNBOUNDED}', derivedBy='RESTRICTION'. */ +static int encode_v2gObjectType(bitstream_t* stream, struct v2gObjectType* v2gObjectType) { + int grammarID = 317; + int done = 0; + + + while(!done) { + switch(grammarID) { + case 317: + /* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if ( v2gObjectType->Encoding_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gObjectType->Encoding.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gObjectType->Encoding.characters, v2gObjectType->Encoding.charactersLen); + } + } + grammarID = 318; + } else if ( v2gObjectType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gObjectType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gObjectType->Id.characters, v2gObjectType->Id.charactersLen); + } + } + grammarID = 319; + } else if ( v2gObjectType->MimeType_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gObjectType->MimeType.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gObjectType->MimeType.characters, v2gObjectType->MimeType.charactersLen); + } + } + grammarID = 128; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 4); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 318: + /* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if ( v2gObjectType->Id_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gObjectType->Id.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gObjectType->Id.characters, v2gObjectType->Id.charactersLen); + } + } + grammarID = 319; + } else if ( v2gObjectType->MimeType_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 1); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gObjectType->MimeType.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gObjectType->MimeType.characters, v2gObjectType->MimeType.charactersLen); + } + } + grammarID = 128; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 3); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 319: + /* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if ( v2gObjectType->MimeType_isUsed == 1u ) { + errn = encodeNBitUnsignedInteger(stream, 3, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(v2gObjectType->MimeType.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, v2gObjectType->MimeType.characters, v2gObjectType->MimeType.charactersLen); + } + } + grammarID = 128; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 3, 2); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 128: + /* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + case 60: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else if (1==1) { + errn = encodeNBitUnsignedInteger(stream, 2, 1); + if(errn == 0) { + done = 1; + } + grammarID = 4; + } else if (1==0) { + errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; + grammarID = 60; + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + break; + default: + errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; + break; + } + if(errn) { + done = 1; + } + } + return errn; +} + + + +int encode_v2gExiDocument(bitstream_t* stream, struct v2gEXIDocument* exiDoc) { + errn = writeEXIHeader(stream); + + if(errn == 0) { + /* 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] */ + if ( exiDoc->AC_EVChargeParameter_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter) */ + errn = encodeNBitUnsignedInteger(stream, 7, 0); + if(errn == 0) { + errn = encode_v2gAC_EVChargeParameterType(stream, &exiDoc->AC_EVChargeParameter ); + } + } else if ( exiDoc->AC_EVSEChargeParameter_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter) */ + errn = encodeNBitUnsignedInteger(stream, 7, 1); + if(errn == 0) { + errn = encode_v2gAC_EVSEChargeParameterType(stream, &exiDoc->AC_EVSEChargeParameter ); + } + } else if ( exiDoc->AC_EVSEStatus_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus) */ + errn = encodeNBitUnsignedInteger(stream, 7, 2); + if(errn == 0) { + errn = encode_v2gAC_EVSEStatusType(stream, &exiDoc->AC_EVSEStatus ); + } + } else if ( exiDoc->AuthorizationReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 3); + if(errn == 0) { + errn = encode_v2gAuthorizationReqType(stream, &exiDoc->AuthorizationReq ); + } + } else if ( exiDoc->AuthorizationRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}AuthorizationRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 4); + if(errn == 0) { + errn = encode_v2gAuthorizationResType(stream, &exiDoc->AuthorizationRes ); + } + } else if ( exiDoc->BodyElement_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}BodyElement) */ + errn = encodeNBitUnsignedInteger(stream, 7, 5); + if(errn == 0) { + errn = encode_v2gBodyBaseType(stream, &exiDoc->BodyElement ); + } + } else if ( exiDoc->CableCheckReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 6); + if(errn == 0) { + errn = encode_v2gCableCheckReqType(stream, &exiDoc->CableCheckReq ); + } + } else if ( exiDoc->CableCheckRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CableCheckRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 7); + if(errn == 0) { + errn = encode_v2gCableCheckResType(stream, &exiDoc->CableCheckRes ); + } + } else if ( exiDoc->CanonicalizationMethod_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod) */ + errn = encodeNBitUnsignedInteger(stream, 7, 8); + if(errn == 0) { + errn = encode_v2gCanonicalizationMethodType(stream, &exiDoc->CanonicalizationMethod ); + } + } else if ( exiDoc->CertificateInstallationReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 9); + if(errn == 0) { + errn = encode_v2gCertificateInstallationReqType(stream, &exiDoc->CertificateInstallationReq ); + } + } else if ( exiDoc->CertificateInstallationRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 10); + if(errn == 0) { + errn = encode_v2gCertificateInstallationResType(stream, &exiDoc->CertificateInstallationRes ); + } + } else if ( exiDoc->CertificateUpdateReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 11); + if(errn == 0) { + errn = encode_v2gCertificateUpdateReqType(stream, &exiDoc->CertificateUpdateReq ); + } + } else if ( exiDoc->CertificateUpdateRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 12); + if(errn == 0) { + errn = encode_v2gCertificateUpdateResType(stream, &exiDoc->CertificateUpdateRes ); + } + } else if ( exiDoc->ChargeParameterDiscoveryReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 13); + if(errn == 0) { + errn = encode_v2gChargeParameterDiscoveryReqType(stream, &exiDoc->ChargeParameterDiscoveryReq ); + } + } else if ( exiDoc->ChargeParameterDiscoveryRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 14); + if(errn == 0) { + errn = encode_v2gChargeParameterDiscoveryResType(stream, &exiDoc->ChargeParameterDiscoveryRes ); + } + } else if ( exiDoc->ChargingStatusReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 15); + if(errn == 0) { + errn = encode_v2gChargingStatusReqType(stream, &exiDoc->ChargingStatusReq ); + } + } else if ( exiDoc->ChargingStatusRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ChargingStatusRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 16); + if(errn == 0) { + errn = encode_v2gChargingStatusResType(stream, &exiDoc->ChargingStatusRes ); + } + } else if ( exiDoc->CurrentDemandReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 17); + if(errn == 0) { + errn = encode_v2gCurrentDemandReqType(stream, &exiDoc->CurrentDemandReq ); + } + } else if ( exiDoc->CurrentDemandRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}CurrentDemandRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 18); + if(errn == 0) { + errn = encode_v2gCurrentDemandResType(stream, &exiDoc->CurrentDemandRes ); + } + } else if ( exiDoc->DC_EVChargeParameter_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter) */ + errn = encodeNBitUnsignedInteger(stream, 7, 19); + if(errn == 0) { + errn = encode_v2gDC_EVChargeParameterType(stream, &exiDoc->DC_EVChargeParameter ); + } + } else if ( exiDoc->DC_EVPowerDeliveryParameter_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter) */ + errn = encodeNBitUnsignedInteger(stream, 7, 20); + if(errn == 0) { + errn = encode_v2gDC_EVPowerDeliveryParameterType(stream, &exiDoc->DC_EVPowerDeliveryParameter ); + } + } else if ( exiDoc->DC_EVSEChargeParameter_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter) */ + errn = encodeNBitUnsignedInteger(stream, 7, 21); + if(errn == 0) { + errn = encode_v2gDC_EVSEChargeParameterType(stream, &exiDoc->DC_EVSEChargeParameter ); + } + } else if ( exiDoc->DC_EVSEStatus_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus) */ + errn = encodeNBitUnsignedInteger(stream, 7, 22); + if(errn == 0) { + errn = encode_v2gDC_EVSEStatusType(stream, &exiDoc->DC_EVSEStatus ); + } + } else if ( exiDoc->DC_EVStatus_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus) */ + errn = encodeNBitUnsignedInteger(stream, 7, 23); + if(errn == 0) { + errn = encode_v2gDC_EVStatusType(stream, &exiDoc->DC_EVStatus ); + } + } else if ( exiDoc->DSAKeyValue_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue) */ + errn = encodeNBitUnsignedInteger(stream, 7, 24); + if(errn == 0) { + errn = encode_v2gDSAKeyValueType(stream, &exiDoc->DSAKeyValue ); + } + } else if ( exiDoc->DigestMethod_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod) */ + errn = encodeNBitUnsignedInteger(stream, 7, 25); + if(errn == 0) { + errn = encode_v2gDigestMethodType(stream, &exiDoc->DigestMethod ); + } + } else if ( exiDoc->DigestValue_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue) */ + errn = encodeNBitUnsignedInteger(stream, 7, 26); + if(errn == 0) { + /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + errn = encodeUnsignedInteger16(stream, (uint16_t)(exiDoc->DigestValue.bytesLen)); + if (errn == 0) { + errn = encodeBytes(stream, exiDoc->DigestValue.bytes, exiDoc->DigestValue.bytesLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + } else if ( exiDoc->EVChargeParameter_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter) */ + errn = encodeNBitUnsignedInteger(stream, 7, 27); + if(errn == 0) { + errn = encode_v2gEVChargeParameterType(stream, &exiDoc->EVChargeParameter ); + } + } else if ( exiDoc->EVPowerDeliveryParameter_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter) */ + errn = encodeNBitUnsignedInteger(stream, 7, 28); + if(errn == 0) { + errn = encode_v2gEVPowerDeliveryParameterType(stream, &exiDoc->EVPowerDeliveryParameter ); + } + } else if ( exiDoc->EVSEChargeParameter_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter) */ + errn = encodeNBitUnsignedInteger(stream, 7, 29); + if(errn == 0) { + errn = encode_v2gEVSEChargeParameterType(stream, &exiDoc->EVSEChargeParameter ); + } + } else if ( exiDoc->EVSEStatus_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus) */ + errn = encodeNBitUnsignedInteger(stream, 7, 30); + if(errn == 0) { + errn = encode_v2gEVSEStatusType(stream, &exiDoc->EVSEStatus ); + } + } else if ( exiDoc->EVStatus_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}EVStatus) */ + errn = encodeNBitUnsignedInteger(stream, 7, 31); + if(errn == 0) { + errn = encode_v2gEVStatusType(stream, &exiDoc->EVStatus ); + } + } else if ( exiDoc->Entry_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}Entry) */ + errn = encodeNBitUnsignedInteger(stream, 7, 32); + if(errn == 0) { + errn = encode_v2gEntryType(stream, &exiDoc->Entry ); + } + } else if ( exiDoc->KeyInfo_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo) */ + errn = encodeNBitUnsignedInteger(stream, 7, 33); + if(errn == 0) { + errn = encode_v2gKeyInfoType(stream, &exiDoc->KeyInfo ); + } + } else if ( exiDoc->KeyName_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) */ + errn = encodeNBitUnsignedInteger(stream, 7, 34); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(exiDoc->KeyName.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, exiDoc->KeyName.characters, exiDoc->KeyName.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + } else if ( exiDoc->KeyValue_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue) */ + errn = encodeNBitUnsignedInteger(stream, 7, 35); + if(errn == 0) { + errn = encode_v2gKeyValueType(stream, &exiDoc->KeyValue ); + } + } else if ( exiDoc->Manifest_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest) */ + errn = encodeNBitUnsignedInteger(stream, 7, 36); + if(errn == 0) { + errn = encode_v2gManifestType(stream, &exiDoc->Manifest ); + } + } else if ( exiDoc->MeteringReceiptReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 37); + if(errn == 0) { + errn = encode_v2gMeteringReceiptReqType(stream, &exiDoc->MeteringReceiptReq ); + } + } else if ( exiDoc->MeteringReceiptRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 38); + if(errn == 0) { + errn = encode_v2gMeteringReceiptResType(stream, &exiDoc->MeteringReceiptRes ); + } + } else if ( exiDoc->MgmtData_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) */ + errn = encodeNBitUnsignedInteger(stream, 7, 39); + if(errn == 0) { + /* First(xsi:type)StartTag[CHARACTERS[STRING]] */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + if(errn == 0) { + /* encode string as string table miss (+2 len)*/ + errn = encodeUnsignedInteger16(stream, (uint16_t)(exiDoc->MgmtData.charactersLen + 2)); + if (errn == 0) { + errn = encodeCharacters(stream, exiDoc->MgmtData.characters, exiDoc->MgmtData.charactersLen); + } + /* valid EE */ + errn = encodeNBitUnsignedInteger(stream, 1, 0); + } + } + } else if ( exiDoc->Object_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object) */ + errn = encodeNBitUnsignedInteger(stream, 7, 40); + if(errn == 0) { + errn = encode_v2gObjectType(stream, &exiDoc->Object ); + } + } else if ( exiDoc->PGPData_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData) */ + errn = encodeNBitUnsignedInteger(stream, 7, 41); + if(errn == 0) { + errn = encode_v2gPGPDataType(stream, &exiDoc->PGPData ); + } + } else if ( exiDoc->PMaxScheduleEntry_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry) */ + errn = encodeNBitUnsignedInteger(stream, 7, 42); + if(errn == 0) { + errn = encode_v2gPMaxScheduleEntryType(stream, &exiDoc->PMaxScheduleEntry ); + } + } else if ( exiDoc->PaymentDetailsReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 43); + if(errn == 0) { + errn = encode_v2gPaymentDetailsReqType(stream, &exiDoc->PaymentDetailsReq ); + } + } else if ( exiDoc->PaymentDetailsRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 44); + if(errn == 0) { + errn = encode_v2gPaymentDetailsResType(stream, &exiDoc->PaymentDetailsRes ); + } + } else if ( exiDoc->PaymentServiceSelectionReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 45); + if(errn == 0) { + errn = encode_v2gPaymentServiceSelectionReqType(stream, &exiDoc->PaymentServiceSelectionReq ); + } + } else if ( exiDoc->PaymentServiceSelectionRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 46); + if(errn == 0) { + errn = encode_v2gPaymentServiceSelectionResType(stream, &exiDoc->PaymentServiceSelectionRes ); + } + } else if ( exiDoc->PowerDeliveryReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 47); + if(errn == 0) { + errn = encode_v2gPowerDeliveryReqType(stream, &exiDoc->PowerDeliveryReq ); + } + } else if ( exiDoc->PowerDeliveryRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 48); + if(errn == 0) { + errn = encode_v2gPowerDeliveryResType(stream, &exiDoc->PowerDeliveryRes ); + } + } else if ( exiDoc->PreChargeReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 49); + if(errn == 0) { + errn = encode_v2gPreChargeReqType(stream, &exiDoc->PreChargeReq ); + } + } else if ( exiDoc->PreChargeRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}PreChargeRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 50); + if(errn == 0) { + errn = encode_v2gPreChargeResType(stream, &exiDoc->PreChargeRes ); + } + } else if ( exiDoc->RSAKeyValue_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue) */ + errn = encodeNBitUnsignedInteger(stream, 7, 51); + if(errn == 0) { + errn = encode_v2gRSAKeyValueType(stream, &exiDoc->RSAKeyValue ); + } + } else if ( exiDoc->Reference_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference) */ + errn = encodeNBitUnsignedInteger(stream, 7, 52); + if(errn == 0) { + errn = encode_v2gReferenceType(stream, &exiDoc->Reference ); + } + } else if ( exiDoc->RelativeTimeInterval_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval) */ + errn = encodeNBitUnsignedInteger(stream, 7, 53); + if(errn == 0) { + errn = encode_v2gRelativeTimeIntervalType(stream, &exiDoc->RelativeTimeInterval ); + } + } else if ( exiDoc->RetrievalMethod_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod) */ + errn = encodeNBitUnsignedInteger(stream, 7, 54); + if(errn == 0) { + errn = encode_v2gRetrievalMethodType(stream, &exiDoc->RetrievalMethod ); + } + } else if ( exiDoc->SAScheduleList_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList) */ + errn = encodeNBitUnsignedInteger(stream, 7, 55); + if(errn == 0) { + errn = encode_v2gSAScheduleListType(stream, &exiDoc->SAScheduleList ); + } + } else if ( exiDoc->SASchedules_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SASchedules) */ + errn = encodeNBitUnsignedInteger(stream, 7, 56); + if(errn == 0) { + errn = encode_v2gSASchedulesType(stream, &exiDoc->SASchedules ); + } + } else if ( exiDoc->SPKIData_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData) */ + errn = encodeNBitUnsignedInteger(stream, 7, 57); + if(errn == 0) { + errn = encode_v2gSPKIDataType(stream, &exiDoc->SPKIData ); + } + } else if ( exiDoc->SalesTariffEntry_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry) */ + errn = encodeNBitUnsignedInteger(stream, 7, 58); + if(errn == 0) { + errn = encode_v2gSalesTariffEntryType(stream, &exiDoc->SalesTariffEntry ); + } + } else if ( exiDoc->ServiceDetailReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 59); + if(errn == 0) { + errn = encode_v2gServiceDetailReqType(stream, &exiDoc->ServiceDetailReq ); + } + } else if ( exiDoc->ServiceDetailRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDetailRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 60); + if(errn == 0) { + errn = encode_v2gServiceDetailResType(stream, &exiDoc->ServiceDetailRes ); + } + } else if ( exiDoc->ServiceDiscoveryReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 61); + if(errn == 0) { + errn = encode_v2gServiceDiscoveryReqType(stream, &exiDoc->ServiceDiscoveryReq ); + } + } else if ( exiDoc->ServiceDiscoveryRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 62); + if(errn == 0) { + errn = encode_v2gServiceDiscoveryResType(stream, &exiDoc->ServiceDiscoveryRes ); + } + } else if ( exiDoc->SessionSetupReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 63); + if(errn == 0) { + errn = encode_v2gSessionSetupReqType(stream, &exiDoc->SessionSetupReq ); + } + } else if ( exiDoc->SessionSetupRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionSetupRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 64); + if(errn == 0) { + errn = encode_v2gSessionSetupResType(stream, &exiDoc->SessionSetupRes ); + } + } else if ( exiDoc->SessionStopReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 65); + if(errn == 0) { + errn = encode_v2gSessionStopReqType(stream, &exiDoc->SessionStopReq ); + } + } else if ( exiDoc->SessionStopRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}SessionStopRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 66); + if(errn == 0) { + errn = encode_v2gSessionStopResType(stream, &exiDoc->SessionStopRes ); + } + } else if ( exiDoc->Signature_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature) */ + errn = encodeNBitUnsignedInteger(stream, 7, 67); + if(errn == 0) { + errn = encode_v2gSignatureType(stream, &exiDoc->Signature ); + } + } else if ( exiDoc->SignatureMethod_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod) */ + errn = encodeNBitUnsignedInteger(stream, 7, 68); + if(errn == 0) { + errn = encode_v2gSignatureMethodType(stream, &exiDoc->SignatureMethod ); + } + } else if ( exiDoc->SignatureProperties_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties) */ + errn = encodeNBitUnsignedInteger(stream, 7, 69); + if(errn == 0) { + errn = encode_v2gSignaturePropertiesType(stream, &exiDoc->SignatureProperties ); + } + } else if ( exiDoc->SignatureProperty_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty) */ + errn = encodeNBitUnsignedInteger(stream, 7, 70); + if(errn == 0) { + errn = encode_v2gSignaturePropertyType(stream, &exiDoc->SignatureProperty ); + } + } else if ( exiDoc->SignatureValue_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue) */ + errn = encodeNBitUnsignedInteger(stream, 7, 71); + if(errn == 0) { + errn = encode_v2gSignatureValueType(stream, &exiDoc->SignatureValue ); + } + } else if ( exiDoc->SignedInfo_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo) */ + errn = encodeNBitUnsignedInteger(stream, 7, 72); + if(errn == 0) { + errn = encode_v2gSignedInfoType(stream, &exiDoc->SignedInfo ); + } + } else if ( exiDoc->TimeInterval_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDataTypes}TimeInterval) */ + errn = encodeNBitUnsignedInteger(stream, 7, 73); + if(errn == 0) { + errn = encode_v2gIntervalType(stream, &exiDoc->TimeInterval ); + } + } else if ( exiDoc->Transform_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform) */ + errn = encodeNBitUnsignedInteger(stream, 7, 74); + if(errn == 0) { + errn = encode_v2gTransformType(stream, &exiDoc->Transform ); + } + } else if ( exiDoc->Transforms_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms) */ + errn = encodeNBitUnsignedInteger(stream, 7, 75); + if(errn == 0) { + errn = encode_v2gTransformsType(stream, &exiDoc->Transforms ); + } + } else if ( exiDoc->V2G_Message_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgDef}V2G_Message) */ + errn = encodeNBitUnsignedInteger(stream, 7, 76); + if(errn == 0) { + errn = encode_v2gAnonType_V2G_Message(stream, &exiDoc->V2G_Message ); + } + } else if ( exiDoc->WeldingDetectionReq_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq) */ + errn = encodeNBitUnsignedInteger(stream, 7, 77); + if(errn == 0) { + errn = encode_v2gWeldingDetectionReqType(stream, &exiDoc->WeldingDetectionReq ); + } + } else if ( exiDoc->WeldingDetectionRes_isUsed == 1u ) { + /* START_ELEMENT({urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes) */ + errn = encodeNBitUnsignedInteger(stream, 7, 78); + if(errn == 0) { + errn = encode_v2gWeldingDetectionResType(stream, &exiDoc->WeldingDetectionRes ); + } + } else if ( exiDoc->X509Data_isUsed == 1u ) { + /* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data) */ + errn = encodeNBitUnsignedInteger(stream, 7, 79); + if(errn == 0) { + errn = encode_v2gX509DataType(stream, &exiDoc->X509Data ); + } + } else { + errn = EXI_ERROR_UNKOWN_EVENT; + } + + } + + if(errn == 0) { + /* flush any pending bits */ + errn = encodeFinish(stream); + } + + return errn; +} + + +#endif + diff --git a/src/service/v2g_serviceClientDataTransmitter.h b/src/codec/v2gEXIDatatypesEncoder.h similarity index 65% rename from src/service/v2g_serviceClientDataTransmitter.h rename to src/codec/v2gEXIDatatypesEncoder.h index 2735b4d..b3b85f0 100644 --- a/src/service/v2g_serviceClientDataTransmitter.h +++ b/src/codec/v2gEXIDatatypesEncoder.h @@ -1,6 +1,5 @@ - /* - * Copyright (C) 2007-2010 Siemens AG + * 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 @@ -18,27 +17,42 @@ /******************************************************************* * - * @author Sebastian.Kaebisch@siemens.com - * @version 0.8 + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.9 * @contact Joerg.Heuer@siemens.com * + *

Code generated by EXIdizer

+ *

Schema: V2G_CI_MsgDef.xsd

+ * + * ********************************************************************/ -#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 + + +/** + * \file EXIDatatypesEncoder.h + * \brief Encoder for datatype definitions + * + */ + +#ifndef EXI_v2g_DATATYPES_ENCODER_H +#define EXI_v2g_DATATYPES_ENCODER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include "EXITypes.h" +#include "v2gEXIDatatypes.h" + + +int encode_v2gExiDocument(bitstream_t* stream, struct v2gEXIDocument* exiDoc); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/codec/v2gEXIDecoder.c b/src/codec/v2gEXIDecoder.c deleted file mode 100644 index e9400bd..0000000 --- a/src/codec/v2gEXIDecoder.c +++ /dev/null @@ -1,15616 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 36c3de6..0000000 --- a/src/codec/v2gEXIDecoder.h +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index b542df0..0000000 --- a/src/codec/v2gEXIEncoder.c +++ /dev/null @@ -1,13891 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 581c2cb..0000000 --- a/src/codec/v2gEXIEncoder.h +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 42df1c6..0000000 --- a/src/codec/v2gNameTableEntries.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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/v2gQNameDefines.h b/src/codec/v2gQNameDefines.h deleted file mode 100644 index 3ea807d..0000000 --- a/src/codec/v2gQNameDefines.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 3ae9a3b..0000000 --- a/src/codec/v2gQNames.c +++ /dev/null @@ -1,989 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 113bd71..0000000 --- a/src/codec/v2gQNames.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 9486439..0000000 --- a/src/service/v2g_dataTypes.c +++ /dev/null @@ -1,692 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 155d95c..0000000 --- a/src/service/v2g_dataTypes.h +++ /dev/null @@ -1,1681 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index b2e0317..0000000 --- a/src/service/v2g_service.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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_serviceClientStubs.c b/src/service/v2g_serviceClientStubs.c deleted file mode 100644 index 9d7b289..0000000 --- a/src/service/v2g_serviceClientStubs.c +++ /dev/null @@ -1,3571 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 5f3cfa6..0000000 --- a/src/service/v2g_serviceClientStubs.h +++ /dev/null @@ -1,322 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 64add70..0000000 --- a/src/service/v2g_serviceDataSerialization.c +++ /dev/null @@ -1,7504 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index 242500f..0000000 --- a/src/service/v2g_serviceDispatcher.c +++ /dev/null @@ -1,2536 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index c9c92c3..0000000 --- a/src/service/v2g_serviceDispatcher.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index bb821dc..0000000 --- a/src/service/v2g_serviceMethods.h +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright (C) 2007-2013 Siemens AG - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -/******************************************************************* - * - * @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 deleted file mode 100644 index c8e0f31..0000000 --- a/src/test/evse_server.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - * 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 deleted file mode 100644 index 8a29760..0000000 --- a/src/test/evse_serviceMethods.c +++ /dev/null @@ -1,843 +0,0 @@ -/* - * 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; iSwitch for sample programs: EXI codec only or for entire V2G service

+ *

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

* ********************************************************************/ @@ -34,10 +34,10 @@ 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); + return main_databinder(argc, argv); +#elif CODE_VERSION == CODE_VERSION_SAMPLE + /* V2G client / service example */ + return main_example(argc, argv); #endif } diff --git a/src/test/main.h b/src/test/main.h index d45b4c4..039a20b 100644 --- a/src/test/main.h +++ b/src/test/main.h @@ -19,7 +19,7 @@ * * @author Daniel.Peintner.EXT@siemens.com * @author Sebastian.Kaebisch@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * * @@ -27,17 +27,16 @@ #define CODE_VERSION_EXI 1 -#define CODE_VERSION_SERVICE 2 -#define CODE_VERSION CODE_VERSION_SERVICE -/* #define CODE_VERSION CODE_VERSION_EXI */ +#define CODE_VERSION_SAMPLE 2 +#define CODE_VERSION CODE_VERSION_SAMPLE #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[]); +#elif CODE_VERSION == CODE_VERSION_SAMPLE +int main_example(int argc, char *argv[]); #endif #endif diff --git a/src/test/main_databinder.c b/src/test/main_databinder.c new file mode 100644 index 0000000..8d98e85 --- /dev/null +++ b/src/test/main_databinder.c @@ -0,0 +1,149 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.9 + * @contact Joerg.Heuer@siemens.com + * + *

Code generated by EXIdizer

+ *

Schema: 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

+ ********************************************************************/ + +#include +#include +#include + +/* schema-dependent */ +#include "v2gEXIDatatypes.h" +#include "v2gEXIDatatypesEncoder.h" +#include "v2gEXIDatatypesDecoder.h" + + +#include "ByteStream.h" + +/** EXI Debug mode */ +#define EXI_DEBUG 0 + +#define BUFFER_SIZE 4096 +uint8_t bufferIn[BUFFER_SIZE]; +uint8_t bufferOut[BUFFER_SIZE]; + + +#if EXI_DEBUG == 1 +# define DEBUG_PRINTF(x) printf x +#else +# define DEBUG_PRINTF(x) do {} while (0) +#endif + + +int main_databinder(int argc, char *argv[]) { + + struct v2gEXIDocument exiDoc; + int errn = 0; + + bitstream_t iStream, oStream; + +#if EXI_STREAM == BYTE_ARRAY + uint16_t posDecode; + uint16_t posEncode; +#endif /* EXI_STREAM == BYTE_ARRAY */ + + +#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, err==%d\n", errn); + 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 */ + + iStream.buffer = 0; + iStream.capacity = 0; + + + printf("Start decoding EXI stream to databinding layer \n"); + errn = decode_v2gExiDocument(&iStream, &exiDoc); + if (errn != 0) { + printf("Problems while decoding EXI stream, err==%d\n", errn); + return errn; + } + +#if EXI_STREAM == BYTE_ARRAY + /* setup output stream */ + posEncode = 0; + oStream.size = BUFFER_SIZE; + oStream.data = bufferOut; + oStream.pos = &posEncode; +#endif + + oStream.buffer = 0; + oStream.capacity = 8; + + printf("Start encoding databinding layer to EXI \n"); + errn = encode_v2gExiDocument(&oStream, &exiDoc); + if (errn != 0) { + printf("Problems while encoding databinding layer, err==%d\n", errn); + return errn; + } + + printf("EXI roundtrip done with success\n"); +#if EXI_STREAM == BYTE_ARRAY + /* write to file */ + writeBytesToFile(oStream.data, posEncode, argv[2]); +#endif + + + return errn; +} + + diff --git a/src/test/main_example.c b/src/test/main_example.c new file mode 100644 index 0000000..c591670 --- /dev/null +++ b/src/test/main_example.c @@ -0,0 +1,2365 @@ +/* + * 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 . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @author Sebastian.Kaebisch@siemens.com + * @version 0.9 + * @contact Joerg.Heuer@siemens.com + * + * + ********************************************************************/ + + + +#include +#include +#include + +#include "EXITypes.h" + +#include "appHandEXIDatatypes.h" +#include "appHandEXIDatatypesEncoder.h" +#include "appHandEXIDatatypesDecoder.h" + +#include "v2gEXIDatatypes.h" +#include "v2gEXIDatatypesEncoder.h" +#include "v2gEXIDatatypesDecoder.h" + +#include "v2gtp.h" + +#define BUFFER_SIZE 256 +uint8_t buffer1[BUFFER_SIZE]; +uint8_t buffer2[BUFFER_SIZE]; + +#define ERROR_UNEXPECTED_REQUEST_MESSAGE -601 +#define ERROR_UNEXPECTED_SESSION_SETUP_RESP_MESSAGE -602 +#define ERROR_UNEXPECTED_SERVICE_DISCOVERY_RESP_MESSAGE -602 +#define ERROR_UNEXPECTED_SERVICE_DETAILS_RESP_MESSAGE -603 +#define ERROR_UNEXPECTED_PAYMENT_SERVICE_SELECTION_RESP_MESSAGE -604 +#define ERROR_UNEXPECTED_PAYMENT_DETAILS_RESP_MESSAGE -605 +#define ERROR_UNEXPECTED_AUTHORIZATION_RESP_MESSAGE -606 +#define ERROR_UNEXPECTED_CHARGE_PARAMETER_DISCOVERY_RESP_MESSAGE -607 +#define ERROR_UNEXPECTED_POWER_DELIVERY_RESP_MESSAGE -608 +#define ERROR_UNEXPECTED_CHARGING_STATUS_RESP_MESSAGE -609 +#define ERROR_UNEXPECTED_METERING_RECEIPT_RESP_MESSAGE -610 +#define ERROR_UNEXPECTED_SESSION_STOP_RESP_MESSAGE -611 +#define ERROR_UNEXPECTED_CABLE_CHECK_RESP_MESSAGE -612 +#define ERROR_UNEXPECTED_PRE_CHARGE_RESP_MESSAGE -612 +#define ERROR_UNEXPECTED_CURRENT_DEMAND_RESP_MESSAGE -613 +#define ERROR_UNEXPECTED_WELDING_DETECTION_RESP_MESSAGE -614 + + +static int writeStringToEXIString(char* string, exi_string_character_t* exiString) { + int pos = 0; + while(string[pos]!='\0') + { + exiString[pos] = string[pos]; + pos++; + } + + return pos; +} + +static void printASCIIString(exi_string_character_t* string, uint16_t len) { + unsigned int i; + for(i=0; iRCD); + printf("\t\tEVSENotification=%d\n", status->EVSENotification); + printf("\t\tNotificationMaxDelay=%d\n", status->NotificationMaxDelay); +} + +static void printDCEVSEStatus(struct v2gDC_EVSEStatusType* status) +{ + if(status->EVSEIsolationStatus_isUsed) { + printf("\tEVSEStatus:\n\t\tEVSEIsolationStatus=%d\n", status->EVSEIsolationStatus); + } + printf("\t\tEVSEStatusCode=%d\n", status->EVSEStatusCode); + + if(status->EVSENotification==EVSENotificationType_None) { + printf("\t\tEVSENotification=None_EVSENotificationType\n"); + } + printf("\t\tNotificationMaxDelay=%d\n",status->NotificationMaxDelay); + +} + +static void printBinaryArray(uint8_t* byte, uint16_t len) { + unsigned int i; + for(i=0; ipos = V2GTP_HEADER_LENGTH; /* v2gtp header */ + if( (errn = encode_v2gExiDocument(stream, exiIn)) == 0) { + errn = write_v2gtpHeader(stream->data, (*stream->pos)-V2GTP_HEADER_LENGTH, V2GTP_EXI_TYPE); + } + return errn; +} + + +/* deserializes V2G TP header and decodes right away EXI stream */ +static int deserializeStream2EXI(bitstream_t* streamIn, struct v2gEXIDocument* exi) { + int errn; + uint16_t payloadLength; + + *streamIn->pos = 0; + if ( (errn = read_v2gtpHeader(streamIn->data, &payloadLength)) == 0) { + *streamIn->pos += V2GTP_HEADER_LENGTH; + + errn = decode_v2gExiDocument(streamIn, exi); + } + return errn; +} + + +/** Example implementation of the app handshake protocol for the EVSE side */ +static int appHandshakeHandler(bitstream_t iStream, bitstream_t oStream) { + struct appHandEXIDocument appHandResp; + int i; + struct appHandEXIDocument exiDoc; + int errn = 0; + uint16_t payloadLengthDec; + + + if ( (errn = read_v2gtpHeader(iStream.data, &payloadLengthDec)) == 0) { + *iStream.pos = V2GTP_HEADER_LENGTH; + if( (errn = decode_appHandExiDocument(&iStream, &exiDoc)) ) { + /* an error occured */ + return errn; + } + + } + + + + + + printf("EVSE side: List of application handshake protocols of the EV \n"); + + for(i=0;iV2G_Message.Body.SessionSetupReq.EVCCID.bytes[0]); + + exiOut->V2G_Message_isUsed = 1u; + + /* generate an unique sessionID */ + init_v2gMessageHeaderType(&exiOut->V2G_Message.Header); + exiOut->V2G_Message.Header.SessionID.bytes[0] = 1; + exiOut->V2G_Message.Header.SessionID.bytes[1] = 2; + exiOut->V2G_Message.Header.SessionID.bytes[2] = 3; + exiOut->V2G_Message.Header.SessionID.bytes[3] = 4; + exiOut->V2G_Message.Header.SessionID.bytes[4] = 5; + exiOut->V2G_Message.Header.SessionID.bytes[5] = 6; + exiOut->V2G_Message.Header.SessionID.bytes[6] = 7; + exiOut->V2G_Message.Header.SessionID.bytes[7] = 8; + exiOut->V2G_Message.Header.SessionID.bytesLen = 8; + + /* Prepare data for EV */ + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.SessionSetupRes_isUsed = 1u; + init_v2gSessionSetupResType(&exiOut->V2G_Message.Body.SessionSetupRes); + exiOut->V2G_Message.Body.SessionSetupRes.ResponseCode = responseCodeType_OK; + exiOut->V2G_Message.Body.SessionSetupRes.EVSEID.characters[0] = 0; + exiOut->V2G_Message.Body.SessionSetupRes.EVSEID.characters[1] = 20; + exiOut->V2G_Message.Body.SessionSetupRes.EVSEID.charactersLen = 2; + exiOut->V2G_Message.Body.SessionSetupRes.EVSETimeStamp_isUsed = 1u; + exiOut->V2G_Message.Body.SessionSetupRes.EVSETimeStamp = 123456789; + + return 0; +} + +static int serviceDiscovery(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE side: serviceDiscovery called\n" ); + printf("\tReceived data:\n"); + printf("\tHeader SessionID="); + printBinaryArray(exiIn->V2G_Message.Header.SessionID.bytes, exiIn->V2G_Message.Header.SessionID.bytesLen); + printf("\t\t ServiceCategory=%d\n", exiIn->V2G_Message.Body.ServiceDiscoveryReq.ServiceCategory); + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.ServiceDiscoveryRes_isUsed = 1u; + init_v2gServiceDiscoveryResType(&exiOut->V2G_Message.Body.ServiceDiscoveryRes); + + + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList_isUsed = 0u; /* we do not provide VAS */ + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ResponseCode = responseCodeType_OK; + + + /* result->ChargeService.SupportedEnergyTransferMode = AC_single_phase_core_EnergyTransferModeType; */ + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceID = 1; /* ID of the charge service */ + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceName_isUsed = 1u; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceName.characters[0] = 'A'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceName.characters[1] = 'C'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceName.characters[2] = '_'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceName.characters[3] = 'D'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceName.characters[4] = 'C'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceName.characters[5] = '\0'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceName.charactersLen = 5; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceScope_isUsed = 1u; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.FreeService = 1; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceCategory = serviceCategoryType_EVCharging; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceScope_isUsed = 1u; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceScope.characters[0] = 100; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceScope.characters[1] = '\0'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceScope.charactersLen = 1; + + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.SupportedEnergyTransferMode.EnergyTransferMode.array[0] = EnergyTransferModeType_DC_combo_core; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.SupportedEnergyTransferMode.EnergyTransferMode.array[1] = EnergyTransferModeType_AC_single_phase_core; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ChargeService.SupportedEnergyTransferMode.EnergyTransferMode.arrayLen = 2; + + exiOut->V2G_Message.Body.ServiceDiscoveryRes.PaymentOptionList.PaymentOption.array[0] = paymentOptionType_ExternalPayment; /* EVSE handles the payment */ + exiOut->V2G_Message.Body.ServiceDiscoveryRes.PaymentOptionList.PaymentOption.array[1] = paymentOptionType_Contract; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.PaymentOptionList.PaymentOption.arrayLen = 2; + + if(exiIn->V2G_Message.Body.ServiceDiscoveryReq.ServiceCategory==serviceCategoryType_Internet || exiIn->V2G_Message.Body.ServiceDiscoveryReq.ServiceCategory==serviceCategoryType_OtherCustom || exiIn->V2G_Message.Body.ServiceDiscoveryReq.ServiceCategory_isUsed == 0u) { + + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.arrayLen = 2; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[0].FreeService=1; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[0].ServiceID=22; /* ID of the charge service */ + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[0].ServiceName_isUsed = 1u; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[0].ServiceName.characters[0]='W'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[0].ServiceName.characters[1]='W'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[0].ServiceName.characters[2]='W'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[0].ServiceName.charactersLen = 3; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[0].ServiceCategory= serviceCategoryType_Internet; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[0].ServiceScope_isUsed = 0u; + + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[1].FreeService=0; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[1].ServiceID=33; /* ID of the charge service */ + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[1].ServiceName_isUsed = 1u; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[1].ServiceName.characters[0]='H'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[1].ServiceName.characters[1]='T'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[1].ServiceName.characters[2]='T'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[1].ServiceName.characters[3]='P'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[1].ServiceName.characters[4]='S'; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[1].ServiceName.charactersLen = 5; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[1].ServiceCategory=serviceCategoryType_Internet; + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList.Service.array[1].ServiceScope_isUsed = 0u; + + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList_isUsed = 1u; + + } else { + exiOut->V2G_Message.Body.ServiceDiscoveryRes.ServiceList_isUsed = 0u; /* no value added service requested */ + } + + return 0; +} + + +static int serviceDetail(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE side: serviceDetail called\n" ); + printf("\tReceived data:\n"); + printf("\tHeader SessionID="); + printBinaryArray(exiIn->V2G_Message.Header.SessionID.bytes, exiIn->V2G_Message.Header.SessionID.bytesLen); + printf("\t\t ServiceDetailID=%d\n",exiIn->V2G_Message.Body.ServiceDetailReq.ServiceID); + + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.ServiceDetailRes_isUsed= 1u; + init_v2gServiceDetailResType(&exiOut->V2G_Message.Body.ServiceDetailRes); + + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceID = 1234; + + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList_isUsed = 1u; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.arrayLen = 2; + + /* Parameter Set 1*/ + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].ParameterSetID = 1; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.arrayLen = 2; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[0].Name.charactersLen = 8; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[0].Name.characters[0] = 'P'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[0].Name.characters[1] = 'r'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[0].Name.characters[2] = 'o'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[0].Name.characters[3] = 't'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[0].Name.characters[4]= 'o'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[0].Name.characters[5] = 'c'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[0].Name.characters[6] = 'o'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[0].Name.characters[7] = 'l'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[0].intValue = 15119; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[0].intValue_isUsed = 1u; + + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[1].Name.charactersLen = 4; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[1].Name.characters[0] = 'N'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[1].Name.characters[1] = 'a'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[1].Name.characters[2] = 'm'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[1].Name.characters[3] = 'e'; + + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[1].stringValue_isUsed = 1u; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[1].stringValue.charactersLen = 3; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[1].stringValue.characters[0] = 'V'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[1].stringValue.characters[1] = '2'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[0].Parameter.array[1].stringValue.characters[2] = 'G'; + + /* Parameter Set 2 */ + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].ParameterSetID = 2; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.arrayLen = 1; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].Name.charactersLen = 7; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].Name.characters[0] = 'C'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].Name.characters[1] = 'h'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].Name.characters[2] = 'a'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].Name.characters[3] = 'n'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].Name.characters[4] = 'n'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].Name.characters[5] = 'e'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].Name.characters[6] = 'l'; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].physicalValue_isUsed = 1u; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].physicalValue.Value = 1234; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].physicalValue.Unit = unitSymbolType_m; + exiOut->V2G_Message.Body.ServiceDetailRes.ServiceParameterList.ParameterSet.array[1].Parameter.array[0].physicalValue.Multiplier = 0; + + exiOut->V2G_Message.Body.ServiceDetailRes.ResponseCode = responseCodeType_OK; + + return 0; +} + + +static int paymentServiceSelection(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + int i; + + printf("EVSE side: paymentServiceSelection called\n" ); + printf("\tReceived data:\n"); + printf("\tHeader SessionID="); + printBinaryArray(exiIn->V2G_Message.Header.SessionID.bytes, exiIn->V2G_Message.Header.SessionID.bytesLen); + + if(exiIn->V2G_Message.Body.PaymentServiceSelectionReq.SelectedPaymentOption == paymentOptionType_ExternalPayment) { + printf("\t\t SelectedPaymentOption=ExternalPayment\n"); + } + + for(i=0; iV2G_Message.Body.PaymentServiceSelectionReq.SelectedServiceList.SelectedService.arrayLen;i++) + { + printf("\t\t ServiceID=%d\n", exiIn->V2G_Message.Body.PaymentServiceSelectionReq.SelectedServiceList.SelectedService.array[i].ServiceID); + if(exiIn->V2G_Message.Body.PaymentServiceSelectionReq.SelectedServiceList.SelectedService.array[i].ParameterSetID_isUsed) { + printf("\t\t ParameterSetID=%d\n", exiIn->V2G_Message.Body.PaymentServiceSelectionReq.SelectedServiceList.SelectedService.array[i].ParameterSetID); + } + } + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.PaymentServiceSelectionRes_isUsed= 1u; + init_v2gPaymentServiceSelectionResType(&exiOut->V2G_Message.Body.PaymentServiceSelectionRes); + + exiOut->V2G_Message.Body.ServiceDetailRes.ResponseCode = responseCodeType_OK; + + return 0; +} + + +static int paymentDetails(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE side: paymentDetails called\n" ); + printf("\tReceived data:\n"); + + printf("\t\t eMAID=%d\n", exiIn->V2G_Message.Body.PaymentDetailsReq.eMAID.characters[0]); + printf("\t\t ID=%c%c\n", exiIn->V2G_Message.Body.PaymentDetailsReq.ContractSignatureCertChain.Id.characters[0], exiIn->V2G_Message.Body.PaymentDetailsReq.ContractSignatureCertChain.Id.characters[1]); + printf("\t\t Certificate=%c%c\n", exiIn->V2G_Message.Body.PaymentDetailsReq.ContractSignatureCertChain.Certificate.bytes[0], exiIn->V2G_Message.Body.PaymentDetailsReq.ContractSignatureCertChain.Certificate.bytes[1]); + printf("\t\t SubCertificate 1=%c%c\n", exiIn->V2G_Message.Body.PaymentDetailsReq.ContractSignatureCertChain.SubCertificates.Certificate.array[0].bytes[0], exiIn->V2G_Message.Body.PaymentDetailsReq.ContractSignatureCertChain.SubCertificates.Certificate.array[0].bytes[1]); + printf("\t\t SubCertificate 2=%c%c\n", exiIn->V2G_Message.Body.PaymentDetailsReq.ContractSignatureCertChain.SubCertificates.Certificate.array[1].bytes[0], exiIn->V2G_Message.Body.PaymentDetailsReq.ContractSignatureCertChain.SubCertificates.Certificate.array[1].bytes[1]); + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.PaymentDetailsRes_isUsed = 1u; + + exiOut->V2G_Message.Body.PaymentDetailsRes.ResponseCode = responseCodeType_OK; + exiOut->V2G_Message.Body.PaymentDetailsRes.GenChallenge.bytesLen = 1; + exiOut->V2G_Message.Body.PaymentDetailsRes.GenChallenge.bytes[0] = 1; + exiOut->V2G_Message.Body.PaymentDetailsRes.EVSETimeStamp = 123456; + + return 0; +} + + +static int authorization(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE: Authorization called\n" ); + printf("\tReceived data:\n"); + + if(exiIn->V2G_Message.Body.AuthorizationReq.GenChallenge_isUsed) { + printf("\t\t\t GenChallenge=%d\n", exiIn->V2G_Message.Body.AuthorizationReq.GenChallenge.bytes[0]); + } + if(exiIn->V2G_Message.Body.AuthorizationReq.Id_isUsed ) { + printf("\t\t\t ID=%c%c%c\n", exiIn->V2G_Message.Body.AuthorizationReq.Id.characters[0], exiIn->V2G_Message.Body.AuthorizationReq.Id.characters[1], exiIn->V2G_Message.Body.AuthorizationReq.Id.characters[2]); + } + + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.AuthorizationRes_isUsed = 1u; + + exiOut->V2G_Message.Body.AuthorizationRes.ResponseCode = responseCodeType_OK; + exiOut->V2G_Message.Body.AuthorizationRes.EVSEProcessing = EVSEProcessingType_Finished; + + return 0; +} + + +static int chargeParameterDiscovery(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE side: chargeParameterDiscovery called\n" ); + printf("\tReceived data:\n"); + printf("\t\t EVRequestedEnergyTransferType=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.RequestedEnergyTransferMode); + + /* check,if DC or AC is requested */ + if(exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.RequestedEnergyTransferMode == EnergyTransferModeType_DC_core || exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter_isUsed == 1) { + printf("\t\t MaxEntriesSAScheduleTuple=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.MaxEntriesSAScheduleTuple); + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter.DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter.DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter.DC_EVStatus.EVErrorCode); + + printf("\t\t DepartureTime=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter.DepartureTime); + printf("\t\t EVMaximumCurrentLimit=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter.EVMaximumCurrentLimit.Value); + printf("\t\t EVMaximumPowerLimit=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter.EVMaximumPowerLimit.Value); + printf("\t\t EVMaximumVoltageLimit=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter.EVMaximumVoltageLimit.Value); + printf("\t\t EVEnergyCapacity=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter.EVEnergyCapacity.Value); + printf("\t\t EVEnergyRequest=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter.EVEnergyRequest.Value); + printf("\t\t FullSOC=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter.FullSOC); + printf("\t\t BulkSOC=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.DC_EVChargeParameter.BulkSOC); + + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes_isUsed = 1u; + + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.ResponseCode = responseCodeType_OK; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.EVSEProcessing = EVSEProcessingType_Finished; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter_isUsed = 1u; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.AC_EVSEChargeParameter_isUsed = 0u; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.DC_EVSEStatus.EVSEStatusCode = DC_EVSEStatusCodeType_EVSE_Ready; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.DC_EVSEStatus.EVSEIsolationStatus = isolationLevelType_Valid; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.DC_EVSEStatus.EVSEIsolationStatus_isUsed = 1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.DC_EVSEStatus.EVSENotification = EVSENotificationType_None; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.DC_EVSEStatus.NotificationMaxDelay = 10; + + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMinimumCurrentLimit.Multiplier = 0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMinimumCurrentLimit.Unit = unitSymbolType_A; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMinimumCurrentLimit.Value = 50; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMaximumPowerLimit.Multiplier = 0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMaximumPowerLimit.Unit = unitSymbolType_W; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMaximumPowerLimit.Value = 20000; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMaximumVoltageLimit.Multiplier = 0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMaximumVoltageLimit.Unit = unitSymbolType_V; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMaximumVoltageLimit.Value = 400; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMinimumCurrentLimit.Multiplier = 0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMinimumCurrentLimit.Unit = unitSymbolType_A; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMinimumCurrentLimit.Value = 5; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMinimumVoltageLimit.Multiplier = 0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMinimumVoltageLimit.Unit = unitSymbolType_V; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEMinimumVoltageLimit.Value = 200; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSECurrentRegulationTolerance.Multiplier = 0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSECurrentRegulationTolerance.Unit = unitSymbolType_A; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSECurrentRegulationTolerance.Value = 2; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSECurrentRegulationTolerance_isUsed = 1u; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEPeakCurrentRipple.Multiplier = 0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEPeakCurrentRipple.Unit = unitSymbolType_A; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEPeakCurrentRipple.Value = 1; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEEnergyToBeDelivered.Multiplier = 0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEEnergyToBeDelivered.Unit = unitSymbolType_W; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEEnergyToBeDelivered.Value = 5000; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter.EVSEEnergyToBeDelivered_isUsed = 1u; + + + /* set up a PMax schedule */ + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList_isUsed = 1u; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SAScheduleTupleID = 10; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff_isUsed = 0; /* no tariffs */ + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.arrayLen = 2; + /* set up two PMax entries: #1 */ + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Value=20000; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Unit = unitSymbolType_W; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Multiplier =0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval_isUsed = 1u; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.start=0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.duration_isUsed = 0; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].PMax.Value=0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].PMax.Unit = unitSymbolType_W; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].PMax.Multiplier =0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].RelativeTimeInterval_isUsed = 1u; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].RelativeTimeInterval.start=1200; /* 20 min */ + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].RelativeTimeInterval.duration_isUsed =0; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.arrayLen =2; /* we set up two time entries */ + + + /* #2 */ + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SAScheduleTupleID = 15; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Value = 10000; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Unit = unitSymbolType_W; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Multiplier =0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.start=0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval_isUsed = 1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.duration_isUsed = 0u; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[1].PMax.Value=0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[1].PMax.Unit = unitSymbolType_W; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[1].PMax.Multiplier =1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[1].RelativeTimeInterval.start=1800; /* 30 min */ + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[1].RelativeTimeInterval_isUsed = 1u; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[1].RelativeTimeInterval.duration=3600; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[1].RelativeTimeInterval.duration_isUsed = 1u; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.arrayLen =2; /* we set up two time entries */ + + + + + } else { /* AC related */ + + printf("\t\t DepartureTime=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.AC_EVChargeParameter.DepartureTime); + printf("\t\t EAmount=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.AC_EVChargeParameter.EAmount.Value); + printf("\t\t EVMaxCurrent=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.AC_EVChargeParameter.EVMaxCurrent.Value); + printf("\t\t EVMaxVoltage=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.AC_EVChargeParameter.EVMaxVoltage.Value); + printf("\t\t EVMinCurrent=%d\n", exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq.AC_EVChargeParameter.EVMinCurrent.Value); + + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes_isUsed = 1u; + + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.ResponseCode = responseCodeType_OK; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.EVSEProcessing = EVSEProcessingType_Finished; + + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.AC_EVSEChargeParameter_isUsed = 1u; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.DC_EVSEChargeParameter_isUsed = 0u; + + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.AC_EVSEChargeParameter.AC_EVSEStatus.RCD =1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.AC_EVSEChargeParameter.AC_EVSEStatus.EVSENotification = EVSENotificationType_None; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.AC_EVSEChargeParameter.AC_EVSEStatus.NotificationMaxDelay=123; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.AC_EVSEChargeParameter.EVSEMaxCurrent.Multiplier = 0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.AC_EVSEChargeParameter.EVSEMaxCurrent.Unit = unitSymbolType_A; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.AC_EVSEChargeParameter.EVSEMaxCurrent.Value = 100; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.AC_EVSEChargeParameter.EVSENominalVoltage.Multiplier = 0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.AC_EVSEChargeParameter.EVSENominalVoltage.Unit = unitSymbolType_V; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.AC_EVSEChargeParameter.EVSENominalVoltage.Value = 300; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.EVSEProcessing = 1; + + /* set up a PMax schedule */ + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList_isUsed = 1u; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SAScheduleTupleID = 10; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff_isUsed = 0; /* no tariffs */ + + + /* set up two PMax entries: #1 */ + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Value=20000; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Unit = unitSymbolType_W; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Multiplier =0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.start=0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval_isUsed = 1u; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.duration_isUsed =0; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].PMax.Value=0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].PMax.Unit = unitSymbolType_W; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].PMax.Multiplier =0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].RelativeTimeInterval.start=1200; /* 20 min */ + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].RelativeTimeInterval_isUsed = 1u; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.array[1].RelativeTimeInterval.duration_isUsed =0; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].PMaxSchedule.PMaxScheduleEntry.arrayLen =2; /* we set up two time entries */ + + /* set up sale entries */ + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.NumEPriceLevels=2; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.NumEPriceLevels_isUsed = 1u; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.SalesTariffID=20; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.Id.characters[0]=100; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.Id.charactersLen=1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.Id_isUsed =1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.SalesTariffEntry.array[0].EPriceLevel=2; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.SalesTariffEntry.array[0].EPriceLevel_isUsed =1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.SalesTariffEntry.array[0].ConsumptionCost.arrayLen =0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.SalesTariffEntry.array[0].RelativeTimeInterval.start=0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.SalesTariffEntry.array[0].RelativeTimeInterval_isUsed = 1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.SalesTariffEntry.array[0].RelativeTimeInterval.duration=10; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[0].SalesTariff.SalesTariffEntry.array[0].RelativeTimeInterval.duration_isUsed =1; + + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].EPriceLevel=3; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].RelativeTimeInterval.start=11; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].RelativeTimeInterval.duration=10; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].RelativeTimeInterval_isUsed = 1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].RelativeTimeInterval.duration_isUsed =1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].ConsumptionCost.array[0].Cost.array[0].amount=10; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].ConsumptionCost.array[0].Cost.array[0].amountMultiplier=1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].ConsumptionCost.array[0].Cost.array[0].amountMultiplier_isUsed =1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].ConsumptionCost.array[0].Cost.array[0].costKind= costKindType_RenewableGenerationPercentage; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].ConsumptionCost.array[0].startValue.Value=123; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].ConsumptionCost.array[0].Cost.arrayLen = 1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].EPriceLevel_isUsed =1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].SalesTariff.SalesTariffEntry.array[1].ConsumptionCost.arrayLen = 1; + + + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.arrayLen = 1; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[0].TimeInterval_isUsed = 1u; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Value=0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Multiplier = 0; + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.array[1].PMaxSchedule.PMaxScheduleEntry.array[0].PMax.Value = 0; + + exiOut->V2G_Message.Body.ChargeParameterDiscoveryRes.SAScheduleList.SAScheduleTuple.arrayLen = 2; + } + + return 0; +} + + +static int powerDelivery(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + int i; + + printf("EVSE side: powerDelivery called\n" ); + printf("\tReceived data:\n"); + + printf("\t\t ChargeProgress=%d\n", exiIn->V2G_Message.Body.PowerDeliveryReq.ChargeProgress); + printf("\t\t SAScheduleTupleID=%d\n", exiIn->V2G_Message.Body.PowerDeliveryReq.SAScheduleTupleID); + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.PowerDeliveryRes_isUsed = 1u; + + + if(exiIn->V2G_Message.Body.PowerDeliveryReq.DC_EVPowerDeliveryParameter_isUsed) { + + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", exiIn->V2G_Message.Body.PowerDeliveryReq.DC_EVPowerDeliveryParameter.DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n",exiIn->V2G_Message.Body.PowerDeliveryReq.DC_EVPowerDeliveryParameter.DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", exiIn->V2G_Message.Body.PowerDeliveryReq.DC_EVPowerDeliveryParameter.DC_EVStatus.EVErrorCode); + + printf("\t\t BulkChargingComplete=%d\n", exiIn->V2G_Message.Body.PowerDeliveryReq.DC_EVPowerDeliveryParameter.BulkChargingComplete); + printf("\t\t ChargingComplete=%d\n", exiIn->V2G_Message.Body.PowerDeliveryReq.DC_EVPowerDeliveryParameter.ChargingComplete); + + if(exiIn->V2G_Message.Body.PowerDeliveryReq.ChargingProfile_isUsed) { + printf("\t\t\tChargingProfile:\n"); + printf("\t\t\t SAScheduleTupleID=%d\n",exiIn->V2G_Message.Body.PowerDeliveryReq.SAScheduleTupleID ); + for(i=0;iV2G_Message.Body.PowerDeliveryReq.ChargingProfile.ProfileEntry.arrayLen;i++) { + printf("\t\t\t Entry#%d\n",i); + printf("\t\t\t\t ChargingProfileEntryMaxPower=%d (%d %d) \n", exiIn->V2G_Message.Body.PowerDeliveryReq.ChargingProfile.ProfileEntry.array[i].ChargingProfileEntryMaxPower.Value, exiIn->V2G_Message.Body.PowerDeliveryReq.ChargingProfile.ProfileEntry.array[i].ChargingProfileEntryMaxPower.Unit, exiIn->V2G_Message.Body.PowerDeliveryReq.ChargingProfile.ProfileEntry.array[i].ChargingProfileEntryMaxPower.Multiplier); + printf("\t\t\t\t ChargingProfileEntryStart=%d\n",exiIn->V2G_Message.Body.PowerDeliveryReq.ChargingProfile.ProfileEntry.array[i].ChargingProfileEntryStart); + printf("\t\t\t\t ChargingProfileEntryMaxNumberOfPhasesInUse=%d\n", exiIn->V2G_Message.Body.PowerDeliveryReq.ChargingProfile.ProfileEntry.array[i].ChargingProfileEntryMaxNumberOfPhasesInUse); + + } + } + + exiOut->V2G_Message.Body.PowerDeliveryRes.ResponseCode = responseCodeType_OK; + exiOut->V2G_Message.Body.PowerDeliveryRes.DC_EVSEStatus.EVSEIsolationStatus =0; + exiOut->V2G_Message.Body.PowerDeliveryRes.DC_EVSEStatus.EVSEIsolationStatus_isUsed = 1; + exiOut->V2G_Message.Body.PowerDeliveryRes.DC_EVSEStatus.EVSEStatusCode = DC_EVSEStatusCodeType_EVSE_Ready; + exiOut->V2G_Message.Body.PowerDeliveryRes.DC_EVSEStatus.EVSENotification = EVSENotificationType_None; + exiOut->V2G_Message.Body.PowerDeliveryRes.DC_EVSEStatus.NotificationMaxDelay = 123; + + exiOut->V2G_Message.Body.PowerDeliveryRes.DC_EVSEStatus_isUsed = 1; + exiOut->V2G_Message.Body.PowerDeliveryRes.AC_EVSEStatus_isUsed = 0; + + + } else { + exiOut->V2G_Message.Body.PowerDeliveryRes.ResponseCode = responseCodeType_OK; + exiOut->V2G_Message.Body.PowerDeliveryRes.AC_EVSEStatus.RCD=0; + exiOut->V2G_Message.Body.PowerDeliveryRes.AC_EVSEStatus.EVSENotification=3; + exiOut->V2G_Message.Body.PowerDeliveryRes.AC_EVSEStatus.NotificationMaxDelay=12; + + exiOut->V2G_Message.Body.PowerDeliveryRes.AC_EVSEStatus_isUsed = 1; + exiOut->V2G_Message.Body.PowerDeliveryRes.DC_EVSEStatus_isUsed = 0; + } + + return 0; +} + + +static int chargingStatus(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE side: chargingStatus called\n" ); + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.ChargingStatusRes_isUsed = 1u; + + exiOut->V2G_Message.Body.ChargingStatusRes.ResponseCode = responseCodeType_OK; + exiOut->V2G_Message.Body.ChargingStatusRes.EVSEID.characters[0]=12; + exiOut->V2G_Message.Body.ChargingStatusRes.EVSEID.charactersLen =1; + + exiOut->V2G_Message.Body.ChargingStatusRes.AC_EVSEStatus.RCD=1; + exiOut->V2G_Message.Body.ChargingStatusRes.AC_EVSEStatus.EVSENotification = EVSENotificationType_None; + exiOut->V2G_Message.Body.ChargingStatusRes.AC_EVSEStatus.NotificationMaxDelay=123; + exiOut->V2G_Message.Body.ChargingStatusRes.ReceiptRequired=1; + exiOut->V2G_Message.Body.ChargingStatusRes.ReceiptRequired_isUsed =1; + exiOut->V2G_Message.Body.ChargingStatusRes.EVSEMaxCurrent.Multiplier = 2; + exiOut->V2G_Message.Body.ChargingStatusRes.EVSEMaxCurrent.Unit = unitSymbolType_A; + + exiOut->V2G_Message.Body.ChargingStatusRes.EVSEMaxCurrent.Value = 400; + exiOut->V2G_Message.Body.ChargingStatusRes.EVSEMaxCurrent_isUsed =1; + exiOut->V2G_Message.Body.ChargingStatusRes.SAScheduleTupleID=10; + + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo_isUsed =1; + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo.MeterID.charactersLen =1; + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo.MeterID.characters[0]=2; + + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo.MeterReading = 5000; + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo.MeterStatus = 4321; + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo.TMeter =123456789; + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo.SigMeterReading.bytes[0]=123; + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo.SigMeterReading.bytesLen=1; + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo.MeterReading_isUsed = 1; + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo.MeterStatus_isUsed =1; + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo.TMeter_isUsed=1; + exiOut->V2G_Message.Body.ChargingStatusRes.MeterInfo.SigMeterReading_isUsed =1; + + return 0; +} + + +static int meteringReceipt(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE side: meteringReceipt called\n" ); + printf("\tReceived data:\n"); + + printf("\t\t ID=%c%c%c\n", exiIn->V2G_Message.Body.MeteringReceiptReq.Id.characters[0], exiIn->V2G_Message.Body.MeteringReceiptReq.Id.characters[1], exiIn->V2G_Message.Body.MeteringReceiptReq.Id.characters[2]); + printf("\t\t SAScheduleTupleID=%d\n", exiIn->V2G_Message.Body.MeteringReceiptReq.SAScheduleTupleID); + printf("\t\t SessionID=%d\n", exiIn->V2G_Message.Body.MeteringReceiptReq.SessionID.bytes[1]); + printf("\t\t MeterInfo.MeterStatus=%d\n", exiIn->V2G_Message.Body.MeteringReceiptReq.MeterInfo.MeterStatus); + printf("\t\t MeterInfo.MeterID=%d\n", exiIn->V2G_Message.Body.MeteringReceiptReq.MeterInfo.MeterID.characters[0]); + printf("\t\t MeterInfo.isused.MeterReading=%d\n", exiIn->V2G_Message.Body.MeteringReceiptReq.MeterInfo.MeterReading_isUsed); + printf("\t\t MeterReading.Value=%lu\n", (long unsigned int)exiIn->V2G_Message.Body.MeteringReceiptReq.MeterInfo.MeterReading); + printf("\t\t MeterInfo.TMeter=%li\n", (long int)exiIn->V2G_Message.Body.MeteringReceiptReq.MeterInfo.TMeter); + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.MeteringReceiptRes_isUsed = 1u; + + exiOut->V2G_Message.Body.MeteringReceiptRes.ResponseCode = responseCodeType_OK; + + exiOut->V2G_Message.Body.MeteringReceiptRes.AC_EVSEStatus.RCD=1; + exiOut->V2G_Message.Body.MeteringReceiptRes.AC_EVSEStatus.EVSENotification= EVSENotificationType_None; + exiOut->V2G_Message.Body.MeteringReceiptRes.AC_EVSEStatus.NotificationMaxDelay=123; + + return 0; +} + +static int sessionStop(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE side: sessionStop called\n" ); + printf("\tReceived data:\n"); + printf("\tHeader SessionID="); + printBinaryArray(exiIn->V2G_Message.Header.SessionID.bytes, exiIn->V2G_Message.Header.SessionID.bytesLen); + printf("\t\t ChargingSession=%d\n", exiIn->V2G_Message.Body.SessionStopReq.ChargingSession); + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.SessionStopRes_isUsed = 1u; + + exiOut->V2G_Message.Body.SessionStopRes.ResponseCode = responseCodeType_OK; + + return 0; +} + +static int cableCheck(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE side: cableCheck called\n" ); + printf("\tReceived data:\n"); + + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", exiIn->V2G_Message.Body.CableCheckReq.DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n", exiIn->V2G_Message.Body.CableCheckReq.DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", exiIn->V2G_Message.Body.CableCheckReq.DC_EVStatus.EVErrorCode); + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.CableCheckRes_isUsed = 1u; + + exiOut->V2G_Message.Body.CableCheckRes.ResponseCode = responseCodeType_OK; + + exiOut->V2G_Message.Body.CableCheckRes.EVSEProcessing = EVSEProcessingType_Finished; + exiOut->V2G_Message.Body.CableCheckRes.DC_EVSEStatus.EVSEIsolationStatus= isolationLevelType_Valid; + exiOut->V2G_Message.Body.CableCheckRes.DC_EVSEStatus.EVSEIsolationStatus_isUsed = 1u; + exiOut->V2G_Message.Body.CableCheckRes.DC_EVSEStatus.EVSEStatusCode = DC_EVSEStatusCodeType_EVSE_Ready; + exiOut->V2G_Message.Body.CableCheckRes.DC_EVSEStatus.EVSENotification= EVSENotificationType_None; + exiOut->V2G_Message.Body.CableCheckRes.DC_EVSEStatus.NotificationMaxDelay = 1234; + + return 0; +} + +static int preCharge(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE side: preCharge called\n" ); + printf("\tReceived data:\n"); + + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", exiIn->V2G_Message.Body.PreChargeReq.DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n", exiIn->V2G_Message.Body.PreChargeReq.DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", exiIn->V2G_Message.Body.PreChargeReq.DC_EVStatus.EVErrorCode); + + printf("\t\t EVTargetCurrent=%d (%d %d)\n", exiIn->V2G_Message.Body.PreChargeReq.EVTargetCurrent.Value, exiIn->V2G_Message.Body.PreChargeReq.EVTargetCurrent.Unit, exiIn->V2G_Message.Body.PreChargeReq.EVTargetCurrent.Multiplier); + printf("\t\t EVTargetVoltage=%d (%d %d)\n", exiIn->V2G_Message.Body.PreChargeReq.EVTargetVoltage.Value, exiIn->V2G_Message.Body.PreChargeReq.EVTargetVoltage.Unit, exiIn->V2G_Message.Body.PreChargeReq.EVTargetVoltage.Multiplier); + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.PreChargeRes_isUsed = 1u; + + exiOut->V2G_Message.Body.PreChargeRes.ResponseCode = responseCodeType_OK; + + + exiOut->V2G_Message.Body.PreChargeRes.DC_EVSEStatus.EVSEIsolationStatus= isolationLevelType_Valid; + exiOut->V2G_Message.Body.PreChargeRes.DC_EVSEStatus.EVSEIsolationStatus_isUsed = 1u; + exiOut->V2G_Message.Body.PreChargeRes.DC_EVSEStatus.EVSEStatusCode = DC_EVSEStatusCodeType_EVSE_Ready; + exiOut->V2G_Message.Body.PreChargeRes.DC_EVSEStatus.EVSENotification = EVSENotificationType_None; + exiOut->V2G_Message.Body.PreChargeRes.DC_EVSEStatus.NotificationMaxDelay= 1234; + + exiOut->V2G_Message.Body.PreChargeRes.EVSEPresentVoltage.Multiplier = 0; + exiOut->V2G_Message.Body.PreChargeRes.EVSEPresentVoltage.Unit = unitSymbolType_V; + exiOut->V2G_Message.Body.PreChargeRes.EVSEPresentVoltage.Value= 100; + + return 0; +} + + +static int currentDemand(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE side: currentDemand called\n" ); + printf("\tReceived data:\n"); + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.DC_EVStatus.EVErrorCode); + + + printf("\t\t EVTargetCurrent=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.EVTargetCurrent.Value); + printf("\t\t EVMaximumVoltageLimit=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit.Value); + printf("\t\t EVMaximumPowerLimit=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit.Value); + printf("\t\t EVMaximumCurrentLimit=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit.Value); + printf("\t\t BulkChargingComplete=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.BulkChargingComplete); + printf("\t\t ChargingComplete=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.ChargingComplete); + printf("\t\t RemainingTimeToFullSoC=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.RemainingTimeToFullSoC.Value); + printf("\t\t RemainingTimeToBulkSoC=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.RemainingTimeToBulkSoC.Value); + + printf("\t\t EVTargetVoltage=%d\n", exiIn->V2G_Message.Body.CurrentDemandReq.EVTargetVoltage.Value); + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.CurrentDemandRes_isUsed = 1u; + + exiOut->V2G_Message.Body.CurrentDemandRes.ResponseCode = responseCodeType_OK; + + exiOut->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEIsolationStatus= isolationLevelType_Valid; + exiOut->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEIsolationStatus_isUsed = 1; + exiOut->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEStatusCode = DC_EVSEStatusCodeType_EVSE_Ready; + exiOut->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSENotification= EVSENotificationType_None; + exiOut->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.NotificationMaxDelay=1234; + + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Multiplier = 0; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Unit = unitSymbolType_V; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Value = 400; + + + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Multiplier = 0; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Unit = unitSymbolType_A; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Value = 45; + + exiOut->V2G_Message.Body.CurrentDemandRes.EVSECurrentLimitAchieved=0; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEVoltageLimitAchieved=1; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEPowerLimitAchieved=0; + + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Multiplier = 0; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Unit = unitSymbolType_V; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Value = 400; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit_isUsed = 1u; + + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Multiplier = 0; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Unit = unitSymbolType_A; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Value = 50; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit_isUsed = 1u; + + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Multiplier = 0; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Unit = unitSymbolType_W; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Value = 20000; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit_isUsed = 1u; + + + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEID.characters[0]=12; + exiOut->V2G_Message.Body.CurrentDemandRes.EVSEID.charactersLen = 1; + + exiOut->V2G_Message.Body.CurrentDemandRes.SAScheduleTupleID = 123; + + + exiOut->V2G_Message.Body.CurrentDemandRes.MeterInfo_isUsed = 1u; + exiOut->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterID.charactersLen =1; + exiOut->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterID.characters[0]=2; + + exiOut->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterReading = 500; + exiOut->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterStatus = 4321; + exiOut->V2G_Message.Body.CurrentDemandRes.MeterInfo.TMeter =123456789; + exiOut->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterReading_isUsed = 1; + exiOut->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterStatus_isUsed =1; + exiOut->V2G_Message.Body.CurrentDemandRes.MeterInfo.TMeter_isUsed =1; + exiOut->V2G_Message.Body.CurrentDemandRes.MeterInfo.SigMeterReading_isUsed =0; + + exiOut->V2G_Message.Body.CurrentDemandRes.ReceiptRequired = 1; + exiOut->V2G_Message.Body.CurrentDemandRes.ReceiptRequired_isUsed =1; + + return 0; +} + + +static int weldingDetection(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + + printf("EVSE side: weldingDetection called\n" ); + printf("\tReceived data:\n"); + printf("\t\t EVStatus:\n"); + printf("\t\t\t EVReady=%d\n", exiIn->V2G_Message.Body.WeldingDetectionReq.DC_EVStatus.EVReady); + printf("\t\t\t EVRESSSOC=%d\n", exiIn->V2G_Message.Body.WeldingDetectionReq.DC_EVStatus.EVRESSSOC); + printf("\t\t\t EVErrorCode=%d\n", exiIn->V2G_Message.Body.WeldingDetectionReq.DC_EVStatus.EVErrorCode); + + /* Prepare data for EV */ + exiOut->V2G_Message_isUsed = 1u; + init_v2gBodyType(&exiOut->V2G_Message.Body); + exiOut->V2G_Message.Body.WeldingDetectionRes_isUsed = 1u; + + exiOut->V2G_Message.Body.WeldingDetectionRes.ResponseCode = responseCodeType_OK; + + exiOut->V2G_Message.Body.WeldingDetectionRes.DC_EVSEStatus.EVSEIsolationStatus= isolationLevelType_Valid; + exiOut->V2G_Message.Body.WeldingDetectionRes.DC_EVSEStatus.EVSEIsolationStatus_isUsed = 1; + exiOut->V2G_Message.Body.WeldingDetectionRes.DC_EVSEStatus.EVSEStatusCode = DC_EVSEStatusCodeType_EVSE_Ready; + exiOut->V2G_Message.Body.WeldingDetectionRes.DC_EVSEStatus.EVSENotification= EVSENotificationType_None; + exiOut->V2G_Message.Body.WeldingDetectionRes.DC_EVSEStatus.NotificationMaxDelay=123; + exiOut->V2G_Message.Body.WeldingDetectionRes.EVSEPresentVoltage.Value = 1234; + exiOut->V2G_Message.Body.WeldingDetectionRes.EVSEPresentVoltage.Unit = unitSymbolType_V; + exiOut->V2G_Message.Body.WeldingDetectionRes.EVSEPresentVoltage.Multiplier = 0; + + return 0; +} + + +static int create_response_message(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + int errn = ERROR_UNEXPECTED_REQUEST_MESSAGE; + + /* create response message as EXI document */ + if(exiIn->V2G_Message_isUsed) { + init_v2gEXIDocument(exiOut); + if (exiIn->V2G_Message.Body.SessionSetupReq_isUsed) { + errn = sessionSetup(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.ServiceDiscoveryReq_isUsed) { + errn = serviceDiscovery(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.ServiceDetailReq_isUsed) { + errn = serviceDetail(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.PaymentServiceSelectionReq_isUsed) { + errn = paymentServiceSelection(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.PaymentDetailsReq_isUsed) { + errn = paymentDetails(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.AuthorizationReq_isUsed) { + errn = authorization(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.ChargeParameterDiscoveryReq_isUsed) { + errn = chargeParameterDiscovery(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.PowerDeliveryReq_isUsed) { + errn = powerDelivery(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.ChargingStatusReq_isUsed) { + errn = chargingStatus(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.MeteringReceiptReq_isUsed) { + errn = meteringReceipt(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.SessionStopReq_isUsed) { + errn = sessionStop(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.CableCheckReq_isUsed) { + errn = cableCheck(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.PreChargeReq_isUsed) { + errn = preCharge(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.CurrentDemandReq_isUsed) { + errn = currentDemand(exiIn, exiOut); + } else if (exiIn->V2G_Message.Body.WeldingDetectionReq_isUsed) { + errn = weldingDetection(exiIn, exiOut); + } + } + + return errn; +} + +/* Adapt this to your system setup! */ +/* In this situation EV and EVSE is the same party */ +static int request_response(struct v2gEXIDocument* exiIn, struct v2gEXIDocument* exiOut) { + int errn; + + bitstream_t stream1; + bitstream_t stream2; + + uint16_t pos1; + uint16_t pos2; + + stream1.size = BUFFER_SIZE; + stream1.data = buffer1; + stream1.pos = &pos1; + + stream2.size = BUFFER_SIZE; + stream2.data = buffer2; + stream2.pos = &pos2; + + /* EV side */ + errn = serializeEXI2Stream(exiIn, &stream1); + + /* --> Start of EVSE side */ + /* deserialize request message */ + if (errn == 0) { + errn = deserializeStream2EXI(&stream1, exiOut); + } + /* create response message */ + if (errn == 0) { + errn = create_response_message(exiOut, exiIn); + } + /* serialize response message */ + if (errn == 0) { + errn = serializeEXI2Stream(exiIn, &stream2); + } + /* <-- End of EVSE side */ + + + /* EV side */ + /* deserialize response message */ + if (errn == 0) { + errn = deserializeStream2EXI(&stream2, exiOut); + } + + return errn; +} + + + +static int ac_charging() +{ + int errn = 0; + int i, j; + + struct v2gEXIDocument exiIn; + struct v2gEXIDocument exiOut; + + struct v2gServiceDiscoveryResType serviceDiscoveryRes; + struct v2gServiceDetailResType serviceDetailRes; + struct v2gPaymentServiceSelectionResType paymentServiceSelectionRes; + struct v2gPaymentDetailsResType paymentDetailsRes; + + /* setup header information */ + init_v2gEXIDocument(&exiIn); + exiIn.V2G_Message_isUsed = 1u; + init_v2gMessageHeaderType(&exiIn.V2G_Message.Header); + exiIn.V2G_Message.Header.SessionID.bytes[0] = 0; /* sessionID is always '0' at the beginning (the response contains the valid sessionID)*/ + exiIn.V2G_Message.Header.SessionID.bytes[1] = 0; + exiIn.V2G_Message.Header.SessionID.bytes[2] = 0; + exiIn.V2G_Message.Header.SessionID.bytes[3] = 0; + exiIn.V2G_Message.Header.SessionID.bytes[4] = 0; + exiIn.V2G_Message.Header.SessionID.bytes[5] = 0; + exiIn.V2G_Message.Header.SessionID.bytes[6] = 0; + exiIn.V2G_Message.Header.SessionID.bytes[7] = 0; + exiIn.V2G_Message.Header.SessionID.bytesLen = 8; /* length of the byte session array is always 8*/ + exiIn.V2G_Message.Header.Notification_isUsed = 0u; /* no notification */ + exiIn.V2G_Message.Header.Signature_isUsed = 0u; + + + /************************ + * sessionSetup * + ************************/ + init_v2gBodyType(&exiIn.V2G_Message.Body); + exiIn.V2G_Message.Body.SessionSetupReq_isUsed = 1u; + + init_v2gSessionSetupReqType(&exiIn.V2G_Message.Body.SessionSetupReq); + + exiIn.V2G_Message.Body.SessionSetupReq.EVCCID.bytesLen = 1; + exiIn.V2G_Message.Body.SessionSetupReq.EVCCID.bytes[0] = 10; + + printf("EV side: call EVSE sessionSetup"); + + errn = request_response(&exiIn, &exiOut); + + if(errn == 0) { + /* check, if this is the right response message */ + if(exiOut.V2G_Message.Body.SessionSetupRes_isUsed) { + /* show results of EVSEs answer message */ + printf("EV side: received response message from EVSE\n"); + printf("\tHeader SessionID="); + printBinaryArray(exiOut.V2G_Message.Header.SessionID.bytes, exiOut.V2G_Message.Header.SessionID.bytesLen); + printf("\tResponseCode=%d\n", exiOut.V2G_Message.Body.SessionSetupRes.ResponseCode); + printf("\tEVSEID=%d\n", exiOut.V2G_Message.Body.SessionSetupRes.EVSEID.characters[1]); + printf("\tEVSETimeStamp=%li\n", (long int)exiOut.V2G_Message.Body.SessionSetupRes.EVSETimeStamp); + } else { + errn = ERROR_UNEXPECTED_SESSION_SETUP_RESP_MESSAGE; + return errn; + } + } + + + /******************************************* + * serviceDiscovery * + *******************************************/ + init_v2gBodyType(&exiIn.V2G_Message.Body); + exiIn.V2G_Message.Body.ServiceDiscoveryReq_isUsed = 1u; + + init_v2gServiceDiscoveryReqType(&exiIn.V2G_Message.Body.ServiceDiscoveryReq); + + exiIn.V2G_Message.Body.ServiceDiscoveryReq.ServiceCategory_isUsed = 1u; + exiIn.V2G_Message.Body.ServiceDiscoveryReq.ServiceCategory = serviceCategoryType_Internet; + exiIn.V2G_Message.Body.ServiceDiscoveryReq.ServiceScope_isUsed = 0u; + + printf("EV side: call EVSE serviceDiscovery"); + + errn = request_response(&exiIn, &exiOut); + + if(errn == 0) { + /* check, if this is the right response message */ + if(exiOut.V2G_Message.Body.ServiceDiscoveryRes_isUsed) { + serviceDiscoveryRes = exiOut.V2G_Message.Body.ServiceDiscoveryRes; + /* show results of EVSEs answer message */ + printf("EV side: received response message from EVSE\n"); + printf("\tHeader SessionID="); + printBinaryArray(exiOut.V2G_Message.Header.SessionID.bytes, exiOut.V2G_Message.Header.SessionID.bytesLen); + printf("\t ResponseCode=%d\n", exiOut.V2G_Message.Body.ServiceDiscoveryRes.ResponseCode); + printf("\t ServiceID=%d\n", exiOut.V2G_Message.Body.ServiceDiscoveryRes.ChargeService.ServiceID); + printf("\t ServiceName="); + printASCIIString(serviceDiscoveryRes.ChargeService.ServiceName.characters, serviceDiscoveryRes.ChargeService.ServiceName.charactersLen); + if(serviceDiscoveryRes.PaymentOptionList.PaymentOption.array[1] == paymentOptionType_Contract) { + printf("\t PaymentOption=Contract_paymentOptionType\n"); + } + if(serviceDiscoveryRes.ChargeService.FreeService==1) { + printf("\t ChargeService.FreeService=True\n"); + } + if(serviceDiscoveryRes.ChargeService.SupportedEnergyTransferMode.EnergyTransferMode.array[0] == EnergyTransferModeType_DC_combo_core) { + printf("\t EnergyTransferMode=AC_single_DC_core\n"); + } + if(serviceDiscoveryRes.ChargeService.SupportedEnergyTransferMode.EnergyTransferMode.array[1] == EnergyTransferModeType_AC_single_phase_core) { + printf("\t EnergyTransferMode=AC_single_phase_core_EnergyTransferModeType\n"); + } + printf("\t Value added service list:\n"); + for(i=0;i. - */ - -/******************************************************************* - * - * @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 index 32e0a43..e35e148 100644 --- a/src/transport/v2gtp.c +++ b/src/transport/v2gtp.c @@ -19,7 +19,8 @@ /******************************************************************* * * @author Sebastian.Kaebisch@siemens.com - * @version 0.8 + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.9 * @contact Joerg.Heuer@siemens.com * ********************************************************************/ @@ -39,7 +40,7 @@ #include "v2gtp.h" -int write_v2gtpHeader(uint8_t* outStream, uint16_t* outStreamLength, uint16_t payloadType) +int write_v2gtpHeader(uint8_t* outStream, uint16_t outStreamLength, uint16_t payloadType) { /* write v2gtp version number 1=byte */ @@ -54,18 +55,18 @@ int write_v2gtpHeader(uint8_t* outStream, uint16_t* outStreamLength, uint16_t pa 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); + 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; + /**outStreamLength += V2GTP_HEADER_LENGTH;*/ return 0; } -int read_v2gtpHeader(uint8_t* inStream, uint16_t inStreamLength, uint16_t* payloadLength) +int read_v2gtpHeader(uint8_t* inStream, uint16_t* payloadLength) { uint16_t payloadType=0; @@ -89,8 +90,8 @@ int read_v2gtpHeader(uint8_t* inStream, uint16_t inStreamLength, uint16_t* paylo *payloadLength = (*payloadLength << 8 | inStream[6]); *payloadLength = (*payloadLength << 8 | inStream[7]); - if((*payloadLength+V2GTP_HEADER_LENGTH)!=inStreamLength) - return -1; + /* if((*payloadLength+V2GTP_HEADER_LENGTH)!=inStreamLength) + return -1; */ return 0; } diff --git a/src/transport/v2gtp.h b/src/transport/v2gtp.h index c82347f..8f40bc7 100644 --- a/src/transport/v2gtp.h +++ b/src/transport/v2gtp.h @@ -19,7 +19,7 @@ /******************************************************************* * * @author Sebastian.Kaebisch@siemens.com - * @version 0.8 + * @version 0.9 * @contact Joerg.Heuer@siemens.com * ********************************************************************/ @@ -43,9 +43,9 @@ extern "C" { /* define V2GTP payload types*/ #define V2GTP_EXI_TYPE 0x8001 -int write_v2gtpHeader(uint8_t* outStream, uint16_t* outStreamLength, uint16_t payloadType); +int write_v2gtpHeader(uint8_t* outStream, uint16_t outStreamLength, uint16_t payloadType); -int read_v2gtpHeader(uint8_t* inStream, uint16_t inStreamLength, uint16_t* payloadLength); +int read_v2gtpHeader(uint8_t* inStream, uint16_t* payloadLength); #endif /* V2GTP_H_ */