From 9a9835ad3df65a875023f8f3ab0efb155d149541 Mon Sep 17 00:00:00 2001 From: daniel_peintner Date: Fri, 17 Sep 2010 09:48:32 +0000 Subject: [PATCH] * first code check-in (support for EXI stream) git-svn-id: https://svn.code.sf.net/p/openv2g/code/trunk@2 d9f2db14-54d0-4bde-b00c-16405c910529 --- .cproject | 936 +++ .project | 69 + LICENSE.txt | 165 + data/test/sessionSetupReq.xml | 21 + data/test/sessionSetupReq.xml_SCHEMA.exi | 1 + src/codec/BitDecoderChannel.c | 251 + src/codec/BitDecoderChannel.h | 117 + src/codec/BitEncoderChannel.c | 298 + src/codec/BitEncoderChannel.h | 133 + src/codec/BitInputStream.c | 100 + src/codec/BitInputStream.h | 44 + src/codec/BitOutputStream.c | 95 + src/codec/BitOutputStream.h | 48 + src/codec/BitStream.c | 106 + src/codec/BitStream.h | 48 + src/codec/EXICoder.c | 71 + src/codec/EXICoder.h | 51 + src/codec/EXIDecoder.c | 9483 ++++++++++++++++++++++ src/codec/EXIDecoder.h | 61 + src/codec/EXIEncoder.c | 6843 ++++++++++++++++ src/codec/EXIEncoder.h | 61 + src/codec/EXIHeader.c | 64 + src/codec/EXIHeader.h | 46 + src/codec/EXITypes.h | 195 + src/codec/StringTable.c | 113 + src/codec/StringTable.h | 53 + src/codec/StringTableEntries.c | 124 + src/codec/StringTableEntries.h | 60 + src/codec/UCSString.c | 64 + src/codec/UCSString.h | 48 + src/test/main_codec.c | 218 + 31 files changed, 19987 insertions(+) create mode 100644 .cproject create mode 100644 .project create mode 100644 LICENSE.txt create mode 100644 data/test/sessionSetupReq.xml create mode 100644 data/test/sessionSetupReq.xml_SCHEMA.exi create mode 100644 src/codec/BitDecoderChannel.c create mode 100644 src/codec/BitDecoderChannel.h create mode 100644 src/codec/BitEncoderChannel.c create mode 100644 src/codec/BitEncoderChannel.h create mode 100644 src/codec/BitInputStream.c create mode 100644 src/codec/BitInputStream.h create mode 100644 src/codec/BitOutputStream.c create mode 100644 src/codec/BitOutputStream.h create mode 100644 src/codec/BitStream.c create mode 100644 src/codec/BitStream.h create mode 100644 src/codec/EXICoder.c create mode 100644 src/codec/EXICoder.h create mode 100644 src/codec/EXIDecoder.c create mode 100644 src/codec/EXIDecoder.h create mode 100644 src/codec/EXIEncoder.c create mode 100644 src/codec/EXIEncoder.h create mode 100644 src/codec/EXIHeader.c create mode 100644 src/codec/EXIHeader.h create mode 100644 src/codec/EXITypes.h create mode 100644 src/codec/StringTable.c create mode 100644 src/codec/StringTable.h create mode 100644 src/codec/StringTableEntries.c create mode 100644 src/codec/StringTableEntries.h create mode 100644 src/codec/UCSString.c create mode 100644 src/codec/UCSString.h create mode 100644 src/test/main_codec.c diff --git a/.cproject b/.cproject new file mode 100644 index 0000000..f5697b5 --- /dev/null +++ b/.cproject @@ -0,0 +1,936 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..b94afb7 --- /dev/null +++ b/.project @@ -0,0 +1,69 @@ + + + OpenV2G + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/OpenV2G/Debug} + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..65c5ca8 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/data/test/sessionSetupReq.xml b/data/test/sessionSetupReq.xml new file mode 100644 index 0000000..18e0a5f --- /dev/null +++ b/data/test/sessionSetupReq.xml @@ -0,0 +1,21 @@ + + + + + 3031323334353637 + 1 + + + + + + 0 + 1 + + + + diff --git a/data/test/sessionSetupReq.xml_SCHEMA.exi b/data/test/sessionSetupReq.xml_SCHEMA.exi new file mode 100644 index 0000000..38cedcd --- /dev/null +++ b/data/test/sessionSetupReq.xml_SCHEMA.exi @@ -0,0 +1 @@ +˜A‰‘™¡©±ºcF€ \ No newline at end of file diff --git a/src/codec/BitDecoderChannel.c b/src/codec/BitDecoderChannel.c new file mode 100644 index 0000000..ee0492e --- /dev/null +++ b/src/codec/BitDecoderChannel.c @@ -0,0 +1,251 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + * Bit decoding functionalities + * + ********************************************************************/ + +#include +#include +#include +#include +#include + +#include "BitDecoderChannel.h" +#include "BitInputStream.h" +#include "EXITypes.h" + +#ifndef BIT_DECODER_CHANNEL_C +#define BIT_DECODER_CHANNEL_C + +int decode(bitstream_t* stream, uint8_t* b) { + return readBits(stream, 8, b); +} + +int decodeBoolean(bitstream_t* stream, int* b) { + uint8_t ub; + int errn = readBits(stream, 1, &ub); + *b = (ub == 0) ? 0 : 1; + return errn; +} + +int decodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint8_t* b) { + if (nbits == 0) { + *b = 0; + return 0; + } else { + return readBits(stream, nbits, b); + } +} + +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 */ + errno = 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 += (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 errno; +} + +/** + * 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 { + errno = decode(stream, &b); + *uint64 += ((uint64_t) (b & 127)) << mShift; + mShift += 7; + } while (errn >= 0 && (b >> 7) == 1); + + 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; + int errn = decodeBoolean(stream, &b); + + if (errn < 0) { + return errn; + } + + if (b) { + /* For negative values, the Unsigned Integer holds the + * magnitude of the value minus 1 */ + errn = decodeUnsignedInteger32(stream, int32); + *int32 = -(*int32 + 1); + return errn; + } else { + /* positive */ + return decodeUnsignedInteger32(stream, int32); + } +} + +/** + * 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; + int errn = decodeBoolean(stream, &b); + + if (errn < 0) { + return errn; + } + + if (b) { + /* For negative values, the Unsigned Integer holds the + * magnitude of the value minus 1 */ + errn = decodeUnsignedInteger64(stream, int64); + *int64 = -(*int64 + 1); + return errn; + } else { + /* positive */ + return decodeUnsignedInteger64(stream, int64); + } +} + +/** + * 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, float_me_t* f) { + int errn = decodeInteger64(stream, &f->mantissa); + if (errn < 0) { + return errn; + } + return decodeInteger32(stream, &f->exponent); +} + +/** + * Decode a sequence of characters for a given length. + */ +int decodeStringOnly(bitstream_t* stream, size_t len, string_ucs_t* s) { + decodeCharacters(stream, len, s->codepoints); + s->len = len; + return 0; +} + +/** + * Decode a length prefixed sequence of characters. + */ +int decodeString(bitstream_t* stream, string_ucs_t* s) { + int errn = decodeUnsignedInteger32(stream, &s->len); + if (errn < 0) { + return errn; + } + return decodeStringOnly(stream, s->len, s); +} + +int decodeStringValue(bitstream_t* stream, string_ucs_t* s) { + int errn = decodeUnsignedInteger32(stream, &s->len); + if (errn < 0) { + return errn; + } + + switch (s->len) { + case 0: + /* local value partition */ + printf("[ERROR] String local value partition hit not supported \n"); + return -2; + case 1: + /* found in global value partition */ + printf("[ERROR] String global value partition hit not supported \n"); + return -3; + default: + /* not found in global value (and local value) partition + * ==> string literal is encoded as a String with the length + * incremented by two */ + return decodeStringOnly(stream, ((s->len) - 2), s); + /* After encoding the string value, it is added to both the + * associated "local" value string table partition and the global + * value string table partition */ + /* addValue(context, value); */ + } +} + +/** + * 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, size_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, bytes_t* bytes) { + unsigned int i; + int errn = decodeUnsignedInteger32(stream, &bytes->len); + if (errn < 0) { + return errn; + } + + for (i = 0; i < bytes->len && errn >= 0; i++) { + errn = decode(stream, &bytes->data[i]); + } + + return errn; +} + +#endif + diff --git a/src/codec/BitDecoderChannel.h b/src/codec/BitDecoderChannel.h new file mode 100644 index 0000000..2188517 --- /dev/null +++ b/src/codec/BitDecoderChannel.h @@ -0,0 +1,117 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + +#ifndef BIT_DECODER_CHANNEL_H +#define BIT_DECODER_CHANNEL_H + +/** + * Decode a single boolean value. The value false is represented by the bit + * 0, and the value true is represented by the bit 1. + */ +int decodeBoolean(bitstream_t* stream, int* b); + +/** + * Decodes and returns an n-bit unsigned integer. + */ +int decodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint8_t* uint8 ); + +/** + * 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 decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32); + +/** + * 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); + +/** + * 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); + +/** + * 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); + +/** + * 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, float_me_t* f); + +/** + * Decode a length prefixed sequence of characters. + */ +int decodeString(bitstream_t* stream, string_ucs_t* s); + +/** + * 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 + * --> string literal is encoded as a String with the length incremented by two + */ +int decodeStringValue(bitstream_t* stream, string_ucs_t* s); + + +/** + * Decode a sequence of characters according to a given length. + */ +int decodeCharacters(bitstream_t* stream, size_t len, uint32_t* chars); + +/** + * Decode a binary value as a length-prefixed sequence of octets. + */ +int decodeBinary(bitstream_t* stream, bytes_t* bytes); + + +#endif + + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/BitEncoderChannel.c b/src/codec/BitEncoderChannel.c new file mode 100644 index 0000000..0d27d45 --- /dev/null +++ b/src/codec/BitEncoderChannel.c @@ -0,0 +1,298 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ +#include +#include +#include + +#include "BitEncoderChannel.h" +#include "BitOutputStream.h" +#include "EXITypes.h" + +#ifndef BIT_ENCODER_CHANNEL_C +#define BIT_ENCODER_CHANNEL_C + +/** + * Returns the least number of 7 bit-blocks that is needed to represent the + * int n. Returns 1 if n is 0. + * + * @param n + * integer value + * + */ +uint8_t numberOf7BitBlocksToRepresent(int 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; + } +} + + +int encode(bitstream_t* stream, uint8_t b) { + return writeBits(stream, b, 8); +} + +/** + * 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, val, 1); +} + + +/** + * 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, uint8_t val, size_t nbits) { + return writeBits(stream, val, nbits); +} + + + + +/** + * 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; + } + case 4: + errn = encode(stream, (uint8_t)(128 | n)); + n = n >> 7; + if (errn < 0) { + break; + } + case 3: + errn = encode(stream, (uint8_t)(128 | n)); + n = n >> 7; + if (errn < 0) { + break; + } + case 2: + errn = encode(stream, (uint8_t)(128 | n)); + n = n >> 7; + if (errn < 0) { + break; + } + case 1: + /* 0 .. 7 (last byte) */ + errn = encode(stream, (uint8_t)(0 | n)); + } + } + + 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 = encode(stream, lastEncode | 128); + if (errn < 0) { + return errn; + } + lastEncode = (uint8_t) n; + n >>= 7; + } + + return encode(stream, lastEncode); +} + + +/** + * 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) { + return errn; + } + return encodeUnsignedInteger32(stream, n); +} + +/** + * 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) { + return errn; + } + return encodeUnsignedInteger64(stream, n); +} + + +/** + * 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, float_me_t* f) { + int errn = encodeInteger64(stream, f->mantissa); + if (errn >= 0) { + errn = encodeInteger32(stream, f->exponent); + } + return errn; +} + + +/** + * Encode a length prefixed sequence of characters. + */ +int encodeString(bitstream_t* stream, string_ucs_t* string) { + int errn = encodeUnsignedInteger32(stream, string->len); + if (errn >= 0) { + errn = encodeCharacters(stream, string->codepoints, string->len); + } + return errn; +} + +int encodeStringValue(bitstream_t* stream, string_ucs_t* string) { + /* encode string as string table miss */ + int errn = encodeUnsignedInteger32(stream, string->len+2); + if (errn >= 0) { + errn = encodeCharacters(stream, string->codepoints, string->len); + } + 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, uint32_t* chars, size_t len) { + unsigned int i; + int errn = 0; + for(i=0; i=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, bytes_t* bytes) { + unsigned int i; + int errn = encodeUnsignedInteger32(stream, bytes->len); + + for(i=0; ilen && errn>=0; i++) { + errn = encode(stream, bytes->data[i]); + } + return errn; +} + +/** + * Flush underlying bit output stream. + */ +int encodeFinish(bitstream_t* stream) { + return flush(stream); +} + + +#endif + + + + + + + + + + + + diff --git a/src/codec/BitEncoderChannel.h b/src/codec/BitEncoderChannel.h new file mode 100644 index 0000000..950cba0 --- /dev/null +++ b/src/codec/BitEncoderChannel.h @@ -0,0 +1,133 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include "EXITypes.h" + +#ifndef BIT_ENCODER_CHANNEL_H +#define BIT_ENCODER_CHANNEL_H + +/** + * 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); + + +/** + * 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, uint8_t val, size_t nbits); + + +/** + * 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); + +/** + * 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); + +/** + * 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); + +/** + * 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); + +/** + * 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. + */ +int encodeFloat(bitstream_t* stream, float_me_t* f); + + +/** + * Encode a length prefixed sequence of characters. + */ +int encodeString(bitstream_t* stream, string_ucs_t* string); + +/** + * Encode a length prefixed sequence of characters in the sense of string tables + */ +int encodeStringValue(bitstream_t* stream, string_ucs_t* string); + +/** + * 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, uint32_t* chars, size_t len); + +/** + * Encode a binary value as a length-prefixed sequence of octets. + */ +int encodeBinary(bitstream_t* stream, bytes_t* bytes); + +/** + * Flush underlying bit output stream + */ +int encodeFinish(bitstream_t* stream); + + +#endif + + +#ifdef __cplusplus +} +#endif + + + + + + + + diff --git a/src/codec/BitInputStream.c b/src/codec/BitInputStream.c new file mode 100644 index 0000000..b83423c --- /dev/null +++ b/src/codec/BitInputStream.c @@ -0,0 +1,100 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#include +#include +#include + +#include "EXITypes.h" +#include "BitInputStream.h" + +#ifndef BIT_INPUT_STREAM_C +#define BIT_INPUT_STREAM_C + +/* internal method to (re)fill buffer */ +int readBuffer(bitstream_t* stream) +{ + int errn = 0; + if(stream->capacity==0) + { + if ( (*stream->pos) < stream->size ) { + stream->buffer = stream->data[(*stream->pos)++]; + stream->capacity = BITS_IN_BYTE; + } else { + errn = -1; + } + } + return errn; +} + +int readBits(bitstream_t* stream, size_t num_bits, uint8_t* b) +{ + int errn = readBuffer(stream); + if (errn < 0) { + return errn; + } + + /* read the bits in one step */ + if(num_bits <= stream->capacity) + { + stream->capacity -= num_bits; + *b = (stream->buffer >> stream->capacity) & (0xff >> (BITS_IN_BYTE - num_bits)); + } + else + { + /* read bits as much as possible */ + *b = stream->buffer & (0xff >> (BITS_IN_BYTE - stream->capacity)); + num_bits -= stream->capacity; + stream->capacity = 0; + + /* read whole bytes */ + while(num_bits >= 8) + { + errn = readBuffer(stream); + if (errn < 0) { + return errn; + } + *b = ((*b) << BITS_IN_BYTE) | stream->buffer; + num_bits -= BITS_IN_BYTE; + stream->capacity = 0; + } + + /* read the spare bits in the buffer */ + if(num_bits>0) + { + errn = readBuffer(stream); + if (errn < 0) { + return errn; + } + *b = ((*b) << num_bits) | (stream->buffer >> (BITS_IN_BYTE - num_bits)); + stream->capacity = BITS_IN_BYTE - num_bits; + } + + } + + return errn; +} + +#endif diff --git a/src/codec/BitInputStream.h b/src/codec/BitInputStream.h new file mode 100644 index 0000000..6a7f36f --- /dev/null +++ b/src/codec/BitInputStream.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2007-2010 Siemens AG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + +#ifndef BIT_INPUT_STREAM_H +#define BIT_INPUT_STREAM_H + +int readBits(bitstream_t* stream, size_t num_bits, uint8_t* b); + +int flush(); + +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/BitOutputStream.c b/src/codec/BitOutputStream.c new file mode 100644 index 0000000..9a4e812 --- /dev/null +++ b/src/codec/BitOutputStream.c @@ -0,0 +1,95 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#include + +#include "EXITypes.h" +#include "BitOutputStream.h" + +#ifndef BIT_OUTPUT_STREAM_C +#define BIT_OUTPUT_STREAM_C + +/* NOTE: nbits <= 8 */ +int writeBits(bitstream_t* stream, uint8_t val, size_t nbits) { + /* is there enough space in the buffer */ + if (nbits <= stream->capacity) { + /* all bits fit into the current buffer */ + stream->buffer = (stream->buffer << (nbits)) | (val & (0xff + >> (BITS_IN_BYTE - nbits))); + stream->capacity -= nbits; + /* if the buffer is full write it into the data */ + if (stream->capacity == 0) { + if ((*stream->pos) >= stream->size) { + return -1; + } + stream->data[(*stream->pos)++] = 0xFF & stream->buffer; + stream->capacity = BITS_IN_BYTE; + stream->buffer = 0; + } + } else { + /* the buffer is not enough + * fill the buffer */ + stream->buffer = (stream->buffer << stream->capacity) | ((val >> (nbits + - stream->capacity)) & (0xff >> (BITS_IN_BYTE + - stream->capacity))); + + nbits -= stream->capacity; + if ((*stream->pos) >= stream->size) { + return -1; + } + stream->data[(*stream->pos)++] = 0xFF & stream->buffer; + stream->buffer = 0; + + /* write whole bytes */ + while (nbits >= BITS_IN_BYTE) { + nbits -= BITS_IN_BYTE; + if ((*stream->pos) >= stream->size) { + return -1; + } + stream->data[(*stream->pos)++] = 0xFF & (val >> (nbits)); + } + + /* spared bits are kept in the buffer */ + stream->buffer = val; /* Note: the high bits will be shifted out during further filling */ + stream->capacity = BITS_IN_BYTE - (nbits); + } + + return 0; +} + +/** + * Flush output + */ +int flush(bitstream_t* stream) { + if (stream->capacity == BITS_IN_BYTE) { + /* nothing to do, no bits in buffer */ + return 0; + } else { + return writeBits(stream, 0, stream->capacity); + } +} + +#endif + diff --git a/src/codec/BitOutputStream.h b/src/codec/BitOutputStream.h new file mode 100644 index 0000000..ac04b3d --- /dev/null +++ b/src/codec/BitOutputStream.h @@ -0,0 +1,48 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include "EXITypes.h" + +#ifndef BIT_OUTPUT_STREAM_H +#define BIT_OUTPUT_STREAM_H + +int writeBits(bitstream_t* stream, uint8_t bits, size_t nbits); + +/* flush output */ +int flush(bitstream_t* stream); + +#endif + + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/BitStream.c b/src/codec/BitStream.c new file mode 100644 index 0000000..9bcd450 --- /dev/null +++ b/src/codec/BitStream.c @@ -0,0 +1,106 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#define _CRT_SECURE_NO_DEPRECATE 1 + +#include +#include +#include +#include +#include + +#include "EXITypes.h" + +#ifndef BIT_STREAM_C +#define BIT_STREAM_C + +int toBitstream(const char * filename, bitstream_t* bitstream) { + FILE* f; + // bitstream_t* bitstream; + int character; + size_t len = 0, pos = 0, i; + + f = fopen(filename, "rb"); + + // bitstream = malloc(sizeof(bitstream_t)); + + if (f == NULL) { + printf("\n[Error] no valid file handle !\n"); + return -1; + } else { + /* detect file size */ + while ((character = getc(f)) != EOF) { + /* printf("%u \n", character); */ + len++; + } + fclose(f); + /* printf("%u Zeichen", len); */ + + /* setup stream */ + bitstream->data = malloc(sizeof(uint8_t) * len); + bitstream->size = len; + bitstream->pos = &pos; + bitstream->buffer = 0; + bitstream->capacity = 8; + + /* read file byte per byte */ + f = fopen(filename, "rb"); + i = 0; + while ((character = getc(f)) != EOF) { + bitstream->data[i] = (uint8_t) character; + i++; + } + fclose(f); + } + + return 0; +} + +int writeBytesToFile(uint8_t* data, size_t len, const char * filename) { + size_t rlen; + FILE* f = fopen(filename, "wb+"); + + if (f == NULL) { + return -1; + } else { + rlen = fwrite(data, sizeof(uint8_t), len, f); + fflush(f); + fclose(f); + if(rlen == len) { + return 0; + } else { + return -1; + } + } +} + +int writeBitstreamToFile(bitstream_t* bitsream, const char * filename) { + return writeBytesToFile(bitsream->data, bitsream->size, filename); +} + + + +#endif + diff --git a/src/codec/BitStream.h b/src/codec/BitStream.h new file mode 100644 index 0000000..825ac20 --- /dev/null +++ b/src/codec/BitStream.h @@ -0,0 +1,48 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include "EXITypes.h" + +#ifndef BIT_STREAM_H +#define BIT_STREAM_H + +int writeBytesToFile(uint8_t* data, size_t len, const char * filename); + +int writeBitstreamToFile(bitstream_t* bitsream, const char * filename); + +int toBitstream(const char * filename, bitstream_t* bitstream); + +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/EXICoder.c b/src/codec/EXICoder.c new file mode 100644 index 0000000..57e3d6c --- /dev/null +++ b/src/codec/EXICoder.c @@ -0,0 +1,71 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifndef EXI_CODER_C +#define EXI_CODER_C + +#include +#include +#include +#include + +#include "EXITypes.h" +#include "BitInputStream.h" +#include "BitDecoderChannel.h" + +#include "assert.h" +#include "EXICoder.h" +#include "EXIHeader.h" + +/* + size_t exiGetCurrentState(struct exiState* state) { + return state->grammarStates[state->currentStack]; + // return 0; + } + */ + +int exiPushStack(exi_state_t* state, size_t newState, eqname_t* eqn) { + if ((state->stackIndex + 1) < EXI_ELEMENT_STACK_SIZE) { + state->grammarStack[++state->stackIndex] = newState; + // copy qname + state->elementStack[state->stackIndex].localPart = eqn->localPart; + state->elementStack[state->stackIndex].namespaceURI = eqn->namespaceURI; + return 0; + } else { + return EXI_ERROR_OUT_OF_BOUNDS; + } +} + +int exiPopStack(exi_state_t* state) { + if (state->stackIndex >= 1) { + state->stackIndex--; + return 0; + } else { + return EXI_ERROR_OUT_OF_BOUNDS; + } +} + +#endif + diff --git a/src/codec/EXICoder.h b/src/codec/EXICoder.h new file mode 100644 index 0000000..84715d7 --- /dev/null +++ b/src/codec/EXICoder.h @@ -0,0 +1,51 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_CODER_H +#define EXI_CODER_H + +#include +#include +#include + +#include "EXITypes.h" + + +// size_t exiGetCurrentState(struct exiState* state); + +int exiPushStack(exi_state_t* state, size_t newState, eqname_t* eqn); + +int exiPopStack(exi_state_t* state); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/EXIDecoder.c b/src/codec/EXIDecoder.c new file mode 100644 index 0000000..c0bc482 --- /dev/null +++ b/src/codec/EXIDecoder.c @@ -0,0 +1,9483 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + *

NOTE: Code generated by EXIdizer v0.1

+ ********************************************************************/ + +#ifndef EXI_DECODER_C +#define EXI_DECODER_C + +#include +#include +#include +#include + +#include "EXITypes.h" +#include "BitInputStream.h" +#include "BitDecoderChannel.h" + +#include "EXICoder.h" +#include "EXIHeader.h" +#include "StringTable.h" + + +int exiInitDecoder(bitstream_t* stream, exi_state_t* state) { + /* init grammar state */ + state->stackIndex = 0; + state->grammarStack[0] = 0; + /* decode header */ + return readEXIHeader(stream); +} + +int exiDecodeNextEvent(bitstream_t* stream, exi_state_t* state, + exi_event_t* nextEvent) { + + switch (state->grammarStack[state->stackIndex]) { + case 0: + /* Document[START_DOCUMENT] */ + *nextEvent = START_DOCUMENT; + return 0; + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}V2G_Message), START_ELEMENT_GENERIC] */ + decodeNBitUnsignedInteger(stream, 5, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 3) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 4) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 5) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 6) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 7) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 8) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 9) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 10) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 11) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 12) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 13) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 14) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 15) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 16) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 17) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 18) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 19) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 20) { + *nextEvent = START_ELEMENT_GENERIC; + return 0; + } + case 2: + /* DocEnd[END_DOCUMENT] */ + *nextEvent = END_DOCUMENT; + return 0; + case 3: + /* FirstStartTag(xsi:type)StartTag[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 5: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + *nextEvent = START_ELEMENT; + return 0; + case 24: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqLockStatus)] */ + *nextEvent = START_ELEMENT; + return 0; + case 26: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 25: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */ + *nextEvent = START_ELEMENT; + return 0; + case 28: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargerStandby)] */ + *nextEvent = START_ELEMENT; + return 0; + case 29: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 27: + /* FirstStartTagStartTag[CHARACTERS[BOOLEAN]] */ + *nextEvent = CHARACTERS; + return 0; + case 31: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 30: + /* FirstStartTagStartTag[CHARACTERS[BOOLEAN]] */ + *nextEvent = CHARACTERS; + return 0; + case 32: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 6: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + *nextEvent = START_ELEMENT; + return 0; + case 33: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + *nextEvent = START_ELEMENT; + return 0; + case 35: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 34: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 37: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 36: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FatalError)] */ + *nextEvent = START_ELEMENT; + return 0; + case 38: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EVSEStandby)] */ + *nextEvent = START_ELEMENT; + return 0; + case 40: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */ + *nextEvent = START_ELEMENT; + return 0; + case 41: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PowerSwitchClosed)] */ + *nextEvent = START_ELEMENT; + return 0; + case 42: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}RCD)] */ + *nextEvent = START_ELEMENT; + return 0; + case 44: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ShutDownTime)] */ + *nextEvent = START_ELEMENT; + return 0; + case 46: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 39: + /* FirstStartTagStartTag[CHARACTERS[BOOLEAN]] */ + *nextEvent = CHARACTERS; + return 0; + case 48: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 43: + /* FirstStartTagStartTag[CHARACTERS[BOOLEAN]] */ + *nextEvent = CHARACTERS; + return 0; + case 49: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 45: + /* FirstStartTagStartTag[CHARACTERS[BOOLEAN]] */ + *nextEvent = CHARACTERS; + return 0; + case 50: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 47: + /* FirstStartTagStartTag[CHARACTERS[INTEGER_64]] */ + *nextEvent = CHARACTERS; + return 0; + case 51: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 7: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + case 52: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + *nextEvent = START_ELEMENT; + return 0; + case 54: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + case 55: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */ + *nextEvent = START_ELEMENT; + return 0; + case 56: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo)] */ + *nextEvent = START_ELEMENT; + return 0; + case 58: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 53: + /* FirstStartTagStartTag[CHARACTERS[STRING]] */ + *nextEvent = CHARACTERS; + return 0; + case 60: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 57: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 61: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 59: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 3) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 4) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 5) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 6) { + *nextEvent = END_ELEMENT; + return 0; + } + case 62: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 3) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 4) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 5) { + *nextEvent = END_ELEMENT; + return 0; + } + case 64: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 3) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 4) { + *nextEvent = END_ELEMENT; + return 0; + } + case 66: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 3) { + *nextEvent = END_ELEMENT; + return 0; + } + case 68: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 70: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 72: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 63: + /* FirstStartTagStartTag[CHARACTERS[STRING]] */ + *nextEvent = CHARACTERS; + return 0; + case 73: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 65: + /* FirstStartTagStartTag[CHARACTERS[BINARY_HEX]] */ + *nextEvent = CHARACTERS; + return 0; + case 74: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 67: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Multiplier)] */ + *nextEvent = START_ELEMENT; + return 0; + case 75: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Unit)] */ + *nextEvent = START_ELEMENT; + return 0; + case 77: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Value)] */ + *nextEvent = START_ELEMENT; + return 0; + case 78: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 76: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 80: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 79: + /* FirstStartTag(xsi:type)StartTag[CHARACTERS[INTEGER_64]] */ + *nextEvent = CHARACTERS; + return 0; + case 81: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 69: + /* FirstStartTag(xsi:type)StartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = ATTRIBUTE_GENERIC; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT_GENERIC; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + else if (state->eventCode == 3) { + *nextEvent = CHARACTERS_GENERIC; + return 0; + } + case 82: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT_GENERIC; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = CHARACTERS_GENERIC; + return 0; + } + case 71: + /* FirstStartTagStartTag[CHARACTERS[INTEGER_16]] */ + *nextEvent = CHARACTERS; + return 0; + case 83: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 8: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + *nextEvent = START_ELEMENT; + return 0; + case 84: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 85: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 86: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 9: + /* FirstStartTagStartTag[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 10: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + *nextEvent = START_ELEMENT; + return 0; + case 87: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */ + *nextEvent = START_ELEMENT; + return 0; + case 89: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + *nextEvent = START_ELEMENT; + return 0; + case 91: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */ + *nextEvent = START_ELEMENT; + return 0; + case 92: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 93: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 94: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 95: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 88: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 96: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 90: + /* FirstStartTagStartTag[CHARACTERS[BINARY_HEX]] */ + *nextEvent = CHARACTERS; + return 0; + case 97: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 11: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ContractID)] */ + *nextEvent = START_ELEMENT; + return 0; + case 98: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 99: + /* FirstStartTagStartTag[CHARACTERS[STRING]] */ + *nextEvent = CHARACTERS; + return 0; + case 100: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 12: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + *nextEvent = START_ELEMENT; + return 0; + case 101: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 102: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 103: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 13: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + *nextEvent = START_ELEMENT; + return 0; + case 104: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqSwitchStatus)] */ + *nextEvent = START_ELEMENT; + return 0; + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 107: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 108: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart)] */ + *nextEvent = START_ELEMENT; + return 0; + case 109: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 110: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 111: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 112: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 113: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 114: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 115: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 116: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 117: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 118: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 119: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 120: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 121: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 122: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 123: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 124: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 125: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 126: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 127: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 128: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 129: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 131: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 132: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 133: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 134: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 135: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 136: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 137: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 138: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 139: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 140: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 141: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 142: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 143: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 144: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 145: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 146: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 147: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 149: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 150: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 151: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 152: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 153: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 154: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 155: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 156: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 157: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 158: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 159: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 160: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 161: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 163: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 164: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 165: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 166: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 167: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 168: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 169: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 170: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 171: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 172: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 173: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 174: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 175: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 176: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 177: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 179: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 180: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 181: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 182: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 183: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 184: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 185: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 187: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 189: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 190: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 191: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 192: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 193: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 194: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 195: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 196: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 197: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 198: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 199: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 200: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 201: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 202: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 203: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 204: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 205: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 206: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 207: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 208: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 209: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 210: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 211: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 212: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 213: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 214: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 215: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 216: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 217: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 219: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 220: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 221: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 222: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 223: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 224: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 225: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 226: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 227: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 228: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 229: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 230: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 231: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 232: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 233: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 234: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 235: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 236: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 237: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 238: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 239: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 240: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 241: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 242: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 243: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 244: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 245: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 246: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 247: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 249: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 250: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 251: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 252: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 253: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 254: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 255: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 256: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 257: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 258: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 259: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 260: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 261: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 262: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 263: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 264: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 265: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 266: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 267: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 268: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 269: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 270: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 271: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 272: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 273: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 274: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 275: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 276: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 277: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 278: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 279: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 280: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 281: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 282: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 283: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 284: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 285: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 286: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 287: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 288: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 289: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 290: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 291: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 292: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 293: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 294: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 295: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 296: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 297: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 298: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 299: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 300: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 301: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 302: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 303: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 304: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 305: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 306: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 307: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 308: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 309: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 310: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 311: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 312: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 313: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 314: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 315: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 316: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 317: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 318: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 319: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 320: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 321: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 322: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 323: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 324: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 325: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 326: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 327: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 328: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 329: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 330: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 331: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 332: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 333: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 334: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 335: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 336: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 337: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 338: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 339: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 340: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 341: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 342: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 343: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 344: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 345: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 346: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 347: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 348: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 349: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 350: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 351: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 352: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 353: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 354: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 355: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 356: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 357: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 358: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 359: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 360: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 361: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 362: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 363: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 364: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 14: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + *nextEvent = START_ELEMENT; + return 0; + case 365: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 366: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 367: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 15: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + *nextEvent = START_ELEMENT; + return 0; + case 368: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EoC)] */ + *nextEvent = START_ELEMENT; + return 0; + case 369: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EAmount)] */ + *nextEvent = START_ELEMENT; + return 0; + case 370: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPower)] */ + *nextEvent = START_ELEMENT; + return 0; + case 371: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPhases)] */ + *nextEvent = START_ELEMENT; + return 0; + case 372: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxVoltage)] */ + *nextEvent = START_ELEMENT; + return 0; + case 374: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMinVoltage)] */ + *nextEvent = START_ELEMENT; + return 0; + case 375: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 373: + /* FirstStartTagStartTag[CHARACTERS[INTEGER_16]] */ + *nextEvent = CHARACTERS; + return 0; + case 376: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 16: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + *nextEvent = START_ELEMENT; + return 0; + case 377: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + *nextEvent = START_ELEMENT; + return 0; + case 379: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEVoltage)] */ + *nextEvent = START_ELEMENT; + return 0; + case 380: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEIMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 381: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPhases)] */ + *nextEvent = START_ELEMENT; + return 0; + case 382: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EnergyProvider), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 383: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 385: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 378: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 387: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 384: + /* FirstStartTagStartTag[CHARACTERS[STRING]] */ + *nextEvent = CHARACTERS; + return 0; + case 388: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 386: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Currency)] */ + *nextEvent = START_ELEMENT; + return 0; + case 389: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff)] */ + *nextEvent = START_ELEMENT; + return 0; + case 391: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 390: + /* FirstStartTagStartTag[CHARACTERS[STRING]] */ + *nextEvent = CHARACTERS; + return 0; + case 393: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 392: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffID)] */ + *nextEvent = START_ELEMENT; + return 0; + case 394: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffDescription), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + case 395: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */ + *nextEvent = START_ELEMENT; + return 0; + case 397: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 396: + /* FirstStartTagStartTag[CHARACTERS[STRING]] */ + *nextEvent = CHARACTERS; + return 0; + case 399: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 398: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry)] */ + *nextEvent = START_ELEMENT; + return 0; + case 400: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 401: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart)] */ + *nextEvent = START_ELEMENT; + return 0; + case 402: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 404: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 405: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 406: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 407: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 408: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 409: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 410: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 411: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 412: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 413: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 414: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 415: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 416: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 417: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 418: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 419: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 420: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 421: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 422: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 423: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 424: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 425: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 426: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 427: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 428: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 429: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 430: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 431: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 432: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 433: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 434: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 435: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 436: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 437: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 438: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 439: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 440: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 441: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 442: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 443: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 444: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 445: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 446: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 447: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 448: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 449: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + *nextEvent = START_ELEMENT; + return 0; + case 450: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 451: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 452: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 453: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 454: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 455: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 456: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 457: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 458: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 459: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 460: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 461: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 462: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 463: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 464: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 465: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 466: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 467: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 468: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 469: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 470: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 471: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 472: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 473: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 474: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 403: + /* FirstStartTagStartTag[CHARACTERS[UNSIGNED_INTEGER_32]] */ + *nextEvent = CHARACTERS; + return 0; + case 475: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 17: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 476: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 478: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 477: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 480: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 479: + /* FirstStartTagStartTag[CHARACTERS[STRING]] */ + *nextEvent = CHARACTERS; + return 0; + case 481: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 18: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + *nextEvent = START_ELEMENT; + return 0; + case 482: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 484: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 483: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 486: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 485: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service)] */ + *nextEvent = START_ELEMENT; + return 0; + case 487: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 488: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceID)] */ + *nextEvent = START_ELEMENT; + return 0; + case 489: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + decodeNBitUnsignedInteger(stream, 3, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 3) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 4) { + *nextEvent = START_ELEMENT; + return 0; + } + case 491: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 3) { + *nextEvent = START_ELEMENT; + return 0; + } + case 493: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = START_ELEMENT; + return 0; + } + case 494: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + case 495: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + *nextEvent = START_ELEMENT; + return 0; + case 497: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 490: + /* FirstStartTagStartTag[CHARACTERS[BINARY_HEX]] */ + *nextEvent = CHARACTERS; + return 0; + case 499: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 492: + /* FirstStartTagStartTag[CHARACTERS[STRING]] */ + *nextEvent = CHARACTERS; + return 0; + case 500: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 496: + /* FirstStartTagStartTag[START_ELEMENT_GENERIC] */ + *nextEvent = START_ELEMENT_GENERIC; + return 0; + case 501: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 498: + /* FirstStartTagStartTag[CHARACTERS[LIST]] */ + *nextEvent = CHARACTERS; + return 0; + case 502: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 19: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList)] */ + *nextEvent = START_ELEMENT; + return 0; + case 503: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVPubKey)] */ + *nextEvent = START_ELEMENT; + return 0; + case 504: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 20: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + *nextEvent = START_ELEMENT; + return 0; + case 505: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringAuthPubKey), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 507: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 506: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 508: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 21: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + case 509: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + *nextEvent = START_ELEMENT; + return 0; + case 510: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 22: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + *nextEvent = START_ELEMENT; + return 0; + case 511: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */ + *nextEvent = START_ELEMENT; + return 0; + case 513: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + *nextEvent = START_ELEMENT; + return 0; + case 514: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */ + *nextEvent = START_ELEMENT; + return 0; + case 515: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 512: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 516: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 23: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Header)] */ + *nextEvent = START_ELEMENT; + return 0; + case 517: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Body)] */ + *nextEvent = START_ELEMENT; + return 0; + case 519: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 518: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}SessionInformation)] */ + *nextEvent = START_ELEMENT; + return 0; + case 521: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Notification), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 523: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 525: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 522: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SessionID)] */ + *nextEvent = START_ELEMENT; + return 0; + case 526: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceSessionID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 528: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 529: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 527: + /* FirstStartTagStartTag[CHARACTERS[BINARY_HEX]] */ + *nextEvent = CHARACTERS; + return 0; + case 531: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 530: + /* FirstStartTagStartTag[CHARACTERS[STRING]] */ + *nextEvent = CHARACTERS; + return 0; + case 532: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 524: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 3) { + *nextEvent = END_ELEMENT; + return 0; + } + case 533: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 2, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = END_ELEMENT; + return 0; + } + case 535: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 1, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = END_ELEMENT; + return 0; + } + case 537: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 534: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 539: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 536: + /* FirstStartTag(xsi:type)StartTag[CHARACTERS[STRING]] */ + *nextEvent = CHARACTERS; + return 0; + case 540: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 538: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Event)] */ + *nextEvent = START_ELEMENT; + return 0; + case 541: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 542: + /* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */ + *nextEvent = CHARACTERS; + return 0; + case 543: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + case 520: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), END_ELEMENT] */ + decodeNBitUnsignedInteger(stream, 5, &state->eventCode); + if (state->eventCode == 0) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 1) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 2) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 3) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 4) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 5) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 6) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 7) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 8) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 9) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 10) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 11) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 12) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 13) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 14) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 15) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 16) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 17) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 18) { + *nextEvent = START_ELEMENT; + return 0; + } + else if (state->eventCode == 19) { + *nextEvent = END_ELEMENT; + return 0; + } + case 544: + /* Element[END_ELEMENT] */ + *nextEvent = END_ELEMENT; + return 0; + + default: + *nextEvent = ERROR; + return -1; + } + + return -1; +} + +int exiDecodeStartDocument(bitstream_t* stream, exi_state_t* state) { + if ( state->grammarStack[state->stackIndex] == 0 ) { + /* move on */ + state->grammarStack[state->stackIndex] = 1; + return 0; + } + + return -1; +} + +int exiDecodeEndDocument(bitstream_t* stream, exi_state_t* state) { + if ( state->grammarStack[state->stackIndex] == 2) { + return 0; + } + + return -1; +} + +int exiDecodeStartElement(bitstream_t* stream, exi_state_t* state, + eqname_t* se) { + switch (state->grammarStack[state->stackIndex]) { + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}V2G_Message), START_ELEMENT_GENERIC] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "BodyElement" */ + se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 3, se); + } + else if (state->eventCode == 1) { + se->localPart = 11; /* "LineLockReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 5, se); + } + else if (state->eventCode == 2) { + se->localPart = 13; /* "LineLockRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 6, se); + } + else if (state->eventCode == 3) { + se->localPart = 17; /* "MeteringReceiptReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 7, se); + } + else if (state->eventCode == 4) { + se->localPart = 19; /* "MeteringReceiptRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 8, se); + } + else if (state->eventCode == 5) { + se->localPart = 21; /* "MeteringStatusReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 9, se); + } + else if (state->eventCode == 6) { + se->localPart = 23; /* "MeteringStatusRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 10, se); + } + else if (state->eventCode == 7) { + se->localPart = 33; /* "PaymentDetailsReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 11, se); + } + else if (state->eventCode == 8) { + se->localPart = 35; /* "PaymentDetailsRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 12, se); + } + else if (state->eventCode == 9) { + se->localPart = 37; /* "PowerDeliveryReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 13, se); + } + else if (state->eventCode == 10) { + se->localPart = 39; /* "PowerDeliveryRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 14, se); + } + else if (state->eventCode == 11) { + se->localPart = 41; /* "PowerDiscoveryReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 15, se); + } + else if (state->eventCode == 12) { + se->localPart = 43; /* "PowerDiscoveryRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 16, se); + } + else if (state->eventCode == 13) { + se->localPart = 48; /* "ServiceDiscoveryReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 17, se); + } + else if (state->eventCode == 14) { + se->localPart = 50; /* "ServiceDiscoveryRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 18, se); + } + else if (state->eventCode == 15) { + se->localPart = 53; /* "ServicePaymentSelectionReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 19, se); + } + else if (state->eventCode == 16) { + se->localPart = 55; /* "ServicePaymentSelectionRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 20, se); + } + else if (state->eventCode == 17) { + se->localPart = 59; /* "SessionSetupReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 21, se); + } + else if (state->eventCode == 18) { + se->localPart = 61; /* "SessionSetupRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 22, se); + } + else if (state->eventCode == 19) { + se->localPart = 9; /* "V2G_Message" */ + se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */ + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 23, se); + } + break; + case 5: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + se->localPart = 32; /* "PEVStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 24; + /* push element on stack */ + return exiPushStack(state, 25, se); + break; + case 6: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + se->localPart = 47; /* "ResponseCode" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 33; + /* push element on stack */ + return exiPushStack(state, 34, se); + break; + case 7: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + if (state->eventCode == 0) { + se->localPart = 26; /* "PEVID" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 52; + /* push element on stack */ + return exiPushStack(state, 53, se); + } + else if (state->eventCode == 1) { + se->localPart = 32; /* "PEVStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 54; + /* push element on stack */ + return exiPushStack(state, 25, se); + } + break; + case 8: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + se->localPart = 47; /* "ResponseCode" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 84; + /* push element on stack */ + return exiPushStack(state, 85, se); + break; + case 10: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + se->localPart = 47; /* "ResponseCode" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 87; + /* push element on stack */ + return exiPushStack(state, 88, se); + break; + case 11: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ContractID)] */ + se->localPart = 1; /* "ContractID" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 98; + /* push element on stack */ + return exiPushStack(state, 99, se); + break; + case 12: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + se->localPart = 47; /* "ResponseCode" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 101; + /* push element on stack */ + return exiPushStack(state, 102, se); + break; + case 13: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + se->localPart = 32; /* "PEVStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 104; + /* push element on stack */ + return exiPushStack(state, 25, se); + break; + case 14: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + se->localPart = 47; /* "ResponseCode" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 365; + /* push element on stack */ + return exiPushStack(state, 366, se); + break; + case 15: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + se->localPart = 32; /* "PEVStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 368; + /* push element on stack */ + return exiPushStack(state, 25, se); + break; + case 16: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + se->localPart = 47; /* "ResponseCode" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 377; + /* push element on stack */ + return exiPushStack(state, 378, se); + break; + case 17: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 58; /* "ServiceType" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 476; + /* push element on stack */ + return exiPushStack(state, 477, se); + } + else if (state->eventCode == 1) { + se->localPart = 57; /* "ServiceScope" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 478; + /* push element on stack */ + return exiPushStack(state, 479, se); + } + break; + case 18: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + se->localPart = 47; /* "ResponseCode" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 482; + /* push element on stack */ + return exiPushStack(state, 483, se); + break; + case 19: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList)] */ + se->localPart = 52; /* "ServiceList" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 503; + /* push element on stack */ + return exiPushStack(state, 485, se); + break; + case 20: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + se->localPart = 47; /* "ResponseCode" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 505; + /* push element on stack */ + return exiPushStack(state, 506, se); + break; + case 21: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + if (state->eventCode == 0) { + se->localPart = 26; /* "PEVID" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 509; + /* push element on stack */ + return exiPushStack(state, 53, se); + } + else if (state->eventCode == 1) { + se->localPart = 32; /* "PEVStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 510; + /* push element on stack */ + return exiPushStack(state, 25, se); + } + break; + case 22: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + se->localPart = 47; /* "ResponseCode" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 511; + /* push element on stack */ + return exiPushStack(state, 512, se); + break; + case 23: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Header)] */ + se->localPart = 4; /* "Header" */ + se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */ + /* move on */ + state->grammarStack[state->stackIndex] = 517; + /* push element on stack */ + return exiPushStack(state, 518, se); + break; + case 24: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqLockStatus)] */ + se->localPart = 45; /* "ReqLockStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 26; + /* push element on stack */ + return exiPushStack(state, 27, se); + break; + case 25: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */ + se->localPart = 4; /* "ConnectorLocked" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 28; + /* push element on stack */ + return exiPushStack(state, 27, se); + break; + case 28: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargerStandby)] */ + se->localPart = 0; /* "ChargerStandby" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 29; + /* push element on stack */ + return exiPushStack(state, 30, se); + break; + case 33: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + se->localPart = 7; /* "EVSEStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 35; + /* push element on stack */ + return exiPushStack(state, 36, se); + break; + case 36: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FatalError)] */ + se->localPart = 12; /* "FatalError" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 38; + /* push element on stack */ + return exiPushStack(state, 39, se); + break; + case 38: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EVSEStandby)] */ + se->localPart = 7; /* "EVSEStandby" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 40; + /* push element on stack */ + return exiPushStack(state, 30, se); + break; + case 40: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */ + se->localPart = 4; /* "ConnectorLocked" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 41; + /* push element on stack */ + return exiPushStack(state, 27, se); + break; + case 41: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PowerSwitchClosed)] */ + se->localPart = 25; /* "PowerSwitchClosed" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 42; + /* push element on stack */ + return exiPushStack(state, 43, se); + break; + case 42: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}RCD)] */ + se->localPart = 27; /* "RCD" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 44; + /* push element on stack */ + return exiPushStack(state, 45, se); + break; + case 44: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ShutDownTime)] */ + se->localPart = 39; /* "ShutDownTime" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 46; + /* push element on stack */ + return exiPushStack(state, 47, se); + break; + case 52: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + se->localPart = 32; /* "PEVStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 54; + /* push element on stack */ + return exiPushStack(state, 25, se); + break; + case 54: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */ + if (state->eventCode == 0) { + se->localPart = 63; /* "TCurrent" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 55; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + else if (state->eventCode == 1) { + se->localPart = 64; /* "Tariff" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 56; + /* push element on stack */ + return exiPushStack(state, 57, se); + } + break; + case 55: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */ + se->localPart = 64; /* "Tariff" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 56; + /* push element on stack */ + return exiPushStack(state, 57, se); + break; + case 56: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo)] */ + se->localPart = 15; /* "MeterInfo" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 58; + /* push element on stack */ + return exiPushStack(state, 59, se); + break; + case 59: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 16; /* "MeterID" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 62; + /* push element on stack */ + return exiPushStack(state, 63, se); + } + else if (state->eventCode == 1) { + se->localPart = 18; /* "MeterPubKey" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 64; + /* push element on stack */ + return exiPushStack(state, 65, se); + } + else if (state->eventCode == 2) { + se->localPart = 19; /* "MeterReading" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 66; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + else if (state->eventCode == 3) { + se->localPart = 40; /* "SigMeterReading" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 68; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + else if (state->eventCode == 4) { + se->localPart = 20; /* "MeterStatus" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 70; + /* push element on stack */ + return exiPushStack(state, 71, se); + } + else if (state->eventCode == 5) { + se->localPart = 41; /* "TMeter" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 62: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 18; /* "MeterPubKey" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 64; + /* push element on stack */ + return exiPushStack(state, 65, se); + } + else if (state->eventCode == 1) { + se->localPart = 19; /* "MeterReading" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 66; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + else if (state->eventCode == 2) { + se->localPart = 40; /* "SigMeterReading" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 68; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + else if (state->eventCode == 3) { + se->localPart = 20; /* "MeterStatus" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 70; + /* push element on stack */ + return exiPushStack(state, 71, se); + } + else if (state->eventCode == 4) { + se->localPart = 41; /* "TMeter" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 64: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 19; /* "MeterReading" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 66; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + else if (state->eventCode == 1) { + se->localPart = 40; /* "SigMeterReading" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 68; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + else if (state->eventCode == 2) { + se->localPart = 20; /* "MeterStatus" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 70; + /* push element on stack */ + return exiPushStack(state, 71, se); + } + else if (state->eventCode == 3) { + se->localPart = 41; /* "TMeter" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 66: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 40; /* "SigMeterReading" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 68; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + else if (state->eventCode == 1) { + se->localPart = 20; /* "MeterStatus" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 70; + /* push element on stack */ + return exiPushStack(state, 71, se); + } + else if (state->eventCode == 2) { + se->localPart = 41; /* "TMeter" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 67: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Multiplier)] */ + se->localPart = 21; /* "Multiplier" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 75; + /* push element on stack */ + return exiPushStack(state, 76, se); + break; + case 68: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 20; /* "MeterStatus" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 70; + /* push element on stack */ + return exiPushStack(state, 71, se); + } + else if (state->eventCode == 1) { + se->localPart = 41; /* "TMeter" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 70: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 41; /* "TMeter" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 75: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Unit)] */ + se->localPart = 53; /* "Unit" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 77; + /* push element on stack */ + return exiPushStack(state, 76, se); + break; + case 77: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Value)] */ + se->localPart = 54; /* "Value" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 78; + /* push element on stack */ + return exiPushStack(state, 79, se); + break; + case 87: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */ + se->localPart = 3; /* "EVSEID" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 89; + /* push element on stack */ + return exiPushStack(state, 90, se); + break; + case 89: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + se->localPart = 7; /* "EVSEStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 91; + /* push element on stack */ + return exiPushStack(state, 36, se); + break; + case 91: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */ + se->localPart = 63; /* "TCurrent" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 92; + /* push element on stack */ + return exiPushStack(state, 47, se); + break; + case 92: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPower)] */ + se->localPart = 6; /* "EVSEMaxPower" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 93; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 93: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 25; /* "PCurrent" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 94; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + else if (state->eventCode == 1) { + se->localPart = 15; /* "MeterInfo" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 95; + /* push element on stack */ + return exiPushStack(state, 59, se); + } + break; + case 94: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 15; /* "MeterInfo" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 95; + /* push element on stack */ + return exiPushStack(state, 59, se); + } + break; + case 104: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqSwitchStatus)] */ + se->localPart = 46; /* "ReqSwitchStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 105; + /* push element on stack */ + return exiPushStack(state, 43, se); + break; + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 64; /* "Tariff" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 106; + /* push element on stack */ + return exiPushStack(state, 57, se); + } + else if (state->eventCode == 1) { + se->localPart = 0; /* "ChargingProfile" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 107; + /* push element on stack */ + return exiPushStack(state, 108, se); + } + break; + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 0; /* "ChargingProfile" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 107; + /* push element on stack */ + return exiPushStack(state, 108, se); + } + break; + case 108: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart)] */ + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 109; + /* push element on stack */ + return exiPushStack(state, 47, se); + break; + case 109: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 110; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 110: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 111; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 111: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 112; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 112: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 113; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 113: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 114; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 114: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 115; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 115: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 116; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 116: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 117; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 117: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 118; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 118: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 119; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 119: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 120; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 120: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 121; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 121: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 122; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 122: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 123; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 123: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 124; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 124: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 125; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 125: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 126; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 126: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 127; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 127: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 128; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 128: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 129; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 129: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 130; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 131; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 131: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 132; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 132: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 133; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 133: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 134; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 134: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 135; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 135: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 136; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 136: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 137; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 137: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 138; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 138: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 139; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 139: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 140; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 140: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 141; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 141: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 142; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 142: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 143; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 143: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 144; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 144: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 145; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 145: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 146; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 146: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 147; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 147: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 148; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 149; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 149: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 150; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 150: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 151; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 151: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 152; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 152: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 153; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 153: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 154; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 154: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 155; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 155: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 156; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 156: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 157; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 157: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 158; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 158: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 159; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 159: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 160; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 160: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 161; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 161: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 162; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 163; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 163: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 164; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 164: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 165; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 165: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 166; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 166: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 167; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 167: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 168; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 168: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 169; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 169: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 170; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 170: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 171; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 171: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 172; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 172: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 173; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 173: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 174; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 174: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 175; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 175: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 176; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 176: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 177; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 177: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 178; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 179; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 179: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 180; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 180: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 181; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 181: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 182; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 182: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 183; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 183: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 184; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 184: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 185; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 185: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 186; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 187; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 187: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 188; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 189; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 189: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 190; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 190: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 191; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 191: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 192; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 192: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 193; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 193: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 194; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 194: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 195; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 195: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 196; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 196: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 197; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 197: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 198; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 198: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 199; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 199: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 200; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 200: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 201; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 201: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 202; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 202: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 203; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 203: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 204; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 204: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 205; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 205: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 206; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 206: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 207; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 207: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 208; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 208: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 209; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 209: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 210; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 210: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 211; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 211: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 212; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 212: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 213; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 213: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 214; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 214: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 215; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 215: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 216; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 216: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 217; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 217: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 218; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 219; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 219: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 220; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 220: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 221; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 221: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 222; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 222: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 223; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 223: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 224; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 224: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 225; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 225: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 226; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 226: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 227; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 227: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 228; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 228: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 229; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 229: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 230; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 230: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 231; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 231: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 232; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 232: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 233; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 233: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 234; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 234: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 235; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 235: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 236; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 236: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 237; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 237: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 238; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 238: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 239; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 239: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 240; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 240: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 241; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 241: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 242; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 242: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 243; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 243: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 244; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 244: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 245; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 245: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 246; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 246: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 247; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 247: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 248; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 249; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 249: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 250; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 250: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 251; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 251: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 252; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 252: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 253; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 253: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 254; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 254: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 255; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 255: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 256; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 256: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 257; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 257: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 258; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 258: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 259; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 259: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 260; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 260: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 261; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 261: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 262; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 262: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 263; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 263: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 264; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 264: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 265; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 265: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 266; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 266: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 267; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 267: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 268; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 268: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 269; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 269: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 270; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 270: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 271; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 271: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 272; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 272: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 273; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 273: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 274; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 274: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 275; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 275: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 276; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 276: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 277; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 277: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 278; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 278: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 279; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 279: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 280; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 280: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 281; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 281: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 282; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 282: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 283; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 283: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 284; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 284: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 285; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 285: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 286; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 286: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 287; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 287: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 288; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 288: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 289; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 289: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 290; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 290: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 291; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 291: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 292; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 292: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 293; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 293: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 294; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 294: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 295; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 295: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 296; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 296: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 297; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 297: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 298; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 298: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 299; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 299: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 300; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 300: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 301; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 301: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 302; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 302: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 303; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 303: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 304; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 304: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 305; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 305: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 306; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 306: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 307; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 307: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 308; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 308: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 309; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 309: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 310; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 310: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 311; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 311: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 312; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 312: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 313; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 313: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 314; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 314: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 315; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 315: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 316; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 316: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 317; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 317: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 318; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 318: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 319; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 319: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 320; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 320: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 321; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 321: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 322; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 322: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 323; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 323: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 324; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 324: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 325; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 325: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 326; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 326: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 327; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 327: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 328; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 328: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 329; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 329: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 330; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 330: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 331; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 331: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 332; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 332: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 333; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 333: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 334; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 334: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 335; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 335: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 336; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 336: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 337; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 337: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 338; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 338: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 339; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 339: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 340; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 340: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 341; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 341: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 342; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 342: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 343; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 343: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 344; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 344: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 345; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 345: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 346; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 346: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 347; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 347: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 348; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 348: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 349; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 349: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 350; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 350: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 351; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 351: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 352; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 352: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 353; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 353: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 354; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 354: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 355; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 355: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 356; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 356: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 357; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 357: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 358; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 358: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 359; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 359: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 360; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 360: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 361; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 361: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 362; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 362: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "ChargingProfileEntryStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 363; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 363: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + se->localPart = 1; /* "ChargingProfileEntryMaxPower" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 364; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 368: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EoC)] */ + se->localPart = 10; /* "EoC" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 369; + /* push element on stack */ + return exiPushStack(state, 47, se); + break; + case 369: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EAmount)] */ + se->localPart = 2; /* "EAmount" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 370; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 370: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPower)] */ + se->localPart = 28; /* "PEVMaxPower" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 371; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 371: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPhases)] */ + se->localPart = 27; /* "PEVMaxPhases" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 372; + /* push element on stack */ + return exiPushStack(state, 373, se); + break; + case 372: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxVoltage)] */ + se->localPart = 29; /* "PEVMaxVoltage" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 374; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 374: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMinVoltage)] */ + se->localPart = 30; /* "PEVMinVoltage" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 375; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 377: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + se->localPart = 7; /* "EVSEStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 379; + /* push element on stack */ + return exiPushStack(state, 36, se); + break; + case 379: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEVoltage)] */ + se->localPart = 8; /* "EVSEVoltage" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 380; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 380: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEIMax)] */ + se->localPart = 4; /* "EVSEIMax" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 381; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 381: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPhases)] */ + se->localPart = 5; /* "EVSEMaxPhases" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 382; + /* push element on stack */ + return exiPushStack(state, 373, se); + break; + case 382: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EnergyProvider), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 9; /* "EnergyProvider" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 383; + /* push element on stack */ + return exiPushStack(state, 384, se); + } + else if (state->eventCode == 1) { + se->localPart = 65; /* "TariffTable" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 385; + /* push element on stack */ + return exiPushStack(state, 386, se); + } + break; + case 383: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 65; /* "TariffTable" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 385; + /* push element on stack */ + return exiPushStack(state, 386, se); + } + break; + case 386: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Currency)] */ + se->localPart = 5; /* "Currency" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 389; + /* push element on stack */ + return exiPushStack(state, 390, se); + break; + case 389: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff)] */ + se->localPart = 42; /* "Tariff" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 391; + /* push element on stack */ + return exiPushStack(state, 392, se); + break; + case 391: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 42; /* "Tariff" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 391; + /* push element on stack */ + return exiPushStack(state, 392, se); + } + break; + case 392: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffID)] */ + se->localPart = 49; /* "TariffID" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 394; + /* push element on stack */ + return exiPushStack(state, 57, se); + break; + case 394: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffDescription), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */ + if (state->eventCode == 0) { + se->localPart = 44; /* "TariffDescription" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 395; + /* push element on stack */ + return exiPushStack(state, 396, se); + } + else if (state->eventCode == 1) { + se->localPart = 45; /* "TariffEntries" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 397; + /* push element on stack */ + return exiPushStack(state, 398, se); + } + break; + case 395: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */ + se->localPart = 45; /* "TariffEntries" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 397; + /* push element on stack */ + return exiPushStack(state, 398, se); + break; + case 398: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry)] */ + se->localPart = 47; /* "TariffEntry" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 400; + /* push element on stack */ + return exiPushStack(state, 401, se); + break; + case 400: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 47; /* "TariffEntry" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 400; + /* push element on stack */ + return exiPushStack(state, 401, se); + } + break; + case 401: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart)] */ + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 402; + /* push element on stack */ + return exiPushStack(state, 403, se); + break; + case 402: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 404; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 404: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 405; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 474; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 405: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 406; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 406: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 407; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 473; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 407: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 408; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 408: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 409; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 472; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 409: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 410; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 410: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 411; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 471; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 411: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 412; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 412: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 413; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 470; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 413: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 414; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 414: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 415; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 469; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 415: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 416; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 416: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 417; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 468; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 417: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 418; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 418: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 419; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 467; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 419: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 420; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 420: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 421; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 466; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 421: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 422; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 422: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 423; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 465; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 423: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 424; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 424: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 425; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 464; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 425: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 426; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 426: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 427; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 463; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 427: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 428; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 428: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 429; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 462; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 429: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 430; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 430: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 431; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 461; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 431: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 432; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 432: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 433; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 460; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 433: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 434; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 434: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 435; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 459; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 435: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 436; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 436: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 437; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 458; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 437: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 438; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 438: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 439; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 457; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 439: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 440; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 440: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 441; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 456; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 441: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 442; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 442: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 443; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 455; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 443: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 444; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 444: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 445; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 454; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 445: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 446; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 446: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 447; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 453; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 447: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 448; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 448: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 449; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if (state->eventCode == 1) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 452; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 449: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + se->localPart = 50; /* "TariffPMax" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 450; + /* push element on stack */ + return exiPushStack(state, 67, se); + break; + case 450: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 6; /* "EPrice" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 451; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 452: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 449; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 453: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 447; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 454: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 445; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 455: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 443; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 456: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 441; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 457: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 439; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 458: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 437; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 459: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 435; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 460: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 433; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 461: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 431; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 462: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 429; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 463: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 427; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 464: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 425; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 465: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 423; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 466: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 421; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 467: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 419; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 468: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 417; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 469: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 415; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 470: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 413; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 471: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 411; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 472: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 409; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 473: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 407; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 474: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 51; /* "TariffStart" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 405; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 476: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 57; /* "ServiceScope" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 478; + /* push element on stack */ + return exiPushStack(state, 479, se); + } + break; + case 482: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 52; /* "ServiceList" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 484; + /* push element on stack */ + return exiPushStack(state, 485, se); + } + break; + case 485: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service)] */ + se->localPart = 28; /* "Service" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 487; + /* push element on stack */ + return exiPushStack(state, 488, se); + break; + case 487: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 28; /* "Service" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 487; + /* push element on stack */ + return exiPushStack(state, 488, se); + } + break; + case 488: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceID)] */ + se->localPart = 31; /* "ServiceID" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 489; + /* push element on stack */ + return exiPushStack(state, 490, se); + break; + case 489: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + if (state->eventCode == 0) { + se->localPart = 33; /* "ServiceName" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 491; + /* push element on stack */ + return exiPushStack(state, 492, se); + } + else if (state->eventCode == 1) { + se->localPart = 36; /* "ServiceType" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 493; + /* push element on stack */ + return exiPushStack(state, 477, se); + } + else if (state->eventCode == 2) { + se->localPart = 34; /* "ServiceScope" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 494; + /* push element on stack */ + return exiPushStack(state, 479, se); + } + else if (state->eventCode == 3) { + se->localPart = 30; /* "ServiceDetails" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 495; + /* push element on stack */ + return exiPushStack(state, 496, se); + } + else if (state->eventCode == 4) { + se->localPart = 24; /* "PaymentOption" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 497; + /* push element on stack */ + return exiPushStack(state, 498, se); + } + break; + case 491: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + if (state->eventCode == 0) { + se->localPart = 36; /* "ServiceType" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 493; + /* push element on stack */ + return exiPushStack(state, 477, se); + } + else if (state->eventCode == 1) { + se->localPart = 34; /* "ServiceScope" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 494; + /* push element on stack */ + return exiPushStack(state, 479, se); + } + else if (state->eventCode == 2) { + se->localPart = 30; /* "ServiceDetails" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 495; + /* push element on stack */ + return exiPushStack(state, 496, se); + } + else if (state->eventCode == 3) { + se->localPart = 24; /* "PaymentOption" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 497; + /* push element on stack */ + return exiPushStack(state, 498, se); + } + break; + case 493: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + if (state->eventCode == 0) { + se->localPart = 34; /* "ServiceScope" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 494; + /* push element on stack */ + return exiPushStack(state, 479, se); + } + else if (state->eventCode == 1) { + se->localPart = 30; /* "ServiceDetails" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 495; + /* push element on stack */ + return exiPushStack(state, 496, se); + } + else if (state->eventCode == 2) { + se->localPart = 24; /* "PaymentOption" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 497; + /* push element on stack */ + return exiPushStack(state, 498, se); + } + break; + case 494: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + if (state->eventCode == 0) { + se->localPart = 30; /* "ServiceDetails" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 495; + /* push element on stack */ + return exiPushStack(state, 496, se); + } + else if (state->eventCode == 1) { + se->localPart = 24; /* "PaymentOption" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 497; + /* push element on stack */ + return exiPushStack(state, 498, se); + } + break; + case 495: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + se->localPart = 24; /* "PaymentOption" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 497; + /* push element on stack */ + return exiPushStack(state, 498, se); + break; + case 503: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVPubKey)] */ + se->localPart = 31; /* "PEVPubKey" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 504; + /* push element on stack */ + return exiPushStack(state, 65, se); + break; + case 505: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringAuthPubKey), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 16; /* "MeteringAuthPubKey" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 507; + /* push element on stack */ + return exiPushStack(state, 65, se); + } + break; + case 509: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + se->localPart = 32; /* "PEVStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 510; + /* push element on stack */ + return exiPushStack(state, 25, se); + break; + case 511: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */ + se->localPart = 3; /* "EVSEID" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 513; + /* push element on stack */ + return exiPushStack(state, 90, se); + break; + case 513: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + se->localPart = 7; /* "EVSEStatus" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 514; + /* push element on stack */ + return exiPushStack(state, 36, se); + break; + case 514: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */ + se->localPart = 63; /* "TCurrent" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 515; + /* push element on stack */ + return exiPushStack(state, 47, se); + break; + case 517: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Body)] */ + se->localPart = 0; /* "Body" */ + se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */ + /* move on */ + state->grammarStack[state->stackIndex] = 519; + /* push element on stack */ + return exiPushStack(state, 520, se); + break; + case 518: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}SessionInformation)] */ + se->localPart = 8; /* "SessionInformation" */ + se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */ + /* move on */ + state->grammarStack[state->stackIndex] = 521; + /* push element on stack */ + return exiPushStack(state, 522, se); + break; + case 520: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 2; /* "BodyElement" */ + se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 3, se); + } + else if (state->eventCode == 1) { + se->localPart = 11; /* "LineLockReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 5, se); + } + else if (state->eventCode == 2) { + se->localPart = 13; /* "LineLockRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 6, se); + } + else if (state->eventCode == 3) { + se->localPart = 17; /* "MeteringReceiptReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 7, se); + } + else if (state->eventCode == 4) { + se->localPart = 19; /* "MeteringReceiptRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 8, se); + } + else if (state->eventCode == 5) { + se->localPart = 21; /* "MeteringStatusReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 9, se); + } + else if (state->eventCode == 6) { + se->localPart = 23; /* "MeteringStatusRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 10, se); + } + else if (state->eventCode == 7) { + se->localPart = 33; /* "PaymentDetailsReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 11, se); + } + else if (state->eventCode == 8) { + se->localPart = 35; /* "PaymentDetailsRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 12, se); + } + else if (state->eventCode == 9) { + se->localPart = 37; /* "PowerDeliveryReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 13, se); + } + else if (state->eventCode == 10) { + se->localPart = 39; /* "PowerDeliveryRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 14, se); + } + else if (state->eventCode == 11) { + se->localPart = 41; /* "PowerDiscoveryReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 15, se); + } + else if (state->eventCode == 12) { + se->localPart = 43; /* "PowerDiscoveryRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 16, se); + } + else if (state->eventCode == 13) { + se->localPart = 48; /* "ServiceDiscoveryReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 17, se); + } + else if (state->eventCode == 14) { + se->localPart = 50; /* "ServiceDiscoveryRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 18, se); + } + else if (state->eventCode == 15) { + se->localPart = 53; /* "ServicePaymentSelectionReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 19, se); + } + else if (state->eventCode == 16) { + se->localPart = 55; /* "ServicePaymentSelectionRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 20, se); + } + else if (state->eventCode == 17) { + se->localPart = 59; /* "SessionSetupReq" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 21, se); + } + else if (state->eventCode == 18) { + se->localPart = 61; /* "SessionSetupRes" */ + se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */ + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 22, se); + } + break; + case 521: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Notification), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 6; /* "Notification" */ + se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */ + /* move on */ + state->grammarStack[state->stackIndex] = 523; + /* push element on stack */ + return exiPushStack(state, 524, se); + } + else if (state->eventCode == 1) { + se->localPart = 7; /* "Security" */ + se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */ + /* move on */ + state->grammarStack[state->stackIndex] = 525; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + break; + case 522: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SessionID)] */ + se->localPart = 37; /* "SessionID" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 526; + /* push element on stack */ + return exiPushStack(state, 527, se); + break; + case 523: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 7; /* "Security" */ + se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */ + /* move on */ + state->grammarStack[state->stackIndex] = 525; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + break; + case 524: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 13; /* "FaultCode" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 533; + /* push element on stack */ + return exiPushStack(state, 534, se); + } + else if (state->eventCode == 1) { + se->localPart = 14; /* "FaultMsg" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 535; + /* push element on stack */ + return exiPushStack(state, 536, se); + } + else if (state->eventCode == 2) { + se->localPart = 10; /* "EventList" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 537; + /* push element on stack */ + return exiPushStack(state, 538, se); + } + break; + case 526: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceSessionID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 35; /* "ServiceSessionID" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 528; + /* push element on stack */ + return exiPushStack(state, 527, se); + } + else if (state->eventCode == 1) { + se->localPart = 26; /* "ProtocolVersion" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 529; + /* push element on stack */ + return exiPushStack(state, 530, se); + } + break; + case 528: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 26; /* "ProtocolVersion" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 529; + /* push element on stack */ + return exiPushStack(state, 530, se); + } + break; + case 533: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 14; /* "FaultMsg" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 535; + /* push element on stack */ + return exiPushStack(state, 536, se); + } + else if (state->eventCode == 1) { + se->localPart = 10; /* "EventList" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 537; + /* push element on stack */ + return exiPushStack(state, 538, se); + } + break; + case 535: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + if (state->eventCode == 0) { + se->localPart = 10; /* "EventList" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 537; + /* push element on stack */ + return exiPushStack(state, 538, se); + } + break; + case 538: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Event)] */ + se->localPart = 9; /* "Event" */ + se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */ + /* move on */ + state->grammarStack[state->stackIndex] = 541; + /* push element on stack */ + return exiPushStack(state, 542, se); + break; + + default: + return -1; + } + + return -1; +} + +int exiDecodeEndElement(bitstream_t* stream, exi_state_t* state, + eqname_t* ee) { + // pop item and update ahead of time element qname + ee->localPart = state->elementStack[state->stackIndex].localPart; + ee->namespaceURI = state->elementStack[state->stackIndex].namespaceURI; + return exiPopStack(state); +} + +int exiDecodeCharacters(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + uint8_t xsi; + switch (state->grammarStack[state->stackIndex]) { + case 27: + /* CHARACTERS[BOOLEAN] */ + val->type = BOOLEAN; + decodeBoolean(stream, &val->boolean); + /* move on */ + state->grammarStack[state->stackIndex] = 31; + return 0; + case 30: + /* CHARACTERS[BOOLEAN] */ + val->type = BOOLEAN; + decodeBoolean(stream, &val->boolean); + /* move on */ + state->grammarStack[state->stackIndex] = 32; + return 0; + case 34: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 2, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 37; + return 0; + case 39: + /* CHARACTERS[BOOLEAN] */ + val->type = BOOLEAN; + decodeBoolean(stream, &val->boolean); + /* move on */ + state->grammarStack[state->stackIndex] = 48; + return 0; + case 43: + /* CHARACTERS[BOOLEAN] */ + val->type = BOOLEAN; + decodeBoolean(stream, &val->boolean); + /* move on */ + state->grammarStack[state->stackIndex] = 49; + return 0; + case 45: + /* CHARACTERS[BOOLEAN] */ + val->type = BOOLEAN; + decodeBoolean(stream, &val->boolean); + /* move on */ + state->grammarStack[state->stackIndex] = 50; + return 0; + case 47: + /* CHARACTERS[INTEGER_64] */ + val->type = INTEGER_64; + decodeInteger64(stream, &val->int64); + /* move on */ + state->grammarStack[state->stackIndex] = 51; + return 0; + case 53: + /* CHARACTERS[STRING] */ + val->type = STRING; + decodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 60; + return 0; + case 57: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 3, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 61; + return 0; + case 63: + /* CHARACTERS[STRING] */ + val->type = STRING; + decodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 73; + return 0; + case 65: + /* CHARACTERS[BINARY_HEX] */ + val->type = BINARY_HEX; + decodeBinary(stream, &val->binary); + /* move on */ + state->grammarStack[state->stackIndex] = 74; + return 0; + case 76: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 4, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 80; + return 0; + case 79: + /* CHARACTERS[INTEGER_64] */ + /* xsi:type OR xsi:nil */ + decodeNBitUnsignedInteger(stream, 1, &xsi); + val->type = INTEGER_64; + decodeInteger64(stream, &val->int64); + /* move on */ + state->grammarStack[state->stackIndex] = 81; + return 0; + case 71: + /* CHARACTERS[INTEGER_16] */ + val->type = INTEGER_16; + decodeInteger32(stream, &val->int32); + /* move on */ + state->grammarStack[state->stackIndex] = 83; + return 0; + case 85: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 1, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 86; + return 0; + case 88: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 1, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 96; + return 0; + case 90: + /* CHARACTERS[BINARY_HEX] */ + val->type = BINARY_HEX; + decodeBinary(stream, &val->binary); + /* move on */ + state->grammarStack[state->stackIndex] = 97; + return 0; + case 99: + /* CHARACTERS[STRING] */ + val->type = STRING; + decodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 100; + return 0; + case 102: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 2, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 103; + return 0; + case 366: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 3, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 367; + return 0; + case 373: + /* CHARACTERS[INTEGER_16] */ + val->type = INTEGER_16; + decodeInteger32(stream, &val->int32); + /* move on */ + state->grammarStack[state->stackIndex] = 376; + return 0; + case 378: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 1, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 387; + return 0; + case 384: + /* CHARACTERS[STRING] */ + val->type = STRING; + decodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 388; + return 0; + case 390: + /* CHARACTERS[STRING] */ + val->type = STRING; + decodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 393; + return 0; + case 396: + /* CHARACTERS[STRING] */ + val->type = STRING; + decodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 399; + return 0; + case 403: + /* CHARACTERS[UNSIGNED_INTEGER_32] */ + val->type = UNSIGNED_INTEGER_32; + decodeUnsignedInteger32(stream, &val->uint32); + /* move on */ + state->grammarStack[state->stackIndex] = 475; + return 0; + case 477: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 2, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 480; + return 0; + case 479: + /* CHARACTERS[STRING] */ + val->type = STRING; + decodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 481; + return 0; + case 483: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 3, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 486; + return 0; + case 490: + /* CHARACTERS[BINARY_HEX] */ + val->type = BINARY_HEX; + decodeBinary(stream, &val->binary); + /* move on */ + state->grammarStack[state->stackIndex] = 499; + return 0; + case 492: + /* CHARACTERS[STRING] */ + val->type = STRING; + decodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 500; + return 0; + case 498: + /* CHARACTERS[LIST] */ + val->type = LIST; + return -1; + /* move on */ + state->grammarStack[state->stackIndex] = 502; + return 0; + case 506: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 2, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 508; + return 0; + case 512: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 3, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 516; + return 0; + case 527: + /* CHARACTERS[BINARY_HEX] */ + val->type = BINARY_HEX; + decodeBinary(stream, &val->binary); + /* move on */ + state->grammarStack[state->stackIndex] = 531; + return 0; + case 530: + /* CHARACTERS[STRING] */ + val->type = STRING; + decodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 532; + return 0; + case 534: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 2, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 539; + return 0; + case 536: + /* CHARACTERS[STRING] */ + /* xsi:type OR xsi:nil */ + decodeNBitUnsignedInteger(stream, 1, &xsi); + val->type = STRING; + decodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 540; + return 0; + case 542: + /* CHARACTERS[ENUMERATION] */ + val->type = ENUMERATION; + decodeNBitUnsignedInteger(stream, 3, &val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 543; + return 0; + + default: + return -1; + } + + return 0; +} + +int exiDecodeAttribute(bitstream_t* stream, exi_state_t* state, + eqname_t* at, exi_value_t* val) { + switch (state->grammarStack[state->stackIndex]) { + + default: + return -1; + } + return -1; +} + + + +#endif + diff --git a/src/codec/EXIDecoder.h b/src/codec/EXIDecoder.h new file mode 100644 index 0000000..92fb97f --- /dev/null +++ b/src/codec/EXIDecoder.h @@ -0,0 +1,61 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_DECODER_H +#define EXI_DECODER_H + +#include "EXITypes.h" + +int exiInitDecoder(bitstream_t* stream, exi_state_t* state); + +int exiDecodeNextEvent(bitstream_t* stream, exi_state_t* state, + exi_event_t* nextEvent); + +int exiDecodeStartDocument(bitstream_t* stream, exi_state_t* state); + +int exiDecodeEndDocument(bitstream_t* stream, exi_state_t* state); + +int exiDecodeStartElement(bitstream_t* stream, exi_state_t* state, + eqname_t* se); + +int exiDecodeEndElement(bitstream_t* stream, exi_state_t* state, + eqname_t* ee); + +int exiDecodeCharacters(bitstream_t* stream, exi_state_t* state, + exi_value_t* val); + +int exiDecodeAttribute(bitstream_t* stream, exi_state_t* state, + eqname_t* at, exi_value_t* val); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/EXIEncoder.c b/src/codec/EXIEncoder.c new file mode 100644 index 0000000..52c2365 --- /dev/null +++ b/src/codec/EXIEncoder.c @@ -0,0 +1,6843 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + *

NOTE: Code generated by EXIdizer v0.1

+ ********************************************************************/ + +#ifndef EXI_ENCODER_C +#define EXI_ENCODER_C + +#include +#include +#include +#include + +#include "EXITypes.h" +#include "BitOutputStream.h" +#include "BitEncoderChannel.h" + +#include "EXICoder.h" +#include "EXIHeader.h" +#include "StringTable.h" + +/* ==================================== */ + +int exiInitEncoder(bitstream_t* stream, exi_state_t* state) { + /* init grammar state */ + state->stackIndex = 0; + state->grammarStack[0] = 0; + /* encode header */ + return writeEXIHeader(stream); +} + +int exiEncodeStartDocument(bitstream_t* stream, exi_state_t* state) { + if ( state->grammarStack[state->stackIndex] == 0 ) { + /* move on */ + state->grammarStack[state->stackIndex] = 1; + return 0; + } + + return -1; +} + +int exiEncodeEndDocument(bitstream_t* stream, exi_state_t* state) { + if ( state->grammarStack[state->stackIndex] == 2) { + return 0; + } + + return -1; +} + +int exiEncodeStartElement(bitstream_t* stream, exi_state_t* state, + eqname_t* se) { + switch (state->grammarStack[state->stackIndex]) { + case 1: + /* DocContent[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}V2G_Message), START_ELEMENT_GENERIC] */ + if ( se->localPart == 2 && se->namespaceURI == 6 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement) */ + encodeNBitUnsignedInteger(stream, 0, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 3, se); + } + else if ( se->localPart == 11 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq) */ + encodeNBitUnsignedInteger(stream, 1, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 5, se); + } + else if ( se->localPart == 13 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes) */ + encodeNBitUnsignedInteger(stream, 2, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 6, se); + } + else if ( se->localPart == 17 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq) */ + encodeNBitUnsignedInteger(stream, 3, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 7, se); + } + else if ( se->localPart == 19 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes) */ + encodeNBitUnsignedInteger(stream, 4, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 8, se); + } + else if ( se->localPart == 21 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq) */ + encodeNBitUnsignedInteger(stream, 5, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 9, se); + } + else if ( se->localPart == 23 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes) */ + encodeNBitUnsignedInteger(stream, 6, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 10, se); + } + else if ( se->localPart == 33 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq) */ + encodeNBitUnsignedInteger(stream, 7, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 11, se); + } + else if ( se->localPart == 35 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes) */ + encodeNBitUnsignedInteger(stream, 8, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 12, se); + } + else if ( se->localPart == 37 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq) */ + encodeNBitUnsignedInteger(stream, 9, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 13, se); + } + else if ( se->localPart == 39 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes) */ + encodeNBitUnsignedInteger(stream, 10, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 14, se); + } + else if ( se->localPart == 41 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq) */ + encodeNBitUnsignedInteger(stream, 11, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 15, se); + } + else if ( se->localPart == 43 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes) */ + encodeNBitUnsignedInteger(stream, 12, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 16, se); + } + else if ( se->localPart == 48 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq) */ + encodeNBitUnsignedInteger(stream, 13, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 17, se); + } + else if ( se->localPart == 50 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes) */ + encodeNBitUnsignedInteger(stream, 14, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 18, se); + } + else if ( se->localPart == 53 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq) */ + encodeNBitUnsignedInteger(stream, 15, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 19, se); + } + else if ( se->localPart == 55 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes) */ + encodeNBitUnsignedInteger(stream, 16, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 20, se); + } + else if ( se->localPart == 59 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq) */ + encodeNBitUnsignedInteger(stream, 17, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 21, se); + } + else if ( se->localPart == 61 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes) */ + encodeNBitUnsignedInteger(stream, 18, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 22, se); + } + else if ( se->localPart == 9 && se->namespaceURI == 6 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}V2G_Message) */ + encodeNBitUnsignedInteger(stream, 19, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 2; + /* push element on stack */ + return exiPushStack(state, 23, se); + } + break; + case 5: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + if ( se->localPart == 32 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */ + /* move on */ + state->grammarStack[state->stackIndex] = 24; + /* push element on stack */ + return exiPushStack(state, 25, se); + } + break; + case 6: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + if ( se->localPart == 47 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */ + /* move on */ + state->grammarStack[state->stackIndex] = 33; + /* push element on stack */ + return exiPushStack(state, 34, se); + } + break; + case 7: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + if ( se->localPart == 26 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 52; + /* push element on stack */ + return exiPushStack(state, 53, se); + } + else if ( se->localPart == 32 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */ + encodeNBitUnsignedInteger(stream, 1, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 54; + /* push element on stack */ + return exiPushStack(state, 25, se); + } + break; + case 8: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + if ( se->localPart == 47 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */ + /* move on */ + state->grammarStack[state->stackIndex] = 84; + /* push element on stack */ + return exiPushStack(state, 85, se); + } + break; + case 10: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + if ( se->localPart == 47 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */ + /* move on */ + state->grammarStack[state->stackIndex] = 87; + /* push element on stack */ + return exiPushStack(state, 88, se); + } + break; + case 11: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ContractID)] */ + if ( se->localPart == 1 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ContractID) */ + /* move on */ + state->grammarStack[state->stackIndex] = 98; + /* push element on stack */ + return exiPushStack(state, 99, se); + } + break; + case 12: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + if ( se->localPart == 47 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */ + /* move on */ + state->grammarStack[state->stackIndex] = 101; + /* push element on stack */ + return exiPushStack(state, 102, se); + } + break; + case 13: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + if ( se->localPart == 32 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */ + /* move on */ + state->grammarStack[state->stackIndex] = 104; + /* push element on stack */ + return exiPushStack(state, 25, se); + } + break; + case 14: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + if ( se->localPart == 47 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */ + /* move on */ + state->grammarStack[state->stackIndex] = 365; + /* push element on stack */ + return exiPushStack(state, 366, se); + } + break; + case 15: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + if ( se->localPart == 32 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */ + /* move on */ + state->grammarStack[state->stackIndex] = 368; + /* push element on stack */ + return exiPushStack(state, 25, se); + } + break; + case 16: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + if ( se->localPart == 47 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */ + /* move on */ + state->grammarStack[state->stackIndex] = 377; + /* push element on stack */ + return exiPushStack(state, 378, se); + } + break; + case 17: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */ + if ( se->localPart == 58 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceType) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 476; + /* push element on stack */ + return exiPushStack(state, 477, se); + } + else if ( se->localPart == 57 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 478; + /* push element on stack */ + return exiPushStack(state, 479, se); + } + break; + case 18: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + if ( se->localPart == 47 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */ + /* move on */ + state->grammarStack[state->stackIndex] = 482; + /* push element on stack */ + return exiPushStack(state, 483, se); + } + break; + case 19: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList)] */ + if ( se->localPart == 52 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList) */ + /* move on */ + state->grammarStack[state->stackIndex] = 503; + /* push element on stack */ + return exiPushStack(state, 485, se); + } + break; + case 20: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + if ( se->localPart == 47 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */ + /* move on */ + state->grammarStack[state->stackIndex] = 505; + /* push element on stack */ + return exiPushStack(state, 506, se); + } + break; + case 21: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + if ( se->localPart == 26 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 509; + /* push element on stack */ + return exiPushStack(state, 53, se); + } + else if ( se->localPart == 32 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */ + encodeNBitUnsignedInteger(stream, 1, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 510; + /* push element on stack */ + return exiPushStack(state, 25, se); + } + break; + case 22: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ + if ( se->localPart == 47 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */ + /* move on */ + state->grammarStack[state->stackIndex] = 511; + /* push element on stack */ + return exiPushStack(state, 512, se); + } + break; + case 23: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Header)] */ + if ( se->localPart == 4 && se->namespaceURI == 6 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Header) */ + /* move on */ + state->grammarStack[state->stackIndex] = 517; + /* push element on stack */ + return exiPushStack(state, 518, se); + } + break; + case 24: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqLockStatus)] */ + if ( se->localPart == 45 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqLockStatus) */ + /* move on */ + state->grammarStack[state->stackIndex] = 26; + /* push element on stack */ + return exiPushStack(state, 27, se); + } + break; + case 25: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */ + if ( se->localPart == 4 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked) */ + /* move on */ + state->grammarStack[state->stackIndex] = 28; + /* push element on stack */ + return exiPushStack(state, 27, se); + } + break; + case 28: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargerStandby)] */ + if ( se->localPart == 0 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargerStandby) */ + /* move on */ + state->grammarStack[state->stackIndex] = 29; + /* push element on stack */ + return exiPushStack(state, 30, se); + } + break; + case 33: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + if ( se->localPart == 7 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus) */ + /* move on */ + state->grammarStack[state->stackIndex] = 35; + /* push element on stack */ + return exiPushStack(state, 36, se); + } + break; + case 36: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FatalError)] */ + if ( se->localPart == 12 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FatalError) */ + /* move on */ + state->grammarStack[state->stackIndex] = 38; + /* push element on stack */ + return exiPushStack(state, 39, se); + } + break; + case 38: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EVSEStandby)] */ + if ( se->localPart == 7 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EVSEStandby) */ + /* move on */ + state->grammarStack[state->stackIndex] = 40; + /* push element on stack */ + return exiPushStack(state, 30, se); + } + break; + case 40: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */ + if ( se->localPart == 4 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked) */ + /* move on */ + state->grammarStack[state->stackIndex] = 41; + /* push element on stack */ + return exiPushStack(state, 27, se); + } + break; + case 41: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PowerSwitchClosed)] */ + if ( se->localPart == 25 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PowerSwitchClosed) */ + /* move on */ + state->grammarStack[state->stackIndex] = 42; + /* push element on stack */ + return exiPushStack(state, 43, se); + } + break; + case 42: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}RCD)] */ + if ( se->localPart == 27 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}RCD) */ + /* move on */ + state->grammarStack[state->stackIndex] = 44; + /* push element on stack */ + return exiPushStack(state, 45, se); + } + break; + case 44: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ShutDownTime)] */ + if ( se->localPart == 39 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ShutDownTime) */ + /* move on */ + state->grammarStack[state->stackIndex] = 46; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 52: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + if ( se->localPart == 32 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */ + /* move on */ + state->grammarStack[state->stackIndex] = 54; + /* push element on stack */ + return exiPushStack(state, 25, se); + } + break; + case 54: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */ + if ( se->localPart == 63 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 55; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + else if ( se->localPart == 64 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff) */ + encodeNBitUnsignedInteger(stream, 1, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 56; + /* push element on stack */ + return exiPushStack(state, 57, se); + } + break; + case 55: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */ + if ( se->localPart == 64 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff) */ + /* move on */ + state->grammarStack[state->stackIndex] = 56; + /* push element on stack */ + return exiPushStack(state, 57, se); + } + break; + case 56: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo)] */ + if ( se->localPart == 15 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo) */ + /* move on */ + state->grammarStack[state->stackIndex] = 58; + /* push element on stack */ + return exiPushStack(state, 59, se); + } + break; + case 59: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if ( se->localPart == 16 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterID) */ + encodeNBitUnsignedInteger(stream, 0, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 62; + /* push element on stack */ + return exiPushStack(state, 63, se); + } + else if ( se->localPart == 18 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey) */ + encodeNBitUnsignedInteger(stream, 1, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 64; + /* push element on stack */ + return exiPushStack(state, 65, se); + } + else if ( se->localPart == 19 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading) */ + encodeNBitUnsignedInteger(stream, 2, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 66; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + else if ( se->localPart == 40 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading) */ + encodeNBitUnsignedInteger(stream, 3, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 68; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + else if ( se->localPart == 20 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus) */ + encodeNBitUnsignedInteger(stream, 4, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 70; + /* push element on stack */ + return exiPushStack(state, 71, se); + } + else if ( se->localPart == 41 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */ + encodeNBitUnsignedInteger(stream, 5, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 62: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if ( se->localPart == 18 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey) */ + encodeNBitUnsignedInteger(stream, 0, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 64; + /* push element on stack */ + return exiPushStack(state, 65, se); + } + else if ( se->localPart == 19 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading) */ + encodeNBitUnsignedInteger(stream, 1, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 66; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + else if ( se->localPart == 40 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading) */ + encodeNBitUnsignedInteger(stream, 2, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 68; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + else if ( se->localPart == 20 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus) */ + encodeNBitUnsignedInteger(stream, 3, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 70; + /* push element on stack */ + return exiPushStack(state, 71, se); + } + else if ( se->localPart == 41 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */ + encodeNBitUnsignedInteger(stream, 4, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 64: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if ( se->localPart == 19 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading) */ + encodeNBitUnsignedInteger(stream, 0, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 66; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + else if ( se->localPart == 40 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading) */ + encodeNBitUnsignedInteger(stream, 1, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 68; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + else if ( se->localPart == 20 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus) */ + encodeNBitUnsignedInteger(stream, 2, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 70; + /* push element on stack */ + return exiPushStack(state, 71, se); + } + else if ( se->localPart == 41 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */ + encodeNBitUnsignedInteger(stream, 3, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 66: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if ( se->localPart == 40 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 68; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + else if ( se->localPart == 20 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 70; + /* push element on stack */ + return exiPushStack(state, 71, se); + } + else if ( se->localPart == 41 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */ + encodeNBitUnsignedInteger(stream, 2, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 67: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Multiplier)] */ + if ( se->localPart == 21 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Multiplier) */ + /* move on */ + state->grammarStack[state->stackIndex] = 75; + /* push element on stack */ + return exiPushStack(state, 76, se); + } + break; + case 68: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if ( se->localPart == 20 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 70; + /* push element on stack */ + return exiPushStack(state, 71, se); + } + else if ( se->localPart == 41 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 70: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + if ( se->localPart == 41 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 72; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 75: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Unit)] */ + if ( se->localPart == 53 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Unit) */ + /* move on */ + state->grammarStack[state->stackIndex] = 77; + /* push element on stack */ + return exiPushStack(state, 76, se); + } + break; + case 77: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Value)] */ + if ( se->localPart == 54 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Value) */ + /* move on */ + state->grammarStack[state->stackIndex] = 78; + /* push element on stack */ + return exiPushStack(state, 79, se); + } + break; + case 87: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */ + if ( se->localPart == 3 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID) */ + /* move on */ + state->grammarStack[state->stackIndex] = 89; + /* push element on stack */ + return exiPushStack(state, 90, se); + } + break; + case 89: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + if ( se->localPart == 7 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus) */ + /* move on */ + state->grammarStack[state->stackIndex] = 91; + /* push element on stack */ + return exiPushStack(state, 36, se); + } + break; + case 91: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */ + if ( se->localPart == 63 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent) */ + /* move on */ + state->grammarStack[state->stackIndex] = 92; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 92: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPower)] */ + if ( se->localPart == 6 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 93; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 93: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */ + if ( se->localPart == 25 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PCurrent) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 94; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + else if ( se->localPart == 15 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 95; + /* push element on stack */ + return exiPushStack(state, 59, se); + } + break; + case 94: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */ + if ( se->localPart == 15 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 95; + /* push element on stack */ + return exiPushStack(state, 59, se); + } + break; + case 104: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqSwitchStatus)] */ + if ( se->localPart == 46 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqSwitchStatus) */ + /* move on */ + state->grammarStack[state->stackIndex] = 105; + /* push element on stack */ + return exiPushStack(state, 43, se); + } + break; + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */ + if ( se->localPart == 64 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 106; + /* push element on stack */ + return exiPushStack(state, 57, se); + } + else if ( se->localPart == 0 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 107; + /* push element on stack */ + return exiPushStack(state, 108, se); + } + break; + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */ + if ( se->localPart == 0 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 107; + /* push element on stack */ + return exiPushStack(state, 108, se); + } + break; + case 108: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart)] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + /* move on */ + state->grammarStack[state->stackIndex] = 109; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 109: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 110; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 110: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 111; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 111: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 112; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 112: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 113; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 113: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 114; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 114: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 115; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 115: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 116; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 116: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 117; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 117: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 118; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 118: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 119; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 119: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 120; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 120: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 121; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 121: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 122; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 122: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 123; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 123: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 124; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 124: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 125; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 125: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 126; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 126: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 127; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 127: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 128; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 128: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 129; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 129: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 130; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 131; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 131: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 132; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 132: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 133; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 133: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 134; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 134: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 135; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 135: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 136; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 136: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 137; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 137: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 138; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 138: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 139; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 139: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 140; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 140: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 141; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 141: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 142; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 142: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 143; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 143: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 144; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 144: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 145; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 145: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 146; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 146: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 147; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 147: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 148; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 149; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 149: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 150; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 150: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 151; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 151: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 152; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 152: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 153; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 153: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 154; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 154: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 155; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 155: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 156; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 156: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 157; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 157: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 158; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 158: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 159; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 159: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 160; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 160: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 161; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 161: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 162; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 163; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 163: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 164; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 164: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 165; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 165: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 166; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 166: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 167; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 167: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 168; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 168: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 169; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 169: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 170; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 170: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 171; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 171: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 172; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 172: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 173; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 173: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 174; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 174: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 175; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 175: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 176; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 176: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 177; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 177: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 178; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 179; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 179: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 180; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 180: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 181; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 181: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 182; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 182: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 183; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 183: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 184; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 184: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 185; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 185: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 186; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 187; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 187: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 188; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 189; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 189: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 190; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 190: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 191; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 191: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 192; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 192: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 193; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 193: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 194; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 194: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 195; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 195: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 196; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 196: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 197; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 197: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 198; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 198: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 199; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 199: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 200; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 200: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 201; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 201: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 202; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 202: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 203; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 203: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 204; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 204: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 205; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 205: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 206; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 206: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 207; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 207: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 208; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 208: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 209; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 209: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 210; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 210: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 211; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 211: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 212; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 212: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 213; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 213: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 214; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 214: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 215; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 215: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 216; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 216: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 217; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 217: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 218; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 219; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 219: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 220; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 220: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 221; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 221: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 222; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 222: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 223; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 223: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 224; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 224: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 225; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 225: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 226; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 226: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 227; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 227: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 228; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 228: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 229; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 229: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 230; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 230: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 231; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 231: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 232; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 232: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 233; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 233: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 234; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 234: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 235; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 235: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 236; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 236: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 237; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 237: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 238; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 238: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 239; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 239: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 240; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 240: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 241; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 241: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 242; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 242: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 243; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 243: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 244; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 244: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 245; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 245: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 246; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 246: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 247; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 247: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 248; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 249; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 249: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 250; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 250: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 251; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 251: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 252; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 252: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 253; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 253: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 254; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 254: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 255; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 255: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 256; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 256: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 257; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 257: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 258; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 258: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 259; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 259: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 260; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 260: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 261; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 261: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 262; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 262: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 263; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 263: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 264; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 264: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 265; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 265: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 266; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 266: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 267; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 267: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 268; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 268: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 269; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 269: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 270; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 270: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 271; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 271: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 272; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 272: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 273; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 273: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 274; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 274: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 275; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 275: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 276; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 276: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 277; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 277: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 278; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 278: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 279; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 279: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 280; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 280: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 281; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 281: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 282; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 282: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 283; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 283: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 284; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 284: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 285; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 285: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 286; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 286: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 287; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 287: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 288; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 288: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 289; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 289: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 290; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 290: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 291; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 291: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 292; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 292: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 293; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 293: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 294; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 294: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 295; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 295: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 296; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 296: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 297; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 297: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 298; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 298: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 299; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 299: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 300; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 300: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 301; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 301: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 302; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 302: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 303; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 303: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 304; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 304: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 305; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 305: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 306; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 306: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 307; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 307: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 308; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 308: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 309; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 309: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 310; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 310: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 311; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 311: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 312; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 312: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 313; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 313: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 314; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 314: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 315; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 315: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 316; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 316: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 317; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 317: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 318; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 318: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 319; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 319: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 320; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 320: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 321; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 321: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 322; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 322: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 323; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 323: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 324; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 324: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 325; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 325: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 326; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 326: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 327; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 327: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 328; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 328: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 329; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 329: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 330; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 330: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 331; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 331: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 332; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 332: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 333; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 333: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 334; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 334: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 335; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 335: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 336; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 336: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 337; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 337: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 338; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 338: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 339; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 339: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 340; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 340: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 341; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 341: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 342; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 342: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 343; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 343: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 344; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 344: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 345; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 345: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 346; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 346: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 347; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 347: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 348; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 348: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 349; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 349: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 350; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 350: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 351; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 351: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 352; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 352: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 353; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 353: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 354; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 354: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 355; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 355: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 356; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 356: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 357; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 357: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 358; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 358: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 359; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 359: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 360; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 360: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 361; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 361: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 362; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 362: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 363; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 363: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ + if ( se->localPart == 1 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 364; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 368: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EoC)] */ + if ( se->localPart == 10 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EoC) */ + /* move on */ + state->grammarStack[state->stackIndex] = 369; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 369: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EAmount)] */ + if ( se->localPart == 2 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EAmount) */ + /* move on */ + state->grammarStack[state->stackIndex] = 370; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 370: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPower)] */ + if ( se->localPart == 28 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPower) */ + /* move on */ + state->grammarStack[state->stackIndex] = 371; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 371: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPhases)] */ + if ( se->localPart == 27 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPhases) */ + /* move on */ + state->grammarStack[state->stackIndex] = 372; + /* push element on stack */ + return exiPushStack(state, 373, se); + } + break; + case 372: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxVoltage)] */ + if ( se->localPart == 29 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxVoltage) */ + /* move on */ + state->grammarStack[state->stackIndex] = 374; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 374: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMinVoltage)] */ + if ( se->localPart == 30 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMinVoltage) */ + /* move on */ + state->grammarStack[state->stackIndex] = 375; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 377: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + if ( se->localPart == 7 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus) */ + /* move on */ + state->grammarStack[state->stackIndex] = 379; + /* push element on stack */ + return exiPushStack(state, 36, se); + } + break; + case 379: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEVoltage)] */ + if ( se->localPart == 8 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEVoltage) */ + /* move on */ + state->grammarStack[state->stackIndex] = 380; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 380: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEIMax)] */ + if ( se->localPart == 4 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEIMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 381; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 381: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPhases)] */ + if ( se->localPart == 5 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPhases) */ + /* move on */ + state->grammarStack[state->stackIndex] = 382; + /* push element on stack */ + return exiPushStack(state, 373, se); + } + break; + case 382: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EnergyProvider), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */ + if ( se->localPart == 9 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EnergyProvider) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 383; + /* push element on stack */ + return exiPushStack(state, 384, se); + } + else if ( se->localPart == 65 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 385; + /* push element on stack */ + return exiPushStack(state, 386, se); + } + break; + case 383: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */ + if ( se->localPart == 65 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 385; + /* push element on stack */ + return exiPushStack(state, 386, se); + } + break; + case 386: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Currency)] */ + if ( se->localPart == 5 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Currency) */ + /* move on */ + state->grammarStack[state->stackIndex] = 389; + /* push element on stack */ + return exiPushStack(state, 390, se); + } + break; + case 389: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff)] */ + if ( se->localPart == 42 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff) */ + /* move on */ + state->grammarStack[state->stackIndex] = 391; + /* push element on stack */ + return exiPushStack(state, 392, se); + } + break; + case 391: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff), END_ELEMENT] */ + if ( se->localPart == 42 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 391; + /* push element on stack */ + return exiPushStack(state, 392, se); + } + break; + case 392: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffID)] */ + if ( se->localPart == 49 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffID) */ + /* move on */ + state->grammarStack[state->stackIndex] = 394; + /* push element on stack */ + return exiPushStack(state, 57, se); + } + break; + case 394: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffDescription), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */ + if ( se->localPart == 44 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffDescription) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 395; + /* push element on stack */ + return exiPushStack(state, 396, se); + } + else if ( se->localPart == 45 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries) */ + encodeNBitUnsignedInteger(stream, 1, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 397; + /* push element on stack */ + return exiPushStack(state, 398, se); + } + break; + case 395: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */ + if ( se->localPart == 45 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries) */ + /* move on */ + state->grammarStack[state->stackIndex] = 397; + /* push element on stack */ + return exiPushStack(state, 398, se); + } + break; + case 398: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry)] */ + if ( se->localPart == 47 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry) */ + /* move on */ + state->grammarStack[state->stackIndex] = 400; + /* push element on stack */ + return exiPushStack(state, 401, se); + } + break; + case 400: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry), END_ELEMENT] */ + if ( se->localPart == 47 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 400; + /* push element on stack */ + return exiPushStack(state, 401, se); + } + break; + case 401: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart)] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + /* move on */ + state->grammarStack[state->stackIndex] = 402; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 402: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 404; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 404: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 405; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 474; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 405: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 406; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 406: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 407; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 473; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 407: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 408; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 408: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 409; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 472; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 409: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 410; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 410: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 411; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 471; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 411: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 412; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 412: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 413; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 470; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 413: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 414; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 414: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 415; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 469; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 415: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 416; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 416: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 417; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 468; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 417: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 418; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 418: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 419; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 467; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 419: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 420; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 420: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 421; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 466; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 421: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 422; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 422: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 423; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 465; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 423: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 424; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 424: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 425; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 464; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 425: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 426; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 426: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 427; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 463; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 427: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 428; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 428: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 429; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 462; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 429: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 430; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 430: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 431; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 461; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 431: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 432; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 432: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 433; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 460; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 433: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 434; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 434: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 435; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 459; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 435: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 436; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 436: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 437; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 458; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 437: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 438; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 438: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 439; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 457; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 439: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 440; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 440: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 441; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 456; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 441: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 442; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 442: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 443; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 455; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 443: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 444; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 444: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 445; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 454; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 445: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 446; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 446: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 447; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 453; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 447: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 448; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 448: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 449; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + else if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 452; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 449: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ + if ( se->localPart == 50 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */ + /* move on */ + state->grammarStack[state->stackIndex] = 450; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 450: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + if ( se->localPart == 6 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 451; + /* push element on stack */ + return exiPushStack(state, 67, se); + } + break; + case 452: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 449; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 453: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 447; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 454: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 445; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 455: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 443; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 456: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 441; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 457: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 439; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 458: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 437; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 459: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 435; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 460: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 433; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 461: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 431; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 462: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 429; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 463: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 427; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 464: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 425; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 465: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 423; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 466: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 421; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 467: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 419; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 468: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 417; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 469: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 415; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 470: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 413; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 471: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 411; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 472: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 409; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 473: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 407; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 474: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + if ( se->localPart == 51 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 405; + /* push element on stack */ + return exiPushStack(state, 403, se); + } + break; + case 476: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */ + if ( se->localPart == 57 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 478; + /* push element on stack */ + return exiPushStack(state, 479, se); + } + break; + case 482: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList), END_ELEMENT] */ + if ( se->localPart == 52 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 484; + /* push element on stack */ + return exiPushStack(state, 485, se); + } + break; + case 485: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service)] */ + if ( se->localPart == 28 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service) */ + /* move on */ + state->grammarStack[state->stackIndex] = 487; + /* push element on stack */ + return exiPushStack(state, 488, se); + } + break; + case 487: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service), END_ELEMENT] */ + if ( se->localPart == 28 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 487; + /* push element on stack */ + return exiPushStack(state, 488, se); + } + break; + case 488: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceID)] */ + if ( se->localPart == 31 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceID) */ + /* move on */ + state->grammarStack[state->stackIndex] = 489; + /* push element on stack */ + return exiPushStack(state, 490, se); + } + break; + case 489: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + if ( se->localPart == 33 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceName) */ + encodeNBitUnsignedInteger(stream, 0, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 491; + /* push element on stack */ + return exiPushStack(state, 492, se); + } + else if ( se->localPart == 36 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType) */ + encodeNBitUnsignedInteger(stream, 1, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 493; + /* push element on stack */ + return exiPushStack(state, 477, se); + } + else if ( se->localPart == 34 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope) */ + encodeNBitUnsignedInteger(stream, 2, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 494; + /* push element on stack */ + return exiPushStack(state, 479, se); + } + else if ( se->localPart == 30 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails) */ + encodeNBitUnsignedInteger(stream, 3, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 495; + /* push element on stack */ + return exiPushStack(state, 496, se); + } + else if ( se->localPart == 24 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption) */ + encodeNBitUnsignedInteger(stream, 4, 3); + /* move on */ + state->grammarStack[state->stackIndex] = 497; + /* push element on stack */ + return exiPushStack(state, 498, se); + } + break; + case 491: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + if ( se->localPart == 36 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 493; + /* push element on stack */ + return exiPushStack(state, 477, se); + } + else if ( se->localPart == 34 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 494; + /* push element on stack */ + return exiPushStack(state, 479, se); + } + else if ( se->localPart == 30 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails) */ + encodeNBitUnsignedInteger(stream, 2, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 495; + /* push element on stack */ + return exiPushStack(state, 496, se); + } + else if ( se->localPart == 24 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption) */ + encodeNBitUnsignedInteger(stream, 3, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 497; + /* push element on stack */ + return exiPushStack(state, 498, se); + } + break; + case 493: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + if ( se->localPart == 34 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 494; + /* push element on stack */ + return exiPushStack(state, 479, se); + } + else if ( se->localPart == 30 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 495; + /* push element on stack */ + return exiPushStack(state, 496, se); + } + else if ( se->localPart == 24 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption) */ + encodeNBitUnsignedInteger(stream, 2, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 497; + /* push element on stack */ + return exiPushStack(state, 498, se); + } + break; + case 494: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + if ( se->localPart == 30 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 495; + /* push element on stack */ + return exiPushStack(state, 496, se); + } + else if ( se->localPart == 24 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption) */ + encodeNBitUnsignedInteger(stream, 1, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 497; + /* push element on stack */ + return exiPushStack(state, 498, se); + } + break; + case 495: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ + if ( se->localPart == 24 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption) */ + /* move on */ + state->grammarStack[state->stackIndex] = 497; + /* push element on stack */ + return exiPushStack(state, 498, se); + } + break; + case 503: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVPubKey)] */ + if ( se->localPart == 31 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVPubKey) */ + /* move on */ + state->grammarStack[state->stackIndex] = 504; + /* push element on stack */ + return exiPushStack(state, 65, se); + } + break; + case 505: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringAuthPubKey), END_ELEMENT] */ + if ( se->localPart == 16 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringAuthPubKey) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 507; + /* push element on stack */ + return exiPushStack(state, 65, se); + } + break; + case 509: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ + if ( se->localPart == 32 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */ + /* move on */ + state->grammarStack[state->stackIndex] = 510; + /* push element on stack */ + return exiPushStack(state, 25, se); + } + break; + case 511: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */ + if ( se->localPart == 3 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID) */ + /* move on */ + state->grammarStack[state->stackIndex] = 513; + /* push element on stack */ + return exiPushStack(state, 90, se); + } + break; + case 513: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ + if ( se->localPart == 7 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus) */ + /* move on */ + state->grammarStack[state->stackIndex] = 514; + /* push element on stack */ + return exiPushStack(state, 36, se); + } + break; + case 514: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */ + if ( se->localPart == 63 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent) */ + /* move on */ + state->grammarStack[state->stackIndex] = 515; + /* push element on stack */ + return exiPushStack(state, 47, se); + } + break; + case 517: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Body)] */ + if ( se->localPart == 0 && se->namespaceURI == 6 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Body) */ + /* move on */ + state->grammarStack[state->stackIndex] = 519; + /* push element on stack */ + return exiPushStack(state, 520, se); + } + break; + case 518: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}SessionInformation)] */ + if ( se->localPart == 8 && se->namespaceURI == 6 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}SessionInformation) */ + /* move on */ + state->grammarStack[state->stackIndex] = 521; + /* push element on stack */ + return exiPushStack(state, 522, se); + } + break; + case 520: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), END_ELEMENT] */ + if ( se->localPart == 2 && se->namespaceURI == 6 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement) */ + encodeNBitUnsignedInteger(stream, 0, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 3, se); + } + else if ( se->localPart == 11 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq) */ + encodeNBitUnsignedInteger(stream, 1, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 5, se); + } + else if ( se->localPart == 13 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes) */ + encodeNBitUnsignedInteger(stream, 2, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 6, se); + } + else if ( se->localPart == 17 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq) */ + encodeNBitUnsignedInteger(stream, 3, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 7, se); + } + else if ( se->localPart == 19 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes) */ + encodeNBitUnsignedInteger(stream, 4, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 8, se); + } + else if ( se->localPart == 21 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq) */ + encodeNBitUnsignedInteger(stream, 5, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 9, se); + } + else if ( se->localPart == 23 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes) */ + encodeNBitUnsignedInteger(stream, 6, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 10, se); + } + else if ( se->localPart == 33 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq) */ + encodeNBitUnsignedInteger(stream, 7, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 11, se); + } + else if ( se->localPart == 35 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes) */ + encodeNBitUnsignedInteger(stream, 8, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 12, se); + } + else if ( se->localPart == 37 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq) */ + encodeNBitUnsignedInteger(stream, 9, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 13, se); + } + else if ( se->localPart == 39 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes) */ + encodeNBitUnsignedInteger(stream, 10, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 14, se); + } + else if ( se->localPart == 41 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq) */ + encodeNBitUnsignedInteger(stream, 11, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 15, se); + } + else if ( se->localPart == 43 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes) */ + encodeNBitUnsignedInteger(stream, 12, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 16, se); + } + else if ( se->localPart == 48 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq) */ + encodeNBitUnsignedInteger(stream, 13, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 17, se); + } + else if ( se->localPart == 50 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes) */ + encodeNBitUnsignedInteger(stream, 14, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 18, se); + } + else if ( se->localPart == 53 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq) */ + encodeNBitUnsignedInteger(stream, 15, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 19, se); + } + else if ( se->localPart == 55 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes) */ + encodeNBitUnsignedInteger(stream, 16, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 20, se); + } + else if ( se->localPart == 59 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq) */ + encodeNBitUnsignedInteger(stream, 17, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 21, se); + } + else if ( se->localPart == 61 && se->namespaceURI == 4 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes) */ + encodeNBitUnsignedInteger(stream, 18, 5); + /* move on */ + state->grammarStack[state->stackIndex] = 544; + /* push element on stack */ + return exiPushStack(state, 22, se); + } + break; + case 521: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Notification), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */ + if ( se->localPart == 6 && se->namespaceURI == 6 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Notification) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 523; + /* push element on stack */ + return exiPushStack(state, 524, se); + } + else if ( se->localPart == 7 && se->namespaceURI == 6 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 525; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + break; + case 522: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SessionID)] */ + if ( se->localPart == 37 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SessionID) */ + /* move on */ + state->grammarStack[state->stackIndex] = 526; + /* push element on stack */ + return exiPushStack(state, 527, se); + } + break; + case 523: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */ + if ( se->localPart == 7 && se->namespaceURI == 6 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 525; + /* push element on stack */ + return exiPushStack(state, 69, se); + } + break; + case 524: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + if ( se->localPart == 13 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultCode) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 533; + /* push element on stack */ + return exiPushStack(state, 534, se); + } + else if ( se->localPart == 14 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 535; + /* push element on stack */ + return exiPushStack(state, 536, se); + } + else if ( se->localPart == 10 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList) */ + encodeNBitUnsignedInteger(stream, 2, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 537; + /* push element on stack */ + return exiPushStack(state, 538, se); + } + break; + case 526: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceSessionID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */ + if ( se->localPart == 35 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceSessionID) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 528; + /* push element on stack */ + return exiPushStack(state, 527, se); + } + else if ( se->localPart == 26 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 529; + /* push element on stack */ + return exiPushStack(state, 530, se); + } + break; + case 528: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */ + if ( se->localPart == 26 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 529; + /* push element on stack */ + return exiPushStack(state, 530, se); + } + break; + case 533: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + if ( se->localPart == 14 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg) */ + encodeNBitUnsignedInteger(stream, 0, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 535; + /* push element on stack */ + return exiPushStack(state, 536, se); + } + else if ( se->localPart == 10 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList) */ + encodeNBitUnsignedInteger(stream, 1, 2); + /* move on */ + state->grammarStack[state->stackIndex] = 537; + /* push element on stack */ + return exiPushStack(state, 538, se); + } + break; + case 535: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + if ( se->localPart == 10 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList) */ + encodeNBitUnsignedInteger(stream, 0, 1); + /* move on */ + state->grammarStack[state->stackIndex] = 537; + /* push element on stack */ + return exiPushStack(state, 538, se); + } + break; + case 538: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Event)] */ + if ( se->localPart == 9 && se->namespaceURI == 5 ) { + /* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Event) */ + /* move on */ + state->grammarStack[state->stackIndex] = 541; + /* push element on stack */ + return exiPushStack(state, 542, se); + } + break; + + default: + return -1; + } + + return -1; +} + +int exiEncodeEndElement(bitstream_t* stream, exi_state_t* state, + eqname_t* ee) { + switch (state->grammarStack[state->stackIndex]) { + case 3: + /* FirstStartTag(xsi:type)StartTag[END_ELEMENT] */ + /* no event code to write */ + break; + case 26: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 29: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 31: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 32: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 35: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 37: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 46: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 48: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 49: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 50: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 51: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 58: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 60: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 61: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 72: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 70: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 68: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 66: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 3, 2); + break; + case 64: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 4, 3); + break; + case 62: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 5, 3); + break; + case 59: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 6, 3); + break; + case 73: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 74: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 78: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 80: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 81: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 82: + /* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + encodeNBitUnsignedInteger(stream, 1, 2); + break; + case 69: + /* FirstStartTag(xsi:type)StartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 83: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 84: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 86: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 9: + /* FirstStartTagStartTag[END_ELEMENT] */ + /* no event code to write */ + break; + case 95: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 94: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 93: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 96: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 97: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 98: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 100: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 101: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 103: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 107: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 106: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 105: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 364: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 362: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 360: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 358: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 356: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 354: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 352: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 350: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 348: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 346: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 344: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 342: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 340: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 338: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 336: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 334: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 332: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 330: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 328: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 326: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 324: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 322: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 320: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 318: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 316: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 314: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 312: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 310: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 308: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 306: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 304: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 302: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 300: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 298: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 296: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 294: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 292: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 290: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 288: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 286: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 284: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 282: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 280: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 278: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 276: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 274: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 272: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 270: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 268: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 266: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 264: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 262: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 260: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 258: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 256: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 254: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 252: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 250: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 248: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 246: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 244: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 242: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 240: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 238: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 236: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 234: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 232: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 230: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 228: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 226: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 224: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 222: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 220: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 218: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 216: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 214: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 212: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 210: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 208: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 206: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 204: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 202: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 200: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 198: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 196: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 194: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 192: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 190: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 188: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 186: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 184: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 182: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 180: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 178: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 176: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 174: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 172: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 170: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 168: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 166: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 164: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 162: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 160: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 158: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 156: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 154: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 152: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 150: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 148: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 146: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 144: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 142: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 140: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 138: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 136: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 134: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 132: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 130: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 128: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 126: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 124: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 122: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 120: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 118: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 116: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 114: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 112: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 110: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 365: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 367: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 375: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 376: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 385: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 383: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 382: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EnergyProvider), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 387: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 388: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 391: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 393: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 397: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 399: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 400: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 451: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 450: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 452: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 448: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 453: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 446: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 454: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 444: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 455: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 442: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 456: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 440: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 457: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 438: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 458: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 436: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 459: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 434: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 460: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 432: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 461: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 430: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 462: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 428: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 463: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 426: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 464: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 424: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 465: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 422: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 466: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 420: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 467: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 418: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 468: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 416: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 469: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 414: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 470: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 412: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 471: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 410: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 472: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 408: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 473: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 406: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 474: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 404: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 475: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 478: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 476: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 17: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 480: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 481: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 484: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 482: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 486: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 487: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 497: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 499: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 500: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 501: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 502: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 504: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 507: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 505: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringAuthPubKey), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 508: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 510: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 515: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 516: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 519: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 525: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 523: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 521: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Notification), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 529: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 528: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 526: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceSessionID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 531: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 532: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 537: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 535: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 1, 1); + break; + case 533: + /* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 2, 2); + break; + case 524: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 3, 2); + break; + case 539: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 540: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 541: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 543: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 544: + /* Element[END_ELEMENT] */ + /* no event code to write */ + break; + case 520: + /* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), END_ELEMENT] */ + encodeNBitUnsignedInteger(stream, 19, 5); + break; + + default: + return -1; + } + + // pop item + return exiPopStack(state); +} + +int exiEncodeCharacters(bitstream_t* stream, exi_state_t* state, + exi_value_t* val) { + switch (state->grammarStack[state->stackIndex]) { + case 27: + if (val->type == BOOLEAN) { + /* CHARACTERS[BOOLEAN] */ + encodeBoolean(stream, val->boolean); + /* move on */ + state->grammarStack[state->stackIndex] = 31; + return 0; + } + break; + case 30: + if (val->type == BOOLEAN) { + /* CHARACTERS[BOOLEAN] */ + encodeBoolean(stream, val->boolean); + /* move on */ + state->grammarStack[state->stackIndex] = 32; + return 0; + } + break; + case 34: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 2, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 37; + return 0; + } + break; + case 39: + if (val->type == BOOLEAN) { + /* CHARACTERS[BOOLEAN] */ + encodeBoolean(stream, val->boolean); + /* move on */ + state->grammarStack[state->stackIndex] = 48; + return 0; + } + break; + case 43: + if (val->type == BOOLEAN) { + /* CHARACTERS[BOOLEAN] */ + encodeBoolean(stream, val->boolean); + /* move on */ + state->grammarStack[state->stackIndex] = 49; + return 0; + } + break; + case 45: + if (val->type == BOOLEAN) { + /* CHARACTERS[BOOLEAN] */ + encodeBoolean(stream, val->boolean); + /* move on */ + state->grammarStack[state->stackIndex] = 50; + return 0; + } + break; + case 47: + if (val->type == INTEGER_64) { + /* CHARACTERS[INTEGER_64] */ + encodeInteger64(stream, val->int64); + /* move on */ + state->grammarStack[state->stackIndex] = 51; + return 0; + } + break; + case 53: + if (val->type == STRING) { + /* CHARACTERS[STRING] */ + encodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 60; + return 0; + } + break; + case 57: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 3, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 61; + return 0; + } + break; + case 63: + if (val->type == STRING) { + /* CHARACTERS[STRING] */ + encodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 73; + return 0; + } + break; + case 65: + if (val->type == BINARY_HEX) { + /* CHARACTERS[BINARY_HEX] */ + encodeBinary(stream, &val->binary); + /* move on */ + state->grammarStack[state->stackIndex] = 74; + return 0; + } + break; + case 76: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 4, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 80; + return 0; + } + break; + case 79: + if (val->type == INTEGER_64) { + /* CHARACTERS[INTEGER_64] */ + /* xsi:type OR xsi:nil */ + encodeNBitUnsignedInteger(stream, 0, 1); + encodeInteger64(stream, val->int64); + /* move on */ + state->grammarStack[state->stackIndex] = 81; + return 0; + } + break; + case 71: + if (val->type == INTEGER_16) { + /* CHARACTERS[INTEGER_16] */ + encodeInteger32(stream, val->int32); + /* move on */ + state->grammarStack[state->stackIndex] = 83; + return 0; + } + break; + case 85: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 1, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 86; + return 0; + } + break; + case 88: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 1, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 96; + return 0; + } + break; + case 90: + if (val->type == BINARY_HEX) { + /* CHARACTERS[BINARY_HEX] */ + encodeBinary(stream, &val->binary); + /* move on */ + state->grammarStack[state->stackIndex] = 97; + return 0; + } + break; + case 99: + if (val->type == STRING) { + /* CHARACTERS[STRING] */ + encodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 100; + return 0; + } + break; + case 102: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 2, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 103; + return 0; + } + break; + case 366: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 3, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 367; + return 0; + } + break; + case 373: + if (val->type == INTEGER_16) { + /* CHARACTERS[INTEGER_16] */ + encodeInteger32(stream, val->int32); + /* move on */ + state->grammarStack[state->stackIndex] = 376; + return 0; + } + break; + case 378: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 1, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 387; + return 0; + } + break; + case 384: + if (val->type == STRING) { + /* CHARACTERS[STRING] */ + encodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 388; + return 0; + } + break; + case 390: + if (val->type == STRING) { + /* CHARACTERS[STRING] */ + encodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 393; + return 0; + } + break; + case 396: + if (val->type == STRING) { + /* CHARACTERS[STRING] */ + encodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 399; + return 0; + } + break; + case 403: + if (val->type == UNSIGNED_INTEGER_32) { + /* CHARACTERS[UNSIGNED_INTEGER_32] */ + encodeUnsignedInteger32(stream, val->uint32); + /* move on */ + state->grammarStack[state->stackIndex] = 475; + return 0; + } + break; + case 477: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 2, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 480; + return 0; + } + break; + case 479: + if (val->type == STRING) { + /* CHARACTERS[STRING] */ + encodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 481; + return 0; + } + break; + case 483: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 3, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 486; + return 0; + } + break; + case 490: + if (val->type == BINARY_HEX) { + /* CHARACTERS[BINARY_HEX] */ + encodeBinary(stream, &val->binary); + /* move on */ + state->grammarStack[state->stackIndex] = 499; + return 0; + } + break; + case 492: + if (val->type == STRING) { + /* CHARACTERS[STRING] */ + encodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 500; + return 0; + } + break; + /* List not supported yet */ + case 498: + if (val->type == LIST) { + /* CHARACTERS[LIST] */ + /* List not supported yet */ + return -1; + /* move on */ + state->grammarStack[state->stackIndex] = 502; + return 0; + } + break; + case 506: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 2, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 508; + return 0; + } + break; + case 512: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 3, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 516; + return 0; + } + break; + case 527: + if (val->type == BINARY_HEX) { + /* CHARACTERS[BINARY_HEX] */ + encodeBinary(stream, &val->binary); + /* move on */ + state->grammarStack[state->stackIndex] = 531; + return 0; + } + break; + case 530: + if (val->type == STRING) { + /* CHARACTERS[STRING] */ + encodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 532; + return 0; + } + break; + case 534: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 2, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 539; + return 0; + } + break; + case 536: + if (val->type == STRING) { + /* CHARACTERS[STRING] */ + /* xsi:type OR xsi:nil */ + encodeNBitUnsignedInteger(stream, 0, 1); + encodeStringValue(stream, &val->string); + /* move on */ + state->grammarStack[state->stackIndex] = 540; + return 0; + } + break; + case 542: + if (val->type == ENUMERATION) { + /* CHARACTERS[ENUMERATION] */ + encodeNBitUnsignedInteger(stream, 3, val->enumeration); + /* move on */ + state->grammarStack[state->stackIndex] = 543; + return 0; + } + break; + + default: + return -1; + } + + return -1; +} + +int exiEncodeAttribute(bitstream_t* stream, exi_state_t* state, + eqname_t* at, exi_value_t* val) { + switch (state->grammarStack[state->stackIndex]) { + + default: + return -1; + } + + return -1; +} + + +#endif + diff --git a/src/codec/EXIEncoder.h b/src/codec/EXIEncoder.h new file mode 100644 index 0000000..da6ce58 --- /dev/null +++ b/src/codec/EXIEncoder.h @@ -0,0 +1,61 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EXI_ENCODER_H +#define EXI_ENCODER_H + +#include +#include +#include + +#include "EXITypes.h" + +int exiInitEncoder(bitstream_t* stream, exi_state_t* state); + +int exiEncodeStartDocument(bitstream_t* stream, exi_state_t* state); + +int exiEncodeEndDocument(bitstream_t* stream, exi_state_t* state); + +int exiEncodeStartElement(bitstream_t* stream, exi_state_t* state, + eqname_t* se); + +int exiEncodeEndElement(bitstream_t* stream, exi_state_t* state, eqname_t* ee); + +int exiEncodeCharacters(bitstream_t* stream, exi_state_t* state, + exi_value_t* val); + +int exiEncodeAttribute(bitstream_t* stream, exi_state_t* state, eqname_t* at, + exi_value_t* val); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/EXIHeader.c b/src/codec/EXIHeader.c new file mode 100644 index 0000000..90857e1 --- /dev/null +++ b/src/codec/EXIHeader.c @@ -0,0 +1,64 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#include +#include + +#include "EXIHeader.h" +#include "BitInputStream.h" +#include "BitOutputStream.h" +#include "BitDecoderChannel.h" +#include "BitEncoderChannel.h" + +#ifndef EXI_HEADER_C +#define EXI_HEADER_C + +int readEXIHeader(bitstream_t* stream) { + uint8_t header; + int errn = readBits(stream, 8, &header); + if (errn < 0) { + return errn; + } + if(header == '$') { + /* we do not support "EXI Cookie" */ + errn = -1; + } else if ( header & 0x20 ) { + /* we do not support "Presence Bit for EXI Options" */ + errn = -2; + } else { + /* Yes, a *simple* header */ + errn = 0; + } + return errn; +} + +int writeEXIHeader(bitstream_t* stream) { + return writeBits(stream, 144, 8); +} + + +#endif + + diff --git a/src/codec/EXIHeader.h b/src/codec/EXIHeader.h new file mode 100644 index 0000000..6a2b1a0 --- /dev/null +++ b/src/codec/EXIHeader.h @@ -0,0 +1,46 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include "EXITypes.h" + +#ifndef EXI_HEADER_H +#define EXI_HEADER_H + +int readEXIHeader(bitstream_t* stream); + +int writeEXIHeader(bitstream_t* stream); + +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/EXITypes.h b/src/codec/EXITypes.h new file mode 100644 index 0000000..49b37af --- /dev/null +++ b/src/codec/EXITypes.h @@ -0,0 +1,195 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#ifndef EXI_TYPES_H +#define EXI_TYPES_H + +#define BITS_IN_BYTE 8 + +#define EXI_ELEMENT_STACK_SIZE 16 + +/* EXI automaton methods prefixes such as "inline" etc. */ +#ifndef EXI_MPFX +#define EXI_MPFX +#endif + +#define FLOAT_EXPONENT_SPECIAL_VALUES -16384 +#define FLOAT_MANTISSA_INFINITY 1 +#define FLOAT_MANTISSA_MINUS_INFINITY -1 +#define FLOAT_MANTISSA_NOT_A_NUMBER 0 + +typedef struct { + /* Integer Array */ + size_t size; /* array size */ + uint8_t* data; /* int data array */ + size_t* pos; /* next position in array */ + /* Current byte buffer & its remaining bit capacity */ + uint8_t buffer; + size_t capacity; +} bitstream_t; + +typedef struct { + /* Bytes Size and array container */ + size_t size; + uint8_t* data; + /* current length (len <= size) */ + size_t len; +} bytes_t; + +/* Universal Character Set (UCS) strings */ +typedef struct { + /* UCS size and UCS character container*/ + size_t size; + uint32_t* codepoints; + /* current length == number of code-points, (len <= size) */ + size_t len; +} string_ucs_t; + +/* ASCII strings */ +typedef struct { + size_t size; + char* ascii; + /* current length == number of characters, (len <= size) */ + size_t len; +} string_ascii_t; + + +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 */ + int32_t exponent; /* base-10 */ +} float_me_t; + + +typedef enum +{ + /* Binary */ + BINARY_BASE64, BINARY_HEX, + /* Boolean */ + BOOLEAN, + /* Decimal */ + DECIMAL, + /* Float */ + FLOAT, DOUBLE, + /* N-Bit Integer */ + NBIT_INTEGER_32, NBIT_INTEGER_64, NBIT_INTEGER_BIG, + /* Unsigned Integer */ + UNSIGNED_INTEGER_16, UNSIGNED_INTEGER_32, UNSIGNED_INTEGER_64, UNSIGNED_INTEGER_BIG, + /* (Signed) Integer */ + INTEGER_16, INTEGER_32, INTEGER_64, INTEGER_BIG, + /* Datetime */ + DATETIME, + /* String */ + STRING, + /* Enumeration */ + ENUMERATION, + /* List */ + LIST +} exi_datatype_t; + + +typedef enum +{ + START_DOCUMENT, + END_DOCUMENT, + START_ELEMENT, + START_ELEMENT_GENERIC, /* not supported yet */ + END_ELEMENT, + CHARACTERS, + CHARACTERS_GENERIC, /* not supported yet */ + ATTRIBUTE, + ATTRIBUTE_GENERIC, /* not supported yet */ + /* error state */ + ERROR +} exi_event_t; + +/* TODO list support */ +typedef struct { + /* List container with memory size */ + size_t size; + uint8_t* data; + /* list item type */ + exi_datatype_t type; + /* number of items */ + size_t len; +} list_t; + + +typedef struct { + unsigned int namespaceURI; + unsigned int localPart; +} eqname_t; + +typedef struct { + /* stack of grammar states and elements */ + size_t grammarStack [EXI_ELEMENT_STACK_SIZE]; + eqname_t elementStack [EXI_ELEMENT_STACK_SIZE]; + size_t stackIndex; + /* event-code */ + uint8_t eventCode; +} exi_state_t; + + +typedef struct { + /* union of base types */ + union { + int boolean; + int8_t int8; + uint8_t uint8; + uint32_t uint32; + int32_t int32; + int64_t int64; + uint8_t enumeration; + }; + /* Bytes, Strings and Lists are not base types */ + bytes_t binary; + string_ucs_t string; + list_t list; + + /* value datatype */ + exi_datatype_t type; +} exi_value_t; + + +/* + * ERROR-Codes + */ +# define EXI_ERROR_OUT_OF_BOUNDS -100 + +# define EXI_ERROR_UNKOWN_EVENT_CODE -110 + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/src/codec/StringTable.c b/src/codec/StringTable.c new file mode 100644 index 0000000..18ee0d5 --- /dev/null +++ b/src/codec/StringTable.c @@ -0,0 +1,113 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifndef STRING_TABLE_C +#define STRING_TABLE_C + +#include +#include +#include +#include + +#include "StringTable.h" +#include "EXITypes.h" +#include "BitInputStream.h" +#include "BitDecoderChannel.h" + +#include "StringTableEntries.h" + +#include "assert.h" + +int exiGetUri(size_t uriID, const char** uri) { + if ( uriID < stringTable.len ) { + *uri = stringTable.uris[uriID]; + } else { + return EXI_ERROR_OUT_OF_BOUNDS; + } + + return 0; +} + +int exiGetUriLength(size_t* uriLength) { + *uriLength = stringTable.len; + return 0; +} + + +int exiGetUriID(const char* uri, size_t* uriID) { + unsigned int i; + for(i=0; i. + */ + +/******************************************************************* + * + * @author Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef STRING_TABLE_H +#define STRING_TABLE_H + +#include "EXITypes.h" + +int exiGetUri(size_t uriID, const char** uri); + +int exiGetUriLength(size_t* uriLength); + +int exiGetUriID(const char* uri, size_t* uriID); + +int exiGetLocalName(size_t uriID, size_t localNameID, const char** localName); + +int exiGetLocalNameLength(size_t uriID, size_t* localNameLength); + +int exiGetLocalNameID(size_t uriID, const char* localName, size_t* localNameID); + +#endif + + +#ifdef __cplusplus +} +#endif + diff --git a/src/codec/StringTableEntries.c b/src/codec/StringTableEntries.c new file mode 100644 index 0000000..a0677a5 --- /dev/null +++ b/src/codec/StringTableEntries.c @@ -0,0 +1,124 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifndef STRING_TABLE_ENTRIES_C +#define STRING_TABLE_ENTRIES_C + +#include "StringTableEntries.h" + + +/* ==================================== */ +/* String Table Population */ + +/* localName entries for URI id = 0 */ +const char * localNames0[] = { + NULL +}; +/* localName entries for URI id = 1 */ +const char * localNames1[] = { + "base", "id", "lang", "space" +}; +/* localName entries for URI id = 2 */ +const char * localNames2[] = { + "nil", "type" +}; +/* localName entries for URI id = 3 */ +const char * localNames3[] = { + "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 id = 4 */ +const char * localNames4[] = { + "ChargingProfile", "ContractID", "EAmount", "EVSEID", "EVSEIMax", + "EVSEMaxPhases", "EVSEMaxPower", "EVSEStatus", "EVSEVoltage", "EnergyProvider", + "EoC", "LineLockReq", "LineLockReqType", "LineLockRes", "LineLockResType", + "MeterInfo", "MeteringAuthPubKey", "MeteringReceiptReq", "MeteringReceiptReqType", "MeteringReceiptRes", + "MeteringReceiptResType", "MeteringStatusReq", "MeteringStatusReqType", "MeteringStatusRes", "MeteringStatusResType", + "PCurrent", "PEVID", "PEVMaxPhases", "PEVMaxPower", "PEVMaxVoltage", + "PEVMinVoltage", "PEVPubKey", "PEVStatus", "PaymentDetailsReq", "PaymentDetailsReqType", + "PaymentDetailsRes", "PaymentDetailsResType", "PowerDeliveryReq", "PowerDeliveryReqType", "PowerDeliveryRes", + "PowerDeliveryResType", "PowerDiscoveryReq", "PowerDiscoveryReqType", "PowerDiscoveryRes", "PowerDiscoveryResType", + "ReqLockStatus", "ReqSwitchStatus", "ResponseCode", "ServiceDiscoveryReq", "ServiceDiscoveryReqType", + "ServiceDiscoveryRes", "ServiceDiscoveryResType", "ServiceList", "ServicePaymentSelectionReq", "ServicePaymentSelectionReqType", + "ServicePaymentSelectionRes", "ServicePaymentSelectionResType", "ServiceScope", "ServiceType", "SessionSetupReq", + "SessionSetupReqType", "SessionSetupRes", "SessionSetupResType", "TCurrent", "Tariff", + "TariffTable" +}; +/* localName entries for URI id = 5 */ +const char * localNames5[] = { + "ChargerStandby", "ChargingProfileEntryMaxPower", "ChargingProfileEntryStart", "ChargingProfileType", "ConnectorLocked", + "Currency", "EPrice", "EVSEStandby", "EVSEStatusType", "Event", + "EventList", "EventListType", "FatalError", "FaultCode", "FaultMsg", + "FloatingValueType", "MeterID", "MeterInfoType", "MeterPubKey", "MeterReading", + "MeterStatus", "Multiplier", "NotificationType", "PEVStatusType", "PaymentOption", + "PowerSwitchClosed", "ProtocolVersion", "RCD", "Service", "ServiceDescriptionType", + "ServiceDetails", "ServiceID", "ServiceListType", "ServiceName", "ServiceScope", + "ServiceSessionID", "ServiceType", "SessionID", "SessionInformationType", "ShutDownTime", + "SigMeterReading", "TMeter", "Tariff", "TariffDescrType", "TariffDescription", + "TariffEntries", "TariffEntriesType", "TariffEntry", "TariffEntryType", "TariffID", + "TariffPMax", "TariffStart", "TariffTableType", "Unit", "Value", + "contractIDType", "currencyType", "energyProviderType", "eventEntryType", "evseIDType", + "fatalErrorType", "faultCodeType", "lockStatusType", "maxPhasesType", "meterIDType", + "meterStatusType", "paymentOptionListType", "paymentOptionType", "pevIDType", "protocolVersionType", + "pubKeyType", "rcdType", "responseCode_LineLockType", "responseCode_MeteringReceiptType", "responseCode_MeteringStatusType", + "responseCode_PaymentDetailsType", "responseCode_PowerDeliveryType", "responseCode_PowerDiscoveryType", "responseCode_ServiceDiscoveryType", "responseCode_ServicePaymentSelectionType", + "responseCode_SessionSetupType", "serviceDetailsType", "serviceIDType", "serviceNameType", "serviceScopeType", + "serviceTypeType", "sessionIDType", "standbyType", "switchStatusType", "tariffDescriptionType", + "tariffIDType", "tariffStartType", "timeType", "unitMultiplierType", "unitSymbolType" + +}; +/* localName entries for URI id = 6 */ +const char * localNames6[] = { + "Body", "BodyBaseType", "BodyElement", "BodyType", "Header", + "HeaderType", "Notification", "Security", "SessionInformation", "V2G_Message" + +}; +struct exiPartition localNamePartitions[7] = { + { 0, localNames0 }, + { 4, localNames1 }, + { 2, localNames2 }, + { 46, localNames3 }, + { 66, localNames4 }, + { 95, localNames5 }, + { 10, localNames6 } +}; +const char * uris[] = { + "", "http://www.w3.org/XML/1998/namespace", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/2001/XMLSchema", "urn:iso:15118:2:2010:MsgBody", "urn:iso:15118:2:2010:MsgDataTypes", "urn:iso:15118:2:2010:MsgDef" +}; +struct exiStringTable stringTable = { 7, uris, localNamePartitions }; + + + + +#endif + diff --git a/src/codec/StringTableEntries.h b/src/codec/StringTableEntries.h new file mode 100644 index 0000000..761fee2 --- /dev/null +++ b/src/codec/StringTableEntries.h @@ -0,0 +1,60 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifndef STRING_TABLE_ENTRIES_H +#define STRING_TABLE_ENTRIES_H + +#include +#include +#include +#include + +/* ==================================== */ +/* String Table Structures */ + +struct exiPartition { + /* length of array */ + size_t len; + /* array of string entries */ + const char** entries; +}; + +struct exiStringTable { + /* length of both arrays (uris & localNames) */ + size_t len; + /* URI entries*/ + const char** uris; + /* localName entries divided by URI */ + struct exiPartition * localNames; +}; + + +/* ==================================== */ +/* String Table Population */ + +extern struct exiStringTable stringTable; + +#endif + diff --git a/src/codec/UCSString.c b/src/codec/UCSString.c new file mode 100644 index 0000000..d37b8a8 --- /dev/null +++ b/src/codec/UCSString.c @@ -0,0 +1,64 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#include +#include +#include +#include + +#include "BitDecoderChannel.h" +#include "BitInputStream.h" +#include "EXITypes.h" + +#ifndef UCS_STRING_C +#define UCS_STRING_C + +int toUCSString(char* chars, string_ucs_t* s) { + unsigned int i; + s->len = strlen(chars); + + if (s->len <= s->size) { + for(i=0; ilen; i++) { + s->codepoints[i] = chars[i]; + } + return 0; + } else { + return -1; + } +} + +/* Note: fails if string contains non ASCII characters */ +int toASCIIString(string_ucs_t* string, char* outASCII) { + unsigned int i; + for(i=0; ilen; i++) { + outASCII[i] = (char)string->codepoints[i]; + } + outASCII[string->len] = '\0'; + + return 0; +} + +#endif + diff --git a/src/codec/UCSString.h b/src/codec/UCSString.h new file mode 100644 index 0000000..0dbcc8f --- /dev/null +++ b/src/codec/UCSString.h @@ -0,0 +1,48 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + ********************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "EXITypes.h" + +// TODO utf8/cstring//wchar_t/char16_t/char32_t methods + + +#ifndef UCS_STRING_H +#define UCS_STRING_H + +int toUCSString(char* chars, string_ucs_t* s); + +// Note: fails if string contains non ASCII characters +int toASCIIString(string_ucs_t* string, char* outASCII); + +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/test/main_codec.c b/src/test/main_codec.c new file mode 100644 index 0000000..f710ff0 --- /dev/null +++ b/src/test/main_codec.c @@ -0,0 +1,218 @@ +/* + * 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 Daniel.Peintner.EXT@siemens.com + * @version 0.1 + * @contact Joerg.Heuer@siemens.com + * + *

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

+ * + *

e.g., data/test/sessionSetupReq.xml_SCHEMA.exi out/test/sessionSetupReq.xml_SCHEMA.exi

+ ********************************************************************/ + +#include +#include + +#include "EXIDecoder.h" +#include "StringTable.h" +#include "EXIEncoder.h" +#include "EXITypes.h" +#include "Bitstream.h" + + +int main(int argc, char *argv[]) { + + int errn = 0; + unsigned int i; + + bitstream_t iStream, oStream; + size_t posDecode, posEncode; + + // EXI set-up + exi_state_t stateDecode; + exi_state_t stateEncode; + exi_event_t event; + eqname_t eqn; + exi_value_t val; + + // BINARY memory allocation + uint8_t data[10]; + bytes_t bytes = { 10, data }; + + // STRING memory allocation + uint32_t codepoints[50]; + string_ucs_t string = { 50, codepoints }; + + const char * localName; + const char * namespaceURI; + + int noEndOfDocument = 1; /* true */ + + if (argc != 3) { + printf("Usage: %s exiInput exiOutput\n", argv[0]); + return -1; + } + + /* parse EXI stream to internal byte structures */ + toBitstream(argv[1], &iStream); + + // input + posDecode = 0; + iStream.pos = &posDecode; + iStream.buffer = 0; + iStream.capacity = 0; + + // output + posEncode = 0; + oStream.data = malloc(sizeof(uint8_t)*iStream.size); + oStream.size = iStream.size; + oStream.pos = &posEncode; + oStream.buffer = 0; + oStream.capacity = 8; + + val.binary = bytes; + val.string = string; + + /* init decoder (read header, set initial state) */ + exiInitDecoder(&iStream, &stateDecode); + + /* init encoder (write header, set initial state) */ + exiInitEncoder(&oStream, &stateEncode); + + printf("[DECODE] >>> EXI >>> [ENCODE] \n"); + + do { + if (errn < 0) { + printf("[Encode-ERROR] %d \n", errno); + return errn; + } + + errn = exiDecodeNextEvent(&iStream, &stateDecode, &event); + if (errn < 0) { + printf("[Decode-ERROR] %d \n", errno); + return errn; + } + + switch (event) { + case START_DOCUMENT: + // decode + errn = exiDecodeStartDocument(&iStream, &stateDecode); + if (errn < 0) { + printf("[Decode-ERROR] %d \n", errno); + return errn; + } + printf(">> START_DOCUMENT \n"); + // encode + errn = exiEncodeStartDocument(&oStream, &stateEncode); + break; + case END_DOCUMENT: + // decode + errn = exiDecodeEndDocument(&iStream, &stateDecode); + if (errn < 0) { + printf("[Decode-ERROR] %d \n", errno); + return errn; + } + printf(">> END_DOCUMENT \n"); + // encode + errn = exiEncodeEndDocument(&oStream, &stateEncode); + /* signalize end of document */ + noEndOfDocument = 0; /* false */ + break; + case START_ELEMENT: + // decode + errn = exiDecodeStartElement(&iStream, &stateDecode, &eqn); + if (errn < 0) { + printf("[Decode-ERROR] %d \n", errno); + return errn; + } + exiGetLocalName(eqn.namespaceURI, eqn.localPart, &localName); + exiGetUri(eqn.namespaceURI, &namespaceURI); + printf(">> SE {%s}%s \n", namespaceURI, localName); + // encode + errn = exiEncodeStartElement(&oStream, &stateEncode, &eqn); + break; + case END_ELEMENT: + // decode + errn = exiDecodeEndElement(&iStream, &stateDecode, &eqn); + if (errn < 0) { + printf("[Decode-ERROR] %d \n", errno); + return errn; + } + exiGetLocalName(eqn.namespaceURI, eqn.localPart, &localName); + exiGetUri(eqn.namespaceURI, &namespaceURI); + printf("<< EE {%s}%s \n", namespaceURI, localName); + // encode + errn = exiEncodeEndElement(&oStream, &stateEncode, &eqn); + break; + case CHARACTERS: + // decode + errn = exiDecodeCharacters(&iStream, &stateDecode, &val); + if (errn < 0) { + printf("[Decode-ERROR] %d \n", errno); + return errn; + } + if (val.type == INTEGER_BIG) { + printf(" CH int64 : %lld \n", val.int64); + } else if (val.type == BINARY_BASE64 || val.type == BINARY_HEX) { + printf(" CH Binary (len == %d) : ", val.binary.len); + for(i=0; i