Browse Source

* adds support for DIN
* get ready for next release


git-svn-id: https://svn.code.sf.net/p/openv2g/code/trunk@89 d9f2db14-54d0-4bde-b00c-16405c910529

daniel_peintner 11 years ago
parent
commit
9c2b711d55
48 changed files with 6524 additions and 1420 deletions
  1. 5 5
      src/appHandshake/appHandEXIDatatypes.c
  2. 11 11
      src/appHandshake/appHandEXIDatatypes.h
  3. 162 161
      src/appHandshake/appHandEXIDatatypesDecoder.c
  4. 1 1
      src/appHandshake/appHandEXIDatatypesDecoder.h
  5. 125 125
      src/appHandshake/appHandEXIDatatypesEncoder.c
  6. 1 1
      src/appHandshake/appHandEXIDatatypesEncoder.h
  7. 5 5
      src/codec/AbstractDecoderChannel.c
  8. 1 1
      src/codec/AbstractEncoderChannel.c
  9. 1 1
      src/codec/BitDecoderChannel.c
  10. 1 1
      src/codec/BitEncoderChannel.c
  11. 1 1
      src/codec/BitInputStream.c
  12. 1 1
      src/codec/BitInputStream.h
  13. 1 1
      src/codec/BitOutputStream.c
  14. 1 1
      src/codec/BitOutputStream.h
  15. 1 1
      src/codec/ByteDecoderChannel.c
  16. 1 1
      src/codec/ByteEncoderChannel.c
  17. 1 1
      src/codec/ByteStream.c
  18. 1 1
      src/codec/ByteStream.h
  19. 1 1
      src/codec/DecoderChannel.h
  20. 1 1
      src/codec/EXIConfig.h
  21. 30 1
      src/codec/EXIHeaderDecoder.c
  22. 1 1
      src/codec/EXIHeaderDecoder.h
  23. 30 1
      src/codec/EXIHeaderEncoder.c
  24. 1 1
      src/codec/EXIHeaderEncoder.h
  25. 1 1
      src/codec/EXIOptions.h
  26. 1 1
      src/codec/EXITypes.h
  27. 1 1
      src/codec/EncoderChannel.h
  28. 1 1
      src/codec/ErrorCodes.h
  29. 1 1
      src/codec/MethodsBag.c
  30. 1 1
      src/codec/MethodsBag.h
  31. 292 292
      src/codec/v2gEXIDatatypes.c
  32. 514 365
      src/codec/v2gEXIDatatypes.h
  33. 270 241
      src/codec/v2gEXIDatatypesDecoder.c
  34. 1 1
      src/codec/v2gEXIDatatypesDecoder.h
  35. 327 169
      src/codec/v2gEXIDatatypesEncoder.c
  36. 1 1
      src/codec/v2gEXIDatatypesEncoder.h
  37. 613 0
      src/din/dinEXIDatatypes.c
  38. 2181 0
      src/din/dinEXIDatatypes.h
  39. 1074 0
      src/din/dinEXIDatatypesDecoder.c
  40. 62 0
      src/din/dinEXIDatatypesDecoder.h
  41. 717 0
      src/din/dinEXIDatatypesEncoder.c
  42. 63 0
      src/din/dinEXIDatatypesEncoder.h
  43. 1 1
      src/test/main.c
  44. 1 1
      src/test/main.h
  45. 2 2
      src/test/main_databinder.c
  46. 10 11
      src/test/main_example.c
  47. 3 3
      src/transport/v2gtp.c
  48. 1 1
      src/transport/v2gtp.h

+ 5 - 5
src/appHandshake/appHandEXIDatatypes.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>
@@ -45,6 +45,10 @@ void init_appHandEXIDocument(struct appHandEXIDocument* exiDoc) {
 	exiDoc->supportedAppProtocolRes_isUsed = 0u;
 }
 
+void init_appHandAnonType_supportedAppProtocolRes(struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) {
+	appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed = 0u;
+}
+
 void init_appHandAppProtocolType(struct appHandAppProtocolType* appHandAppProtocolType) {
 }
 
@@ -52,10 +56,6 @@ void init_appHandAnonType_supportedAppProtocolReq(struct appHandAnonType_support
 	appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen = 0u;
 }
 
-void init_appHandAnonType_supportedAppProtocolRes(struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) {
-	appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed = 0u;
-}
-
 
 
 

+ 11 - 11
src/appHandshake/appHandEXIDatatypes.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>
@@ -74,15 +74,6 @@ struct appHandAppProtocolType {
 	uint8_t Priority ;
 };
 
-/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ResponseCode,SchemaID{0-1})',  derivedBy='RESTRICTION'.  */
-struct appHandAnonType_supportedAppProtocolRes {
-	/* element: ResponseCode, urn:iso:15118:2:2010:AppProtocol,responseCodeType */
-	appHandresponseCodeType ResponseCode ;
-	/* element: SchemaID, urn:iso:15118:2:2010:AppProtocol,idType */
-	uint8_t SchemaID ;
-	unsigned int SchemaID_isUsed:1;
-};
-
 /* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(AppProtocol{1-20})',  derivedBy='RESTRICTION'.  */
 #define appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE 5
 struct appHandAnonType_supportedAppProtocolReq {
@@ -93,6 +84,15 @@ struct appHandAnonType_supportedAppProtocolReq {
 	} AppProtocol;
 };
 
+/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ResponseCode,SchemaID{0-1})',  derivedBy='RESTRICTION'.  */
+struct appHandAnonType_supportedAppProtocolRes {
+	/* element: ResponseCode, urn:iso:15118:2:2010:AppProtocol,responseCodeType */
+	appHandresponseCodeType ResponseCode ;
+	/* element: SchemaID, urn:iso:15118:2:2010:AppProtocol,idType */
+	uint8_t SchemaID ;
+	unsigned int SchemaID_isUsed:1;
+};
+
 
 
 
@@ -118,9 +118,9 @@ struct appHandEXIDocument {
 /* Initialization methods for structs */
 
 void init_appHandEXIDocument(struct appHandEXIDocument* exiDoc);
+void init_appHandAnonType_supportedAppProtocolRes(struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes);
 void init_appHandAppProtocolType(struct appHandAppProtocolType* appHandAppProtocolType);
 void init_appHandAnonType_supportedAppProtocolReq(struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq);
-void init_appHandAnonType_supportedAppProtocolRes(struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes);
 
 
 #ifdef __cplusplus

+ 162 - 161
src/appHandshake/appHandEXIDatatypesDecoder.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>
@@ -48,23 +48,129 @@ static uint32_t uint32;
 
 
 /* Forward Declarations */
+static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes);
 static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType);
 static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq);
-static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes);
 
 /* Deviant data decoding (skip functions) */
 
 
-
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)',  derivedBy='RESTRICTION'.  */
-static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType) {
+
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ResponseCode,SchemaID{0-1})',  derivedBy='RESTRICTION'.  */
+static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) {
 	int grammarID = 0;
 	int done = 0;
 	
-	init_appHandAppProtocolType(appHandAppProtocolType);
+	init_appHandAnonType_supportedAppProtocolRes(appHandAnonType_supportedAppProtocolRes);
 	
 	while(!done) {
 		switch(grammarID) {
 		case 0:
+			/* FirstStartTag[START_ELEMENT(ResponseCode)] */
+			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
+			if (errn == 0) {
+				switch(eventCode) {
+				case 0:
+					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
+					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
+					if(errn == 0) {
+						if(eventCode == 0) {
+							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
+							appHandAnonType_supportedAppProtocolRes->ResponseCode = (appHandresponseCodeType) uint32;
+						} else {
+							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
+							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
+						}
+					}
+					if(errn == 0) {
+						/* valid EE for simple element START_ELEMENT(ResponseCode) ? */
+						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
+						if(eventCode == 0) {
+						grammarID = 1;
+						} else {
+							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
+						}
+					}
+					break;
+				default:
+					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
+					break;
+				}
+			}
+			break;
+		case 1:
+			/* Element[START_ELEMENT(SchemaID), END_ELEMENT] */
+			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
+			if (errn == 0) {
+				switch(eventCode) {
+				case 0:
+					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
+					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
+					if(errn == 0) {
+						if(eventCode == 0) {
+							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
+							appHandAnonType_supportedAppProtocolRes->SchemaID = (uint8_t)(uint32 + 0);
+							appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed = 1u;
+						} else {
+							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
+							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
+						}
+					}
+					if(errn == 0) {
+						/* valid EE for simple element START_ELEMENT(SchemaID) ? */
+						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
+						if(eventCode == 0) {
+						grammarID = 2;
+						} else {
+							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
+						}
+					}
+					break;
+				case 1:
+					done = 1;
+					grammarID = 3;
+					break;
+				default:
+					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
+					break;
+				}
+			}
+			break;
+		case 2:
+			/* Element[END_ELEMENT] */
+			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
+			if (errn == 0) {
+				switch(eventCode) {
+				case 0:
+					done = 1;
+					grammarID = 3;
+					break;
+				default:
+					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
+					break;
+				}
+			}
+			break;
+		default:
+			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
+			break;
+		}
+		if(errn) {
+			done = 1;
+		}
+	}
+	return errn;
+}
+
+/* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)',  derivedBy='RESTRICTION'.  */
+static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType) {
+	int grammarID = 4;
+	int done = 0;
+	
+	init_appHandAppProtocolType(appHandAppProtocolType);
+	
+	while(!done) {
+		switch(grammarID) {
+		case 4:
 			/* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */
 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 			if (errn == 0) {
@@ -96,7 +202,7 @@ static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 						/* valid EE for simple element START_ELEMENT(ProtocolNamespace) ? */
 						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 						if(eventCode == 0) {
-						grammarID = 1;
+						grammarID = 5;
 						} else {
 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
 						}
@@ -108,7 +214,7 @@ static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 				}
 			}
 			break;
-		case 1:
+		case 5:
 			/* Element[START_ELEMENT(VersionNumberMajor)] */
 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 			if (errn == 0) {
@@ -128,7 +234,7 @@ static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 						/* valid EE for simple element START_ELEMENT(VersionNumberMajor) ? */
 						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 						if(eventCode == 0) {
-						grammarID = 2;
+						grammarID = 6;
 						} else {
 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
 						}
@@ -140,7 +246,7 @@ static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 				}
 			}
 			break;
-		case 2:
+		case 6:
 			/* Element[START_ELEMENT(VersionNumberMinor)] */
 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 			if (errn == 0) {
@@ -160,7 +266,7 @@ static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 						/* valid EE for simple element START_ELEMENT(VersionNumberMinor) ? */
 						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 						if(eventCode == 0) {
-						grammarID = 3;
+						grammarID = 7;
 						} else {
 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
 						}
@@ -172,7 +278,7 @@ static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 				}
 			}
 			break;
-		case 3:
+		case 7:
 			/* Element[START_ELEMENT(SchemaID)] */
 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 			if (errn == 0) {
@@ -193,7 +299,7 @@ static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 						/* valid EE for simple element START_ELEMENT(SchemaID) ? */
 						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 						if(eventCode == 0) {
-						grammarID = 4;
+						grammarID = 8;
 						} else {
 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
 						}
@@ -205,7 +311,7 @@ static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 				}
 			}
 			break;
-		case 4:
+		case 8:
 			/* Element[START_ELEMENT(Priority)] */
 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 			if (errn == 0) {
@@ -226,7 +332,7 @@ static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 						/* valid EE for simple element START_ELEMENT(Priority) ? */
 						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 						if(eventCode == 0) {
-						grammarID = 5;
+						grammarID = 2;
 						} else {
 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
 						}
@@ -238,14 +344,14 @@ static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 				}
 			}
 			break;
-		case 5:
+		case 2:
 			/* Element[END_ELEMENT] */
 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 			if (errn == 0) {
 				switch(eventCode) {
 				case 0:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -266,58 +372,16 @@ static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 
 /* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(AppProtocol{1-20})',  derivedBy='RESTRICTION'.  */
 static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) {
-	int grammarID = 7;
+	int grammarID = 9;
 	int done = 0;
 	
 	init_appHandAnonType_supportedAppProtocolReq(appHandAnonType_supportedAppProtocolReq);
 	
 	while(!done) {
 		switch(grammarID) {
-		case 7:
+		case 9:
 			/* FirstStartTag[START_ELEMENT(AppProtocol)] */
 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
-			if (errn == 0) {
-				switch(eventCode) {
-				case 0:
-					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
-						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
-					} else { 
-						errn = EXI_ERROR_OUT_OF_BOUNDS;
-					}
-					grammarID = 8;
-					break;
-				default:
-					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
-					break;
-				}
-			}
-			break;
-		case 8:
-			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
-			if (errn == 0) {
-				switch(eventCode) {
-				case 0:
-					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
-						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
-					} else { 
-						errn = EXI_ERROR_OUT_OF_BOUNDS;
-					}
-					grammarID = 9;
-					break;
-				case 1:
-					done = 1;
-					grammarID = 6;
-					break;
-				default:
-					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
-					break;
-				}
-			}
-			break;
-		case 9:
-			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
 			if (errn == 0) {
 				switch(eventCode) {
 				case 0:
@@ -328,10 +392,6 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					}
 					grammarID = 10;
 					break;
-				case 1:
-					done = 1;
-					grammarID = 6;
-					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
 					break;
@@ -353,7 +413,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -376,7 +436,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -399,7 +459,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -422,7 +482,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -445,7 +505,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -468,7 +528,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -491,7 +551,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -514,7 +574,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -537,7 +597,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -560,7 +620,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -583,7 +643,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -606,7 +666,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -629,7 +689,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -652,7 +712,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -675,7 +735,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -698,7 +758,7 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -717,11 +777,11 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 					} else { 
 						errn = EXI_ERROR_OUT_OF_BOUNDS;
 					}
-					grammarID = 5;
+					grammarID = 27;
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -729,66 +789,22 @@ static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				}
 			}
 			break;
-		case 5:
-			/* Element[END_ELEMENT] */
-			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
-			if (errn == 0) {
-				switch(eventCode) {
-				case 0:
-					done = 1;
-					grammarID = 6;
-					break;
-				default:
-					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
-					break;
-				}
-			}
-			break;
-		default:
-			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
-			break;
-		}
-		if(errn) {
-			done = 1;
-		}
-	}
-	return errn;
-}
-
-/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ResponseCode,SchemaID{0-1})',  derivedBy='RESTRICTION'.  */
-static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) {
-	int grammarID = 27;
-	int done = 0;
-	
-	init_appHandAnonType_supportedAppProtocolRes(appHandAnonType_supportedAppProtocolRes);
-	
-	while(!done) {
-		switch(grammarID) {
 		case 27:
-			/* FirstStartTag[START_ELEMENT(ResponseCode)] */
-			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
+			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
 			if (errn == 0) {
 				switch(eventCode) {
 				case 0:
-					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
-					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
-					if(errn == 0) {
-						if(eventCode == 0) {
-							errn = decodeNBitUnsignedInteger(stream, 2, &appHandAnonType_supportedAppProtocolRes->ResponseCode);
-						} else {
-							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
-							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
-						}
-					}
-					if(errn == 0) {
-						/* valid EE for simple element START_ELEMENT(ResponseCode) ? */
-						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
-						if(eventCode == 0) {
-						grammarID = 28;
-						} else {
-							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
-						}
+					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
+						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
+					} else { 
+						errn = EXI_ERROR_OUT_OF_BOUNDS;
 					}
+					grammarID = 28;
+					break;
+				case 1:
+					done = 1;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -797,36 +813,21 @@ static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, s
 			}
 			break;
 		case 28:
-			/* Element[START_ELEMENT(SchemaID), END_ELEMENT] */
+			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
 			if (errn == 0) {
 				switch(eventCode) {
 				case 0:
-					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
-					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
-					if(errn == 0) {
-						if(eventCode == 0) {
-							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
-							appHandAnonType_supportedAppProtocolRes->SchemaID = (uint8_t)(uint32 + 0);
-							appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed = 1u;
-						} else {
-							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
-							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
-						}
-					}
-					if(errn == 0) {
-						/* valid EE for simple element START_ELEMENT(SchemaID) ? */
-						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
-						if(eventCode == 0) {
-						grammarID = 5;
-						} else {
-							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
-						}
+					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) {
+						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]);
+					} else { 
+						errn = EXI_ERROR_OUT_OF_BOUNDS;
 					}
+					grammarID = 2;
 					break;
 				case 1:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
@@ -834,14 +835,14 @@ static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, s
 				}
 			}
 			break;
-		case 5:
+		case 2:
 			/* Element[END_ELEMENT] */
 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
 			if (errn == 0) {
 				switch(eventCode) {
 				case 0:
 					done = 1;
-					grammarID = 6;
+					grammarID = 3;
 					break;
 				default:
 					errn = EXI_ERROR_UNKOWN_EVENT_CODE;

+ 1 - 1
src/appHandshake/appHandEXIDatatypesDecoder.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 125 - 125
src/appHandshake/appHandEXIDatatypesEncoder.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>
@@ -44,13 +44,13 @@
 static int errn;
 
 /* Forward Declarations */
+static int encode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes);
 static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType);
 static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq);
-static int encode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes);
 
 
-
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)',  derivedBy='RESTRICTION'.  */
-static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType) {
+
/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ResponseCode,SchemaID{0-1})',  derivedBy='RESTRICTION'.  */
+static int encode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) {
 	int grammarID = 0;
 	int done = 0;
 	
@@ -58,6 +58,79 @@ static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 	while(!done) {
 		switch(grammarID) {
 		case 0:
+			/* FirstStartTag[START_ELEMENT(ResponseCode)] */
+			if ( 1 == 1 ) {
+				errn = encodeNBitUnsignedInteger(stream, 1, 0);
+				if(errn == 0) {
+					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
+					errn = encodeNBitUnsignedInteger(stream, 1, 0);
+					if(errn == 0) {
+						errn = encodeNBitUnsignedInteger(stream, 2, appHandAnonType_supportedAppProtocolRes->ResponseCode);
+						/* valid EE */
+						errn = encodeNBitUnsignedInteger(stream, 1, 0);
+					}
+				}
+				grammarID = 1;
+			} else {
+				errn = EXI_ERROR_UNKOWN_EVENT;
+			}
+			break;
+		case 1:
+			/* Element[START_ELEMENT(SchemaID), END_ELEMENT] */
+			if ( appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed == 1u ) {
+				errn = encodeNBitUnsignedInteger(stream, 2, 0);
+				if(errn == 0) {
+					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
+					errn = encodeNBitUnsignedInteger(stream, 1, 0);
+					if(errn == 0) {
+						errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(appHandAnonType_supportedAppProtocolRes->SchemaID - 0));
+						/* valid EE */
+						errn = encodeNBitUnsignedInteger(stream, 1, 0);
+					}
+				}
+				grammarID = 2;
+			} else 			if (1==1) {
+				errn = encodeNBitUnsignedInteger(stream, 2, 1);
+				if(errn == 0) {
+					done = 1;
+				}
+				grammarID = 3;
+			} else {
+				errn = EXI_ERROR_UNKOWN_EVENT;
+			}
+			break;
+		case 2:
+			/* Element[END_ELEMENT] */
+			if (1==1) {
+				errn = encodeNBitUnsignedInteger(stream, 1, 0);
+				if(errn == 0) {
+					done = 1;
+				}
+				grammarID = 3;
+			} else {
+				errn = EXI_ERROR_UNKOWN_EVENT;
+			}
+			break;
+		default:
+			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
+			break;
+		}
+		if(errn) {
+			done = 1;
+		}
+	}
+	return errn;
+}
+
+/* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)',  derivedBy='RESTRICTION'.  */
+static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType) {
+	int grammarID = 4;
+	int done = 0;
+	
+	
+	while(!done) {
+		switch(grammarID) {
+		case 4:
 			/* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */
 			if ( 1 == 1 ) {
 				errn = encodeNBitUnsignedInteger(stream, 1, 0);
@@ -74,12 +147,12 @@ static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 						errn = encodeNBitUnsignedInteger(stream, 1, 0);
 					}
 				}
-				grammarID = 1;
+				grammarID = 5;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
 			break;
-		case 1:
+		case 5:
 			/* Element[START_ELEMENT(VersionNumberMajor)] */
 			if ( 1 == 1 ) {
 				errn = encodeNBitUnsignedInteger(stream, 1, 0);
@@ -92,12 +165,12 @@ static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 						errn = encodeNBitUnsignedInteger(stream, 1, 0);
 					}
 				}
-				grammarID = 2;
+				grammarID = 6;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
 			break;
-		case 2:
+		case 6:
 			/* Element[START_ELEMENT(VersionNumberMinor)] */
 			if ( 1 == 1 ) {
 				errn = encodeNBitUnsignedInteger(stream, 1, 0);
@@ -110,12 +183,12 @@ static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 						errn = encodeNBitUnsignedInteger(stream, 1, 0);
 					}
 				}
-				grammarID = 3;
+				grammarID = 7;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
 			break;
-		case 3:
+		case 7:
 			/* Element[START_ELEMENT(SchemaID)] */
 			if ( 1 == 1 ) {
 				errn = encodeNBitUnsignedInteger(stream, 1, 0);
@@ -128,12 +201,12 @@ static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 						errn = encodeNBitUnsignedInteger(stream, 1, 0);
 					}
 				}
-				grammarID = 4;
+				grammarID = 8;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
 			break;
-		case 4:
+		case 8:
 			/* Element[START_ELEMENT(Priority)] */
 			if ( 1 == 1 ) {
 				errn = encodeNBitUnsignedInteger(stream, 1, 0);
@@ -146,19 +219,19 @@ static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 						errn = encodeNBitUnsignedInteger(stream, 1, 0);
 					}
 				}
-				grammarID = 5;
+				grammarID = 2;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
 			break;
-		case 5:
+		case 2:
 			/* Element[END_ELEMENT] */
 			if (1==1) {
 				errn = encodeNBitUnsignedInteger(stream, 1, 0);
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -176,57 +249,21 @@ static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppP
 
 /* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(AppProtocol{1-20})',  derivedBy='RESTRICTION'.  */
 static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) {
-	int grammarID = 7;
+	int grammarID = 9;
 	int done = 0;
 	
 	unsigned int appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex = 0;
 	
 	while(!done) {
 		switch(grammarID) {
-		case 7:
+		case 9:
 			/* FirstStartTag[START_ELEMENT(AppProtocol)] */
 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
 				errn = encodeNBitUnsignedInteger(stream, 1, 0);
 				if(errn == 0) {
 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
 				}
-				grammarID = 8;
-			} else {
-				errn = EXI_ERROR_UNKOWN_EVENT;
-			}
-			break;
-		case 8:
-			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
-				errn = encodeNBitUnsignedInteger(stream, 2, 0);
-				if(errn == 0) {
-					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
-				}
-				grammarID = 9;
-			} else 			if (1==1) {
-				errn = encodeNBitUnsignedInteger(stream, 2, 1);
-				if(errn == 0) {
-					done = 1;
-				}
-				grammarID = 6;
-			} else {
-				errn = EXI_ERROR_UNKOWN_EVENT;
-			}
-			break;
-		case 9:
-			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
-				errn = encodeNBitUnsignedInteger(stream, 2, 0);
-				if(errn == 0) {
-					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
-				}
 				grammarID = 10;
-			} else 			if (1==1) {
-				errn = encodeNBitUnsignedInteger(stream, 2, 1);
-				if(errn == 0) {
-					done = 1;
-				}
-				grammarID = 6;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -244,7 +281,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -262,7 +299,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -280,7 +317,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -298,7 +335,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -316,7 +353,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -334,7 +371,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -352,7 +389,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -370,7 +407,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -388,7 +425,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -406,7 +443,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -424,7 +461,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -442,7 +479,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -460,7 +497,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -478,7 +515,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -496,7 +533,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -514,7 +551,7 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
@@ -526,98 +563,61 @@ static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, s
 				if(errn == 0) {
 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
 				}
-				grammarID = 5;
+				grammarID = 27;
 			} else 			if (1==1) {
 				errn = encodeNBitUnsignedInteger(stream, 2, 1);
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
-			} else {
-				errn = EXI_ERROR_UNKOWN_EVENT;
-			}
-			break;
-		case 5:
-			/* Element[END_ELEMENT] */
-			if (1==1) {
-				errn = encodeNBitUnsignedInteger(stream, 1, 0);
-				if(errn == 0) {
-					done = 1;
-				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
 			break;
-		default:
-			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
-			break;
-		}
-		if(errn) {
-			done = 1;
-		}
-	}
-	return errn;
-}
-
-/* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ResponseCode,SchemaID{0-1})',  derivedBy='RESTRICTION'.  */
-static int encode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) {
-	int grammarID = 27;
-	int done = 0;
-	
-	
-	while(!done) {
-		switch(grammarID) {
 		case 27:
-			/* FirstStartTag[START_ELEMENT(ResponseCode)] */
-			if ( 1 == 1 ) {
-				errn = encodeNBitUnsignedInteger(stream, 1, 0);
+			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
+				errn = encodeNBitUnsignedInteger(stream, 2, 0);
 				if(errn == 0) {
-					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
-					errn = encodeNBitUnsignedInteger(stream, 1, 0);
-					if(errn == 0) {
-						errn = encodeNBitUnsignedInteger(stream, 2, appHandAnonType_supportedAppProtocolRes->ResponseCode);
-						/* valid EE */
-						errn = encodeNBitUnsignedInteger(stream, 1, 0);
-					}
+					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
 				}
 				grammarID = 28;
+			} else 			if (1==1) {
+				errn = encodeNBitUnsignedInteger(stream, 2, 1);
+				if(errn == 0) {
+					done = 1;
+				}
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
 			break;
 		case 28:
-			/* Element[START_ELEMENT(SchemaID), END_ELEMENT] */
-			if ( appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed == 1u ) {
+			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) {
 				errn = encodeNBitUnsignedInteger(stream, 2, 0);
 				if(errn == 0) {
-					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
-					errn = encodeNBitUnsignedInteger(stream, 1, 0);
-					if(errn == 0) {
-						errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(appHandAnonType_supportedAppProtocolRes->SchemaID - 0));
-						/* valid EE */
-						errn = encodeNBitUnsignedInteger(stream, 1, 0);
-					}
+					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]);
 				}
-				grammarID = 5;
+				grammarID = 2;
 			} else 			if (1==1) {
 				errn = encodeNBitUnsignedInteger(stream, 2, 1);
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}
 			break;
-		case 5:
+		case 2:
 			/* Element[END_ELEMENT] */
 			if (1==1) {
 				errn = encodeNBitUnsignedInteger(stream, 1, 0);
 				if(errn == 0) {
 					done = 1;
 				}
-				grammarID = 6;
+				grammarID = 3;
 			} else {
 				errn = EXI_ERROR_UNKOWN_EVENT;
 			}

+ 1 - 1
src/appHandshake/appHandEXIDatatypesEncoder.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 5 - 5
src/codec/AbstractDecoderChannel.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>
@@ -107,7 +107,7 @@ static int _decodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv, int ne
 				iv->val.uint32 = (iv->val.uint32 << 7) | maskedOctets[k];
 			}
 			if (negative) {
-				iv->val.int32 = (int32_t)(-( iv->val.uint32 + 1));
+				iv->val.int32 = (-(int32_t)(iv->val.uint32 + 1));
 				if (iv->val.int32 <= INT16_MAX && iv->val.int32 >= INT16_MIN ) {
 					iv->type = EXI_INTEGER_16;
 				} else {
@@ -136,7 +136,7 @@ static int _decodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv, int ne
 					/* too large */
 					return EXI_UNSUPPORTED_INTEGER_VALUE;
 				}
-				iv->val.int64 = (int64_t)(-( iv->val.uint64 + 1));
+				iv->val.int64 = (-(int64_t)(iv->val.uint64 + 1));
 				if (iv->val.int64 <= INT32_MAX && iv->val.int64 >= INT32_MIN ) {
 					iv->type = EXI_INTEGER_32;
 				} else {
@@ -285,7 +285,7 @@ int decodeInteger32(bitstream_t* stream, int32_t* int32) {
 			/* For negative values, the Unsigned Integer holds the
 			 * magnitude of the value minus 1 */
 			errn = decodeUnsignedInteger32(stream, &uint32);
-			*int32 = (int32_t)(-(uint32 + 1));
+			*int32 = (-(int32_t)(uint32 + 1));
 		} else {
 			/* positive */
 			errn = decodeUnsignedInteger32(stream, &uint32);
@@ -312,7 +312,7 @@ int decodeInteger64(bitstream_t* stream, int64_t* int64) {
 			/* For negative values, the Unsigned Integer holds the
 			 * magnitude of the value minus 1 */
 			errn = decodeUnsignedInteger64(stream, &uint64);
-			*int64 = (int64_t)(-(uint64 + 1));
+			*int64 = (-(int64_t)(uint64 + 1));
 		} else {
 			/* positive */
 			errn = decodeUnsignedInteger64(stream, &uint64);

+ 1 - 1
src/codec/AbstractEncoderChannel.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/BitDecoderChannel.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/BitEncoderChannel.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/BitInputStream.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/BitInputStream.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/BitOutputStream.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/BitOutputStream.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/ByteDecoderChannel.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/ByteEncoderChannel.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/ByteStream.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/ByteStream.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/DecoderChannel.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/EXIConfig.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 30 - 1
src/codec/EXIHeaderDecoder.c

@@ -1,4 +1,33 @@
-/* $EXI_SOURCE_PREAMBLE$ */
+/*
+ * Copyright (C) 2007-2014 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.9.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * <p>Code generated by EXIdizer</p>
+ * <p>Schema: V2G_CI_MsgDef.xsd</p>
+ *
+ *
+ ********************************************************************/
+
+
 
 #include "EXIHeaderDecoder.h"
 #include "BitInputStream.h"

+ 1 - 1
src/codec/EXIHeaderDecoder.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 30 - 1
src/codec/EXIHeaderEncoder.c

@@ -1,4 +1,33 @@
-/* $EXI_SOURCE_PREAMBLE$ */
+/*
+ * Copyright (C) 2007-2014 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.9.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * <p>Code generated by EXIdizer</p>
+ * <p>Schema: V2G_CI_MsgDef.xsd</p>
+ *
+ *
+ ********************************************************************/
+
+
 
 #include "EXIHeaderEncoder.h"
 #include "BitOutputStream.h"

+ 1 - 1
src/codec/EXIHeaderEncoder.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/EXIOptions.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/EXITypes.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/EncoderChannel.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/ErrorCodes.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/MethodsBag.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 1 - 1
src/codec/MethodsBag.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 292 - 292
src/codec/v2gEXIDatatypes.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>
@@ -123,17 +123,123 @@ void init_v2gEXIDocument(struct v2gEXIDocument* exiDoc) {
 	exiDoc->Object_isUsed = 0u;
 }
 
-void init_v2gServiceDetailResType(struct v2gServiceDetailResType* v2gServiceDetailResType) {
-	v2gServiceDetailResType->ServiceParameterList_isUsed = 0u;
+void init_v2gPowerDeliveryReqType(struct v2gPowerDeliveryReqType* v2gPowerDeliveryReqType) {
+	v2gPowerDeliveryReqType->ChargingProfile_isUsed = 0u;
+	v2gPowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 0u;
+	v2gPowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 0u;
 }
 
-void init_v2gSPKIDataType(struct v2gSPKIDataType* v2gSPKIDataType) {
-	v2gSPKIDataType->SPKISexp.arrayLen = 0u;
+void init_v2gCertificateUpdateReqType(struct v2gCertificateUpdateReqType* v2gCertificateUpdateReqType) {
+}
+
+void init_v2gMessageHeaderType(struct v2gMessageHeaderType* v2gMessageHeaderType) {
+	v2gMessageHeaderType->Notification_isUsed = 0u;
+	v2gMessageHeaderType->Signature_isUsed = 0u;
+}
+
+void init_v2gBodyBaseType(struct v2gBodyBaseType* v2gBodyBaseType) {
+}
+
+void init_v2gWeldingDetectionResType(struct v2gWeldingDetectionResType* v2gWeldingDetectionResType) {
+}
+
+void init_v2gCostType(struct v2gCostType* v2gCostType) {
+	v2gCostType->amountMultiplier_isUsed = 0u;
+}
+
+void init_v2gCertificateInstallationReqType(struct v2gCertificateInstallationReqType* v2gCertificateInstallationReqType) {
+}
+
+void init_v2gEntryType(struct v2gEntryType* v2gEntryType) {
+	v2gEntryType->TimeInterval_isUsed = 0u;
+	v2gEntryType->RelativeTimeInterval_isUsed = 0u;
+}
+
+void init_v2gCanonicalizationMethodType(struct v2gCanonicalizationMethodType* v2gCanonicalizationMethodType) {
+}
+
+void init_v2gSignaturePropertiesType(struct v2gSignaturePropertiesType* v2gSignaturePropertiesType) {
+	v2gSignaturePropertiesType->Id_isUsed = 0u;
+	v2gSignaturePropertiesType->SignatureProperty.arrayLen = 0u;
+}
+
+void init_v2gPaymentServiceSelectionReqType(struct v2gPaymentServiceSelectionReqType* v2gPaymentServiceSelectionReqType) {
 }
 
 void init_v2gAuthorizationResType(struct v2gAuthorizationResType* v2gAuthorizationResType) {
 }
 
+void init_v2gConsumptionCostType(struct v2gConsumptionCostType* v2gConsumptionCostType) {
+	v2gConsumptionCostType->Cost.arrayLen = 0u;
+}
+
+void init_v2gCertificateInstallationResType(struct v2gCertificateInstallationResType* v2gCertificateInstallationResType) {
+}
+
+void init_v2gSessionStopResType(struct v2gSessionStopResType* v2gSessionStopResType) {
+}
+
+void init_v2gServiceListType(struct v2gServiceListType* v2gServiceListType) {
+	v2gServiceListType->Service.arrayLen = 0u;
+}
+
+void init_v2gEVSEChargeParameterType(struct v2gEVSEChargeParameterType* v2gEVSEChargeParameterType) {
+}
+
+void init_v2gMeteringReceiptReqType(struct v2gMeteringReceiptReqType* v2gMeteringReceiptReqType) {
+	v2gMeteringReceiptReqType->Id_isUsed = 0u;
+	v2gMeteringReceiptReqType->SAScheduleTupleID_isUsed = 0u;
+}
+
+void init_v2gX509IssuerSerialType(struct v2gX509IssuerSerialType* v2gX509IssuerSerialType) {
+}
+
+void init_v2gSignatureType(struct v2gSignatureType* v2gSignatureType) {
+	v2gSignatureType->Id_isUsed = 0u;
+	v2gSignatureType->KeyInfo_isUsed = 0u;
+	v2gSignatureType->Object.arrayLen = 0u;
+}
+
+void init_v2gEVPowerDeliveryParameterType(struct v2gEVPowerDeliveryParameterType* v2gEVPowerDeliveryParameterType) {
+}
+
+void init_v2gAC_EVSEChargeParameterType(struct v2gAC_EVSEChargeParameterType* v2gAC_EVSEChargeParameterType) {
+}
+
+void init_v2gSAScheduleListType(struct v2gSAScheduleListType* v2gSAScheduleListType) {
+	v2gSAScheduleListType->SAScheduleTuple.arrayLen = 0u;
+}
+
+void init_v2gDC_EVPowerDeliveryParameterType(struct v2gDC_EVPowerDeliveryParameterType* v2gDC_EVPowerDeliveryParameterType) {
+	v2gDC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed = 0u;
+}
+
+void init_v2gServiceDiscoveryResType(struct v2gServiceDiscoveryResType* v2gServiceDiscoveryResType) {
+	v2gServiceDiscoveryResType->ServiceList_isUsed = 0u;
+}
+
+void init_v2gServiceParameterListType(struct v2gServiceParameterListType* v2gServiceParameterListType) {
+	v2gServiceParameterListType->ParameterSet.arrayLen = 0u;
+}
+
+void init_v2gDC_EVChargeParameterType(struct v2gDC_EVChargeParameterType* v2gDC_EVChargeParameterType) {
+	v2gDC_EVChargeParameterType->DepartureTime_isUsed = 0u;
+	v2gDC_EVChargeParameterType->EVMaximumPowerLimit_isUsed = 0u;
+	v2gDC_EVChargeParameterType->EVEnergyCapacity_isUsed = 0u;
+	v2gDC_EVChargeParameterType->EVEnergyRequest_isUsed = 0u;
+	v2gDC_EVChargeParameterType->FullSOC_isUsed = 0u;
+	v2gDC_EVChargeParameterType->BulkSOC_isUsed = 0u;
+}
+
+void init_v2gServiceDiscoveryReqType(struct v2gServiceDiscoveryReqType* v2gServiceDiscoveryReqType) {
+	v2gServiceDiscoveryReqType->ServiceScope_isUsed = 0u;
+	v2gServiceDiscoveryReqType->ServiceCategory_isUsed = 0u;
+}
+
+void init_v2gSignatureValueType(struct v2gSignatureValueType* v2gSignatureValueType) {
+	v2gSignatureValueType->Id_isUsed = 0u;
+}
+
 void init_v2gBodyType(struct v2gBodyType* v2gBodyType) {
 	v2gBodyType->BodyElement_isUsed = 0u;
 	v2gBodyType->SessionSetupReq_isUsed = 0u;
@@ -172,333 +278,267 @@ void init_v2gBodyType(struct v2gBodyType* v2gBodyType) {
 	v2gBodyType->WeldingDetectionRes_isUsed = 0u;
 }
 
-void init_v2gPaymentServiceSelectionReqType(struct v2gPaymentServiceSelectionReqType* v2gPaymentServiceSelectionReqType) {
+void init_v2gPaymentDetailsResType(struct v2gPaymentDetailsResType* v2gPaymentDetailsResType) {
 }
 
-void init_v2gEVSEStatusType(struct v2gEVSEStatusType* v2gEVSEStatusType) {
+void init_v2gMeteringReceiptResType(struct v2gMeteringReceiptResType* v2gMeteringReceiptResType) {
+	v2gMeteringReceiptResType->EVSEStatus_isUsed = 0u;
+	v2gMeteringReceiptResType->AC_EVSEStatus_isUsed = 0u;
+	v2gMeteringReceiptResType->DC_EVSEStatus_isUsed = 0u;
 }
 
-void init_v2gSelectedServiceType(struct v2gSelectedServiceType* v2gSelectedServiceType) {
-	v2gSelectedServiceType->ParameterSetID_isUsed = 0u;
+void init_v2gRSAKeyValueType(struct v2gRSAKeyValueType* v2gRSAKeyValueType) {
 }
 
-void init_v2gEntryType(struct v2gEntryType* v2gEntryType) {
-	v2gEntryType->TimeInterval_isUsed = 0u;
-	v2gEntryType->RelativeTimeInterval_isUsed = 0u;
+void init_v2gSessionSetupReqType(struct v2gSessionSetupReqType* v2gSessionSetupReqType) {
 }
 
-void init_v2gDC_EVSEChargeParameterType(struct v2gDC_EVSEChargeParameterType* v2gDC_EVSEChargeParameterType) {
-	v2gDC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed = 0u;
-	v2gDC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed = 0u;
+void init_v2gSignedInfoType(struct v2gSignedInfoType* v2gSignedInfoType) {
+	v2gSignedInfoType->Id_isUsed = 0u;
+	v2gSignedInfoType->Reference.arrayLen = 0u;
 }
 
-void init_v2gSalesTariffType(struct v2gSalesTariffType* v2gSalesTariffType) {
-	v2gSalesTariffType->Id_isUsed = 0u;
-	v2gSalesTariffType->SalesTariffDescription_isUsed = 0u;
-	v2gSalesTariffType->NumEPriceLevels_isUsed = 0u;
-	v2gSalesTariffType->SalesTariffEntry.arrayLen = 0u;
+void init_v2gAuthorizationReqType(struct v2gAuthorizationReqType* v2gAuthorizationReqType) {
+	v2gAuthorizationReqType->Id_isUsed = 0u;
+	v2gAuthorizationReqType->GenChallenge_isUsed = 0u;
 }
 
-void init_v2gPMaxScheduleType(struct v2gPMaxScheduleType* v2gPMaxScheduleType) {
-	v2gPMaxScheduleType->PMaxScheduleEntry.arrayLen = 0u;
+void init_v2gChargingProfileType(struct v2gChargingProfileType* v2gChargingProfileType) {
+	v2gChargingProfileType->ProfileEntry.arrayLen = 0u;
 }
 
-void init_v2gCostType(struct v2gCostType* v2gCostType) {
-	v2gCostType->amountMultiplier_isUsed = 0u;
+void init_v2gDiffieHellmanPublickeyType(struct v2gDiffieHellmanPublickeyType* v2gDiffieHellmanPublickeyType) {
 }
 
-void init_v2gChargeServiceType(struct v2gChargeServiceType* v2gChargeServiceType) {
-	v2gChargeServiceType->ServiceName_isUsed = 0u;
-	v2gChargeServiceType->ServiceScope_isUsed = 0u;
+void init_v2gSelectedServiceType(struct v2gSelectedServiceType* v2gSelectedServiceType) {
+	v2gSelectedServiceType->ParameterSetID_isUsed = 0u;
 }
 
-void init_v2gPMaxScheduleEntryType(struct v2gPMaxScheduleEntryType* v2gPMaxScheduleEntryType) {
-	v2gPMaxScheduleEntryType->TimeInterval_isUsed = 0u;
-	v2gPMaxScheduleEntryType->RelativeTimeInterval_isUsed = 0u;
+void init_v2gSubCertificatesType(struct v2gSubCertificatesType* v2gSubCertificatesType) {
+	v2gSubCertificatesType->Certificate.arrayLen = 0u;
 }
 
-void init_v2gServiceListType(struct v2gServiceListType* v2gServiceListType) {
-	v2gServiceListType->Service.arrayLen = 0u;
+void init_v2gCertificateChainType(struct v2gCertificateChainType* v2gCertificateChainType) {
+	v2gCertificateChainType->Id_isUsed = 0u;
+	v2gCertificateChainType->SubCertificates_isUsed = 0u;
 }
 
-void init_v2gKeyValueType(struct v2gKeyValueType* v2gKeyValueType) {
-	v2gKeyValueType->DSAKeyValue_isUsed = 0u;
-	v2gKeyValueType->RSAKeyValue_isUsed = 0u;
+void init_v2gSupportedEnergyTransferModeType(struct v2gSupportedEnergyTransferModeType* v2gSupportedEnergyTransferModeType) {
+	v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen = 0u;
 }
 
-void init_v2gPaymentServiceSelectionResType(struct v2gPaymentServiceSelectionResType* v2gPaymentServiceSelectionResType) {
+void init_v2gCurrentDemandReqType(struct v2gCurrentDemandReqType* v2gCurrentDemandReqType) {
+	v2gCurrentDemandReqType->EVMaximumVoltageLimit_isUsed = 0u;
+	v2gCurrentDemandReqType->EVMaximumCurrentLimit_isUsed = 0u;
+	v2gCurrentDemandReqType->EVMaximumPowerLimit_isUsed = 0u;
+	v2gCurrentDemandReqType->BulkChargingComplete_isUsed = 0u;
+	v2gCurrentDemandReqType->RemainingTimeToFullSoC_isUsed = 0u;
+	v2gCurrentDemandReqType->RemainingTimeToBulkSoC_isUsed = 0u;
 }
 
-void init_v2gSignatureMethodType(struct v2gSignatureMethodType* v2gSignatureMethodType) {
-	v2gSignatureMethodType->HMACOutputLength_isUsed = 0u;
+void init_v2gSalesTariffType(struct v2gSalesTariffType* v2gSalesTariffType) {
+	v2gSalesTariffType->Id_isUsed = 0u;
+	v2gSalesTariffType->SalesTariffDescription_isUsed = 0u;
+	v2gSalesTariffType->NumEPriceLevels_isUsed = 0u;
+	v2gSalesTariffType->SalesTariffEntry.arrayLen = 0u;
 }
 
-void init_v2gMeteringReceiptResType(struct v2gMeteringReceiptResType* v2gMeteringReceiptResType) {
-	v2gMeteringReceiptResType->EVSEStatus_isUsed = 0u;
-	v2gMeteringReceiptResType->AC_EVSEStatus_isUsed = 0u;
-	v2gMeteringReceiptResType->DC_EVSEStatus_isUsed = 0u;
+void init_v2gEMAIDType(struct v2gEMAIDType* v2gEMAIDType) {
 }
 
-void init_v2gMessageHeaderType(struct v2gMessageHeaderType* v2gMessageHeaderType) {
-	v2gMessageHeaderType->Notification_isUsed = 0u;
-	v2gMessageHeaderType->Signature_isUsed = 0u;
+void init_v2gCableCheckReqType(struct v2gCableCheckReqType* v2gCableCheckReqType) {
 }
 
-void init_v2gRetrievalMethodType(struct v2gRetrievalMethodType* v2gRetrievalMethodType) {
-	v2gRetrievalMethodType->URI_isUsed = 0u;
-	v2gRetrievalMethodType->Type_isUsed = 0u;
-	v2gRetrievalMethodType->Transforms_isUsed = 0u;
+void init_v2gPreChargeResType(struct v2gPreChargeResType* v2gPreChargeResType) {
 }
 
-void init_v2gEVChargeParameterType(struct v2gEVChargeParameterType* v2gEVChargeParameterType) {
-	v2gEVChargeParameterType->DepartureTime_isUsed = 0u;
+void init_v2gEVStatusType(struct v2gEVStatusType* v2gEVStatusType) {
 }
 
-void init_v2gCertificateInstallationReqType(struct v2gCertificateInstallationReqType* v2gCertificateInstallationReqType) {
+void init_v2gPhysicalValueType(struct v2gPhysicalValueType* v2gPhysicalValueType) {
 }
 
-void init_v2gChargeParameterDiscoveryResType(struct v2gChargeParameterDiscoveryResType* v2gChargeParameterDiscoveryResType) {
-	v2gChargeParameterDiscoveryResType->SASchedules_isUsed = 0u;
-	v2gChargeParameterDiscoveryResType->SAScheduleList_isUsed = 0u;
-	v2gChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed = 0u;
-	v2gChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 0u;
-	v2gChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 0u;
+void init_v2gContractSignatureEncryptedPrivateKeyType(struct v2gContractSignatureEncryptedPrivateKeyType* v2gContractSignatureEncryptedPrivateKeyType) {
 }
 
-void init_v2gWeldingDetectionReqType(struct v2gWeldingDetectionReqType* v2gWeldingDetectionReqType) {
+void init_v2gPMaxScheduleType(struct v2gPMaxScheduleType* v2gPMaxScheduleType) {
+	v2gPMaxScheduleType->PMaxScheduleEntry.arrayLen = 0u;
 }
 
-void init_v2gCableCheckReqType(struct v2gCableCheckReqType* v2gCableCheckReqType) {
+void init_v2gNotificationType(struct v2gNotificationType* v2gNotificationType) {
+	v2gNotificationType->FaultMsg_isUsed = 0u;
 }
 
-void init_v2gParameterType(struct v2gParameterType* v2gParameterType) {
-	v2gParameterType->boolValue_isUsed = 0u;
-	v2gParameterType->byteValue_isUsed = 0u;
-	v2gParameterType->shortValue_isUsed = 0u;
-	v2gParameterType->intValue_isUsed = 0u;
-	v2gParameterType->physicalValue_isUsed = 0u;
-	v2gParameterType->stringValue_isUsed = 0u;
+void init_v2gChargingStatusReqType(struct v2gChargingStatusReqType* v2gChargingStatusReqType) {
 }
 
-void init_v2gEVSEChargeParameterType(struct v2gEVSEChargeParameterType* v2gEVSEChargeParameterType) {
+void init_v2gChargeServiceType(struct v2gChargeServiceType* v2gChargeServiceType) {
+	v2gChargeServiceType->ServiceName_isUsed = 0u;
+	v2gChargeServiceType->ServiceScope_isUsed = 0u;
 }
 
-void init_v2gManifestType(struct v2gManifestType* v2gManifestType) {
-	v2gManifestType->Id_isUsed = 0u;
-	v2gManifestType->Reference.arrayLen = 0u;
+void init_v2gPowerDeliveryResType(struct v2gPowerDeliveryResType* v2gPowerDeliveryResType) {
+	v2gPowerDeliveryResType->EVSEStatus_isUsed = 0u;
+	v2gPowerDeliveryResType->AC_EVSEStatus_isUsed = 0u;
+	v2gPowerDeliveryResType->DC_EVSEStatus_isUsed = 0u;
 }
 
-void init_v2gDC_EVStatusType(struct v2gDC_EVStatusType* v2gDC_EVStatusType) {
+void init_v2gEVSEStatusType(struct v2gEVSEStatusType* v2gEVSEStatusType) {
 }
 
-void init_v2gPaymentDetailsReqType(struct v2gPaymentDetailsReqType* v2gPaymentDetailsReqType) {
+void init_v2gX509DataType(struct v2gX509DataType* v2gX509DataType) {
+	v2gX509DataType->X509IssuerSerial.arrayLen = 0u;
+	v2gX509DataType->X509SKI.arrayLen = 0u;
+	v2gX509DataType->X509SubjectName.arrayLen = 0u;
+	v2gX509DataType->X509Certificate.arrayLen = 0u;
+	v2gX509DataType->X509CRL.arrayLen = 0u;
 }
 
-void init_v2gSAScheduleListType(struct v2gSAScheduleListType* v2gSAScheduleListType) {
-	v2gSAScheduleListType->SAScheduleTuple.arrayLen = 0u;
+void init_v2gPreChargeReqType(struct v2gPreChargeReqType* v2gPreChargeReqType) {
 }
 
-void init_v2gRSAKeyValueType(struct v2gRSAKeyValueType* v2gRSAKeyValueType) {
+void init_v2gDigestMethodType(struct v2gDigestMethodType* v2gDigestMethodType) {
 }
 
-void init_v2gAC_EVSEChargeParameterType(struct v2gAC_EVSEChargeParameterType* v2gAC_EVSEChargeParameterType) {
+void init_v2gPGPDataType(struct v2gPGPDataType* v2gPGPDataType) {
+	v2gPGPDataType->PGPKeyID_isUsed = 0u;
+	v2gPGPDataType->PGPKeyPacket_isUsed = 0u;
 }
 
-void init_v2gTransformsType(struct v2gTransformsType* v2gTransformsType) {
-	v2gTransformsType->Transform.arrayLen = 0u;
+void init_v2gSASchedulesType(struct v2gSASchedulesType* v2gSASchedulesType) {
 }
 
-void init_v2gWeldingDetectionResType(struct v2gWeldingDetectionResType* v2gWeldingDetectionResType) {
-}
-
-void init_v2gConsumptionCostType(struct v2gConsumptionCostType* v2gConsumptionCostType) {
-	v2gConsumptionCostType->Cost.arrayLen = 0u;
-}
-
-void init_v2gChargingStatusResType(struct v2gChargingStatusResType* v2gChargingStatusResType) {
-	v2gChargingStatusResType->EVSEMaxCurrent_isUsed = 0u;
-	v2gChargingStatusResType->MeterInfo_isUsed = 0u;
-	v2gChargingStatusResType->ReceiptRequired_isUsed = 0u;
-}
-
-void init_v2gEVStatusType(struct v2gEVStatusType* v2gEVStatusType) {
-}
-
-void init_v2gPGPDataType(struct v2gPGPDataType* v2gPGPDataType) {
-	v2gPGPDataType->PGPKeyID_isUsed = 0u;
-	v2gPGPDataType->PGPKeyPacket_isUsed = 0u;
+void init_v2gTransformType(struct v2gTransformType* v2gTransformType) {
+	v2gTransformType->XPath.arrayLen = 0u;
 }
 
-void init_v2gSessionStopResType(struct v2gSessionStopResType* v2gSessionStopResType) {
+void init_v2gPaymentDetailsReqType(struct v2gPaymentDetailsReqType* v2gPaymentDetailsReqType) {
 }
 
-void init_v2gServiceDiscoveryReqType(struct v2gServiceDiscoveryReqType* v2gServiceDiscoveryReqType) {
-	v2gServiceDiscoveryReqType->ServiceScope_isUsed = 0u;
-	v2gServiceDiscoveryReqType->ServiceCategory_isUsed = 0u;
+void init_v2gDC_EVStatusType(struct v2gDC_EVStatusType* v2gDC_EVStatusType) {
 }
 
-void init_v2gAuthorizationReqType(struct v2gAuthorizationReqType* v2gAuthorizationReqType) {
-	v2gAuthorizationReqType->Id_isUsed = 0u;
-	v2gAuthorizationReqType->GenChallenge_isUsed = 0u;
+void init_v2gPaymentServiceSelectionResType(struct v2gPaymentServiceSelectionResType* v2gPaymentServiceSelectionResType) {
 }
 
-void init_v2gSAScheduleTupleType(struct v2gSAScheduleTupleType* v2gSAScheduleTupleType) {
-	v2gSAScheduleTupleType->SalesTariff_isUsed = 0u;
+void init_v2gDC_EVSEChargeParameterType(struct v2gDC_EVSEChargeParameterType* v2gDC_EVSEChargeParameterType) {
+	v2gDC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed = 0u;
+	v2gDC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed = 0u;
 }
 
-void init_v2gPhysicalValueType(struct v2gPhysicalValueType* v2gPhysicalValueType) {
+void init_v2gChargingStatusResType(struct v2gChargingStatusResType* v2gChargingStatusResType) {
+	v2gChargingStatusResType->EVSEMaxCurrent_isUsed = 0u;
+	v2gChargingStatusResType->MeterInfo_isUsed = 0u;
+	v2gChargingStatusResType->ReceiptRequired_isUsed = 0u;
 }
 
-void init_v2gDigestMethodType(struct v2gDigestMethodType* v2gDigestMethodType) {
+void init_v2gObjectType(struct v2gObjectType* v2gObjectType) {
+	v2gObjectType->Id_isUsed = 0u;
+	v2gObjectType->MimeType_isUsed = 0u;
+	v2gObjectType->Encoding_isUsed = 0u;
 }
 
-void init_v2gAC_EVSEStatusType(struct v2gAC_EVSEStatusType* v2gAC_EVSEStatusType) {
+void init_v2gPaymentOptionListType(struct v2gPaymentOptionListType* v2gPaymentOptionListType) {
+	v2gPaymentOptionListType->PaymentOption.arrayLen = 0u;
 }
 
-void init_v2gSessionSetupResType(struct v2gSessionSetupResType* v2gSessionSetupResType) {
-	v2gSessionSetupResType->EVSETimeStamp_isUsed = 0u;
+void init_v2gParameterSetType(struct v2gParameterSetType* v2gParameterSetType) {
+	v2gParameterSetType->Parameter.arrayLen = 0u;
 }
 
-void init_v2gX509IssuerSerialType(struct v2gX509IssuerSerialType* v2gX509IssuerSerialType) {
+void init_v2gAC_EVChargeParameterType(struct v2gAC_EVChargeParameterType* v2gAC_EVChargeParameterType) {
+	v2gAC_EVChargeParameterType->DepartureTime_isUsed = 0u;
 }
 
-void init_v2gSessionStopReqType(struct v2gSessionStopReqType* v2gSessionStopReqType) {
+void init_v2gManifestType(struct v2gManifestType* v2gManifestType) {
+	v2gManifestType->Id_isUsed = 0u;
+	v2gManifestType->Reference.arrayLen = 0u;
 }
 
-void init_v2gDC_EVSEStatusType(struct v2gDC_EVSEStatusType* v2gDC_EVSEStatusType) {
-	v2gDC_EVSEStatusType->EVSEIsolationStatus_isUsed = 0u;
+void init_v2gServiceDetailResType(struct v2gServiceDetailResType* v2gServiceDetailResType) {
+	v2gServiceDetailResType->ServiceParameterList_isUsed = 0u;
 }
 
-void init_v2gDiffieHellmanPublickeyType(struct v2gDiffieHellmanPublickeyType* v2gDiffieHellmanPublickeyType) {
+void init_v2gListOfRootCertificateIDsType(struct v2gListOfRootCertificateIDsType* v2gListOfRootCertificateIDsType) {
+	v2gListOfRootCertificateIDsType->RootCertificateID.arrayLen = 0u;
 }
 
-void init_v2gCertificateUpdateReqType(struct v2gCertificateUpdateReqType* v2gCertificateUpdateReqType) {
+void init_v2gServiceType(struct v2gServiceType* v2gServiceType) {
+	v2gServiceType->ServiceName_isUsed = 0u;
+	v2gServiceType->ServiceScope_isUsed = 0u;
 }
 
-void init_v2gBodyBaseType(struct v2gBodyBaseType* v2gBodyBaseType) {
+void init_v2gParameterType(struct v2gParameterType* v2gParameterType) {
+	v2gParameterType->boolValue_isUsed = 0u;
+	v2gParameterType->byteValue_isUsed = 0u;
+	v2gParameterType->shortValue_isUsed = 0u;
+	v2gParameterType->intValue_isUsed = 0u;
+	v2gParameterType->physicalValue_isUsed = 0u;
+	v2gParameterType->stringValue_isUsed = 0u;
 }
 
-void init_v2gDC_EVChargeParameterType(struct v2gDC_EVChargeParameterType* v2gDC_EVChargeParameterType) {
-	v2gDC_EVChargeParameterType->DepartureTime_isUsed = 0u;
-	v2gDC_EVChargeParameterType->EVMaximumPowerLimit_isUsed = 0u;
-	v2gDC_EVChargeParameterType->EVEnergyCapacity_isUsed = 0u;
-	v2gDC_EVChargeParameterType->EVEnergyRequest_isUsed = 0u;
-	v2gDC_EVChargeParameterType->FullSOC_isUsed = 0u;
-	v2gDC_EVChargeParameterType->BulkSOC_isUsed = 0u;
+void init_v2gDSAKeyValueType(struct v2gDSAKeyValueType* v2gDSAKeyValueType) {
+	v2gDSAKeyValueType->P_isUsed = 0u;
+	v2gDSAKeyValueType->Q_isUsed = 0u;
+	v2gDSAKeyValueType->G_isUsed = 0u;
+	v2gDSAKeyValueType->J_isUsed = 0u;
+	v2gDSAKeyValueType->Seed_isUsed = 0u;
+	v2gDSAKeyValueType->PgenCounter_isUsed = 0u;
 }
 
-void init_v2gSubCertificatesType(struct v2gSubCertificatesType* v2gSubCertificatesType) {
-	v2gSubCertificatesType->Certificate.arrayLen = 0u;
+void init_v2gAnonType_V2G_Message(struct v2gAnonType_V2G_Message* v2gAnonType_V2G_Message) {
 }
 
-void init_v2gSupportedEnergyTransferModeType(struct v2gSupportedEnergyTransferModeType* v2gSupportedEnergyTransferModeType) {
-	v2gSupportedEnergyTransferModeType->EnergyTransferMode.arrayLen = 0u;
+void init_v2gEVChargeParameterType(struct v2gEVChargeParameterType* v2gEVChargeParameterType) {
+	v2gEVChargeParameterType->DepartureTime_isUsed = 0u;
 }
 
-void init_v2gChargingStatusReqType(struct v2gChargingStatusReqType* v2gChargingStatusReqType) {
+void init_v2gProfileEntryType(struct v2gProfileEntryType* v2gProfileEntryType) {
+	v2gProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed = 0u;
 }
 
 void init_v2gSignaturePropertyType(struct v2gSignaturePropertyType* v2gSignaturePropertyType) {
 	v2gSignaturePropertyType->Id_isUsed = 0u;
 }
 
-void init_v2gContractSignatureEncryptedPrivateKeyType(struct v2gContractSignatureEncryptedPrivateKeyType* v2gContractSignatureEncryptedPrivateKeyType) {
-}
-
-void init_v2gReferenceType(struct v2gReferenceType* v2gReferenceType) {
-	v2gReferenceType->Id_isUsed = 0u;
-	v2gReferenceType->URI_isUsed = 0u;
-	v2gReferenceType->Type_isUsed = 0u;
-	v2gReferenceType->Transforms_isUsed = 0u;
-}
-
-void init_v2gCurrentDemandResType(struct v2gCurrentDemandResType* v2gCurrentDemandResType) {
-	v2gCurrentDemandResType->EVSEMaximumVoltageLimit_isUsed = 0u;
-	v2gCurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 0u;
-	v2gCurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 0u;
-	v2gCurrentDemandResType->MeterInfo_isUsed = 0u;
-	v2gCurrentDemandResType->ReceiptRequired_isUsed = 0u;
-}
-
-void init_v2gCanonicalizationMethodType(struct v2gCanonicalizationMethodType* v2gCanonicalizationMethodType) {
-}
-
-void init_v2gTransformType(struct v2gTransformType* v2gTransformType) {
-	v2gTransformType->XPath.arrayLen = 0u;
+void init_v2gPMaxScheduleEntryType(struct v2gPMaxScheduleEntryType* v2gPMaxScheduleEntryType) {
+	v2gPMaxScheduleEntryType->TimeInterval_isUsed = 0u;
+	v2gPMaxScheduleEntryType->RelativeTimeInterval_isUsed = 0u;
 }
 
-void init_v2gCertificateChainType(struct v2gCertificateChainType* v2gCertificateChainType) {
-	v2gCertificateChainType->Id_isUsed = 0u;
-	v2gCertificateChainType->SubCertificates_isUsed = 0u;
+void init_v2gKeyValueType(struct v2gKeyValueType* v2gKeyValueType) {
+	v2gKeyValueType->DSAKeyValue_isUsed = 0u;
+	v2gKeyValueType->RSAKeyValue_isUsed = 0u;
 }
 
-void init_v2gSignatureValueType(struct v2gSignatureValueType* v2gSignatureValueType) {
-	v2gSignatureValueType->Id_isUsed = 0u;
+void init_v2gRetrievalMethodType(struct v2gRetrievalMethodType* v2gRetrievalMethodType) {
+	v2gRetrievalMethodType->URI_isUsed = 0u;
+	v2gRetrievalMethodType->Type_isUsed = 0u;
+	v2gRetrievalMethodType->Transforms_isUsed = 0u;
 }
 
-void init_v2gEVPowerDeliveryParameterType(struct v2gEVPowerDeliveryParameterType* v2gEVPowerDeliveryParameterType) {
+void init_v2gSessionStopReqType(struct v2gSessionStopReqType* v2gSessionStopReqType) {
 }
 
 void init_v2gServiceDetailReqType(struct v2gServiceDetailReqType* v2gServiceDetailReqType) {
 }
 
-void init_v2gPaymentDetailsResType(struct v2gPaymentDetailsResType* v2gPaymentDetailsResType) {
-}
-
-void init_v2gX509DataType(struct v2gX509DataType* v2gX509DataType) {
-	v2gX509DataType->X509IssuerSerial.arrayLen = 0u;
-	v2gX509DataType->X509SKI.arrayLen = 0u;
-	v2gX509DataType->X509SubjectName.arrayLen = 0u;
-	v2gX509DataType->X509Certificate.arrayLen = 0u;
-	v2gX509DataType->X509CRL.arrayLen = 0u;
-}
-
-void init_v2gDSAKeyValueType(struct v2gDSAKeyValueType* v2gDSAKeyValueType) {
-	v2gDSAKeyValueType->P_isUsed = 0u;
-	v2gDSAKeyValueType->Q_isUsed = 0u;
-	v2gDSAKeyValueType->G_isUsed = 0u;
-	v2gDSAKeyValueType->J_isUsed = 0u;
-	v2gDSAKeyValueType->Seed_isUsed = 0u;
-	v2gDSAKeyValueType->PgenCounter_isUsed = 0u;
-}
-
-void init_v2gPowerDeliveryResType(struct v2gPowerDeliveryResType* v2gPowerDeliveryResType) {
-	v2gPowerDeliveryResType->EVSEStatus_isUsed = 0u;
-	v2gPowerDeliveryResType->AC_EVSEStatus_isUsed = 0u;
-	v2gPowerDeliveryResType->DC_EVSEStatus_isUsed = 0u;
-}
-
-void init_v2gChargeParameterDiscoveryReqType(struct v2gChargeParameterDiscoveryReqType* v2gChargeParameterDiscoveryReqType) {
-	v2gChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple_isUsed = 0u;
-	v2gChargeParameterDiscoveryReqType->EVChargeParameter_isUsed = 0u;
-	v2gChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 0u;
-	v2gChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 0u;
-}
-
-void init_v2gParameterSetType(struct v2gParameterSetType* v2gParameterSetType) {
-	v2gParameterSetType->Parameter.arrayLen = 0u;
-}
-
-void init_v2gServiceDiscoveryResType(struct v2gServiceDiscoveryResType* v2gServiceDiscoveryResType) {
-	v2gServiceDiscoveryResType->ServiceList_isUsed = 0u;
-}
-
-void init_v2gAnonType_V2G_Message(struct v2gAnonType_V2G_Message* v2gAnonType_V2G_Message) {
-}
-
-void init_v2gSignatureType(struct v2gSignatureType* v2gSignatureType) {
-	v2gSignatureType->Id_isUsed = 0u;
-	v2gSignatureType->KeyInfo_isUsed = 0u;
-	v2gSignatureType->Object.arrayLen = 0u;
-}
-
-void init_v2gEMAIDType(struct v2gEMAIDType* v2gEMAIDType) {
+void init_v2gKeyInfoType(struct v2gKeyInfoType* v2gKeyInfoType) {
+	v2gKeyInfoType->Id_isUsed = 0u;
+	v2gKeyInfoType->KeyName.arrayLen = 0u;
+	v2gKeyInfoType->KeyValue.arrayLen = 0u;
+	v2gKeyInfoType->RetrievalMethod.arrayLen = 0u;
+	v2gKeyInfoType->X509Data.arrayLen = 0u;
+	v2gKeyInfoType->PGPData.arrayLen = 0u;
+	v2gKeyInfoType->SPKIData.arrayLen = 0u;
+	v2gKeyInfoType->MgmtData.arrayLen = 0u;
 }
 
-void init_v2gCertificateInstallationResType(struct v2gCertificateInstallationResType* v2gCertificateInstallationResType) {
+void init_v2gAC_EVSEStatusType(struct v2gAC_EVSEStatusType* v2gAC_EVSEStatusType) {
 }
 
-void init_v2gCableCheckResType(struct v2gCableCheckResType* v2gCableCheckResType) {
+void init_v2gSelectedServiceListType(struct v2gSelectedServiceListType* v2gSelectedServiceListType) {
+	v2gSelectedServiceListType->SelectedService.arrayLen = 0u;
 }
 
 void init_v2gMeterInfoType(struct v2gMeterInfoType* v2gMeterInfoType) {
@@ -508,30 +548,20 @@ void init_v2gMeterInfoType(struct v2gMeterInfoType* v2gMeterInfoType) {
 	v2gMeterInfoType->TMeter_isUsed = 0u;
 }
 
-void init_v2gAC_EVChargeParameterType(struct v2gAC_EVChargeParameterType* v2gAC_EVChargeParameterType) {
-	v2gAC_EVChargeParameterType->DepartureTime_isUsed = 0u;
-}
-
-void init_v2gServiceParameterListType(struct v2gServiceParameterListType* v2gServiceParameterListType) {
-	v2gServiceParameterListType->ParameterSet.arrayLen = 0u;
-}
-
-void init_v2gCurrentDemandReqType(struct v2gCurrentDemandReqType* v2gCurrentDemandReqType) {
-	v2gCurrentDemandReqType->EVMaximumVoltageLimit_isUsed = 0u;
-	v2gCurrentDemandReqType->EVMaximumCurrentLimit_isUsed = 0u;
-	v2gCurrentDemandReqType->EVMaximumPowerLimit_isUsed = 0u;
-	v2gCurrentDemandReqType->BulkChargingComplete_isUsed = 0u;
-	v2gCurrentDemandReqType->RemainingTimeToFullSoC_isUsed = 0u;
-	v2gCurrentDemandReqType->RemainingTimeToBulkSoC_isUsed = 0u;
-}
-
-void init_v2gSASchedulesType(struct v2gSASchedulesType* v2gSASchedulesType) {
+void init_v2gSPKIDataType(struct v2gSPKIDataType* v2gSPKIDataType) {
+	v2gSPKIDataType->SPKISexp.arrayLen = 0u;
 }
 
-void init_v2gIntervalType(struct v2gIntervalType* v2gIntervalType) {
+void init_v2gChargeParameterDiscoveryResType(struct v2gChargeParameterDiscoveryResType* v2gChargeParameterDiscoveryResType) {
+	v2gChargeParameterDiscoveryResType->SASchedules_isUsed = 0u;
+	v2gChargeParameterDiscoveryResType->SAScheduleList_isUsed = 0u;
+	v2gChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed = 0u;
+	v2gChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 0u;
+	v2gChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 0u;
 }
 
-void init_v2gPreChargeResType(struct v2gPreChargeResType* v2gPreChargeResType) {
+void init_v2gTransformsType(struct v2gTransformsType* v2gTransformsType) {
+	v2gTransformsType->Transform.arrayLen = 0u;
 }
 
 void init_v2gSalesTariffEntryType(struct v2gSalesTariffEntryType* v2gSalesTariffEntryType) {
@@ -541,89 +571,59 @@ void init_v2gSalesTariffEntryType(struct v2gSalesTariffEntryType* v2gSalesTariff
 	v2gSalesTariffEntryType->ConsumptionCost.arrayLen = 0u;
 }
 
-void init_v2gPaymentOptionListType(struct v2gPaymentOptionListType* v2gPaymentOptionListType) {
-	v2gPaymentOptionListType->PaymentOption.arrayLen = 0u;
-}
-
-void init_v2gSignedInfoType(struct v2gSignedInfoType* v2gSignedInfoType) {
-	v2gSignedInfoType->Id_isUsed = 0u;
-	v2gSignedInfoType->Reference.arrayLen = 0u;
-}
-
-void init_v2gSessionSetupReqType(struct v2gSessionSetupReqType* v2gSessionSetupReqType) {
+void init_v2gWeldingDetectionReqType(struct v2gWeldingDetectionReqType* v2gWeldingDetectionReqType) {
 }
 
-void init_v2gSignaturePropertiesType(struct v2gSignaturePropertiesType* v2gSignaturePropertiesType) {
-	v2gSignaturePropertiesType->Id_isUsed = 0u;
-	v2gSignaturePropertiesType->SignatureProperty.arrayLen = 0u;
+void init_v2gSessionSetupResType(struct v2gSessionSetupResType* v2gSessionSetupResType) {
+	v2gSessionSetupResType->EVSETimeStamp_isUsed = 0u;
 }
 
-void init_v2gProfileEntryType(struct v2gProfileEntryType* v2gProfileEntryType) {
-	v2gProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed = 0u;
+void init_v2gSignatureMethodType(struct v2gSignatureMethodType* v2gSignatureMethodType) {
+	v2gSignatureMethodType->HMACOutputLength_isUsed = 0u;
 }
 
-void init_v2gPreChargeReqType(struct v2gPreChargeReqType* v2gPreChargeReqType) {
+void init_v2gCurrentDemandResType(struct v2gCurrentDemandResType* v2gCurrentDemandResType) {
+	v2gCurrentDemandResType->EVSEMaximumVoltageLimit_isUsed = 0u;
+	v2gCurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 0u;
+	v2gCurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 0u;
+	v2gCurrentDemandResType->MeterInfo_isUsed = 0u;
+	v2gCurrentDemandResType->ReceiptRequired_isUsed = 0u;
 }
 
-void init_v2gListOfRootCertificateIDsType(struct v2gListOfRootCertificateIDsType* v2gListOfRootCertificateIDsType) {
-	v2gListOfRootCertificateIDsType->RootCertificateID.arrayLen = 0u;
+void init_v2gChargeParameterDiscoveryReqType(struct v2gChargeParameterDiscoveryReqType* v2gChargeParameterDiscoveryReqType) {
+	v2gChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple_isUsed = 0u;
+	v2gChargeParameterDiscoveryReqType->EVChargeParameter_isUsed = 0u;
+	v2gChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 0u;
+	v2gChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 0u;
 }
 
-void init_v2gDC_EVPowerDeliveryParameterType(struct v2gDC_EVPowerDeliveryParameterType* v2gDC_EVPowerDeliveryParameterType) {
-	v2gDC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed = 0u;
+void init_v2gCableCheckResType(struct v2gCableCheckResType* v2gCableCheckResType) {
 }
 
 void init_v2gRelativeTimeIntervalType(struct v2gRelativeTimeIntervalType* v2gRelativeTimeIntervalType) {
 	v2gRelativeTimeIntervalType->duration_isUsed = 0u;
 }
 
-void init_v2gChargingProfileType(struct v2gChargingProfileType* v2gChargingProfileType) {
-	v2gChargingProfileType->ProfileEntry.arrayLen = 0u;
-}
-
-void init_v2gCertificateUpdateResType(struct v2gCertificateUpdateResType* v2gCertificateUpdateResType) {
-	v2gCertificateUpdateResType->RetryCounter_isUsed = 0u;
-}
-
-void init_v2gMeteringReceiptReqType(struct v2gMeteringReceiptReqType* v2gMeteringReceiptReqType) {
-	v2gMeteringReceiptReqType->Id_isUsed = 0u;
-	v2gMeteringReceiptReqType->SAScheduleTupleID_isUsed = 0u;
-}
-
-void init_v2gServiceType(struct v2gServiceType* v2gServiceType) {
-	v2gServiceType->ServiceName_isUsed = 0u;
-	v2gServiceType->ServiceScope_isUsed = 0u;
-}
-
-void init_v2gNotificationType(struct v2gNotificationType* v2gNotificationType) {
-	v2gNotificationType->FaultMsg_isUsed = 0u;
+void init_v2gSAScheduleTupleType(struct v2gSAScheduleTupleType* v2gSAScheduleTupleType) {
+	v2gSAScheduleTupleType->SalesTariff_isUsed = 0u;
 }
 
-void init_v2gKeyInfoType(struct v2gKeyInfoType* v2gKeyInfoType) {
-	v2gKeyInfoType->Id_isUsed = 0u;
-	v2gKeyInfoType->KeyName.arrayLen = 0u;
-	v2gKeyInfoType->KeyValue.arrayLen = 0u;
-	v2gKeyInfoType->RetrievalMethod.arrayLen = 0u;
-	v2gKeyInfoType->X509Data.arrayLen = 0u;
-	v2gKeyInfoType->PGPData.arrayLen = 0u;
-	v2gKeyInfoType->SPKIData.arrayLen = 0u;
-	v2gKeyInfoType->MgmtData.arrayLen = 0u;
+void init_v2gDC_EVSEStatusType(struct v2gDC_EVSEStatusType* v2gDC_EVSEStatusType) {
+	v2gDC_EVSEStatusType->EVSEIsolationStatus_isUsed = 0u;
 }
 
-void init_v2gSelectedServiceListType(struct v2gSelectedServiceListType* v2gSelectedServiceListType) {
-	v2gSelectedServiceListType->SelectedService.arrayLen = 0u;
+void init_v2gIntervalType(struct v2gIntervalType* v2gIntervalType) {
 }
 
-void init_v2gPowerDeliveryReqType(struct v2gPowerDeliveryReqType* v2gPowerDeliveryReqType) {
-	v2gPowerDeliveryReqType->ChargingProfile_isUsed = 0u;
-	v2gPowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 0u;
-	v2gPowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 0u;
+void init_v2gReferenceType(struct v2gReferenceType* v2gReferenceType) {
+	v2gReferenceType->Id_isUsed = 0u;
+	v2gReferenceType->URI_isUsed = 0u;
+	v2gReferenceType->Type_isUsed = 0u;
+	v2gReferenceType->Transforms_isUsed = 0u;
 }
 
-void init_v2gObjectType(struct v2gObjectType* v2gObjectType) {
-	v2gObjectType->Id_isUsed = 0u;
-	v2gObjectType->MimeType_isUsed = 0u;
-	v2gObjectType->Encoding_isUsed = 0u;
+void init_v2gCertificateUpdateResType(struct v2gCertificateUpdateResType* v2gCertificateUpdateResType) {
+	v2gCertificateUpdateResType->RetryCounter_isUsed = 0u;
 }
 
 

File diff suppressed because it is too large
+ 514 - 365
src/codec/v2gEXIDatatypes.h


File diff suppressed because it is too large
+ 270 - 241
src/codec/v2gEXIDatatypesDecoder.c


+ 1 - 1
src/codec/v2gEXIDatatypesDecoder.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

File diff suppressed because it is too large
+ 327 - 169
src/codec/v2gEXIDatatypesEncoder.c


+ 1 - 1
src/codec/v2gEXIDatatypesEncoder.h

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>

+ 613 - 0
src/din/dinEXIDatatypes.c

@@ -0,0 +1,613 @@
+/*
+ * Copyright (C) 2007-2014 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.9.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * <p>Code generated by EXIdizer</p>
+ * <p>Schema: V2G_CI_MsgDef.xsd</p>
+ *
+ *
+ ********************************************************************/
+
+
+
+#include <stdint.h>
+
+#include "dinEXIDatatypes.h"
+#include "EXITypes.h"
+
+
+#ifndef EXI_din_DATATYPES_C
+#define EXI_din_DATATYPES_C
+
+#if DEPLOY_DIN_CODEC == SUPPORT_YES
+
+void init_dinEXIDocument(struct dinEXIDocument* exiDoc) {
+	exiDoc->BodyElement_isUsed = 0u;
+	exiDoc->V2G_Message_isUsed = 0u;
+	exiDoc->SignatureProperty_isUsed = 0u;
+	exiDoc->DSAKeyValue_isUsed = 0u;
+	exiDoc->SignatureProperties_isUsed = 0u;
+	exiDoc->KeyValue_isUsed = 0u;
+	exiDoc->Transforms_isUsed = 0u;
+	exiDoc->DigestMethod_isUsed = 0u;
+	exiDoc->Signature_isUsed = 0u;
+	exiDoc->RetrievalMethod_isUsed = 0u;
+	exiDoc->Manifest_isUsed = 0u;
+	exiDoc->Reference_isUsed = 0u;
+	exiDoc->CanonicalizationMethod_isUsed = 0u;
+	exiDoc->RSAKeyValue_isUsed = 0u;
+	exiDoc->Transform_isUsed = 0u;
+	exiDoc->PGPData_isUsed = 0u;
+	exiDoc->MgmtData_isUsed = 0u;
+	exiDoc->SignatureMethod_isUsed = 0u;
+	exiDoc->KeyInfo_isUsed = 0u;
+	exiDoc->SPKIData_isUsed = 0u;
+	exiDoc->X509Data_isUsed = 0u;
+	exiDoc->SignatureValue_isUsed = 0u;
+	exiDoc->KeyName_isUsed = 0u;
+	exiDoc->DigestValue_isUsed = 0u;
+	exiDoc->SignedInfo_isUsed = 0u;
+	exiDoc->Object_isUsed = 0u;
+	exiDoc->DC_EVSEStatus_isUsed = 0u;
+	exiDoc->RelativeTimeInterval_isUsed = 0u;
+	exiDoc->SalesTariffEntry_isUsed = 0u;
+	exiDoc->DC_EVPowerDeliveryParameter_isUsed = 0u;
+	exiDoc->SASchedules_isUsed = 0u;
+	exiDoc->AC_EVChargeParameter_isUsed = 0u;
+	exiDoc->SAScheduleList_isUsed = 0u;
+	exiDoc->DC_EVStatus_isUsed = 0u;
+	exiDoc->ServiceCharge_isUsed = 0u;
+	exiDoc->EVStatus_isUsed = 0u;
+	exiDoc->DC_EVChargeParameter_isUsed = 0u;
+	exiDoc->DC_EVSEChargeParameter_isUsed = 0u;
+	exiDoc->EVSEStatus_isUsed = 0u;
+	exiDoc->TimeInterval_isUsed = 0u;
+	exiDoc->EVPowerDeliveryParameter_isUsed = 0u;
+	exiDoc->EVSEChargeParameter_isUsed = 0u;
+	exiDoc->AC_EVSEStatus_isUsed = 0u;
+	exiDoc->Entry_isUsed = 0u;
+	exiDoc->AC_EVSEChargeParameter_isUsed = 0u;
+	exiDoc->PMaxScheduleEntry_isUsed = 0u;
+	exiDoc->EVChargeParameter_isUsed = 0u;
+	exiDoc->ServiceDiscoveryReq_isUsed = 0u;
+	exiDoc->ServiceDiscoveryRes_isUsed = 0u;
+	exiDoc->MeteringReceiptReq_isUsed = 0u;
+	exiDoc->PaymentDetailsReq_isUsed = 0u;
+	exiDoc->MeteringReceiptRes_isUsed = 0u;
+	exiDoc->PaymentDetailsRes_isUsed = 0u;
+	exiDoc->SessionSetupReq_isUsed = 0u;
+	exiDoc->SessionSetupRes_isUsed = 0u;
+	exiDoc->CableCheckReq_isUsed = 0u;
+	exiDoc->CableCheckRes_isUsed = 0u;
+	exiDoc->ContractAuthenticationReq_isUsed = 0u;
+	exiDoc->CertificateInstallationReq_isUsed = 0u;
+	exiDoc->ContractAuthenticationRes_isUsed = 0u;
+	exiDoc->CertificateInstallationRes_isUsed = 0u;
+	exiDoc->WeldingDetectionReq_isUsed = 0u;
+	exiDoc->WeldingDetectionRes_isUsed = 0u;
+	exiDoc->CertificateUpdateReq_isUsed = 0u;
+	exiDoc->CertificateUpdateRes_isUsed = 0u;
+	exiDoc->PowerDeliveryReq_isUsed = 0u;
+	exiDoc->PowerDeliveryRes_isUsed = 0u;
+	exiDoc->ChargingStatusReq_isUsed = 0u;
+	exiDoc->ChargingStatusRes_isUsed = 0u;
+	exiDoc->CurrentDemandReq_isUsed = 0u;
+	exiDoc->PreChargeReq_isUsed = 0u;
+	exiDoc->CurrentDemandRes_isUsed = 0u;
+	exiDoc->PreChargeRes_isUsed = 0u;
+	exiDoc->ServicePaymentSelectionReq_isUsed = 0u;
+	exiDoc->SessionStopReq_isUsed = 0u;
+	exiDoc->ServicePaymentSelectionRes_isUsed = 0u;
+	exiDoc->SessionStopRes_isUsed = 0u;
+	exiDoc->ChargeParameterDiscoveryReq_isUsed = 0u;
+	exiDoc->ChargeParameterDiscoveryRes_isUsed = 0u;
+	exiDoc->ServiceDetailReq_isUsed = 0u;
+	exiDoc->ServiceDetailRes_isUsed = 0u;
+}
+
+void init_dinPreChargeReqType(struct dinPreChargeReqType* dinPreChargeReqType) {
+}
+
+void init_dinNotificationType(struct dinNotificationType* dinNotificationType) {
+	dinNotificationType->FaultMsg_isUsed = 0u;
+}
+
+void init_dinServiceTagType(struct dinServiceTagType* dinServiceTagType) {
+	dinServiceTagType->ServiceName_isUsed = 0u;
+	dinServiceTagType->ServiceScope_isUsed = 0u;
+}
+
+void init_dinCostType(struct dinCostType* dinCostType) {
+	dinCostType->amountMultiplier_isUsed = 0u;
+}
+
+void init_dinX509DataType(struct dinX509DataType* dinX509DataType) {
+	dinX509DataType->X509IssuerSerial.arrayLen = 0u;
+	dinX509DataType->X509SKI.arrayLen = 0u;
+	dinX509DataType->X509SubjectName.arrayLen = 0u;
+	dinX509DataType->X509Certificate.arrayLen = 0u;
+	dinX509DataType->X509CRL.arrayLen = 0u;
+}
+
+void init_dinBodyType(struct dinBodyType* dinBodyType) {
+	dinBodyType->BodyElement_isUsed = 0u;
+	dinBodyType->SessionSetupReq_isUsed = 0u;
+	dinBodyType->SessionSetupRes_isUsed = 0u;
+	dinBodyType->ServiceDiscoveryReq_isUsed = 0u;
+	dinBodyType->ServiceDiscoveryRes_isUsed = 0u;
+	dinBodyType->ServiceDetailReq_isUsed = 0u;
+	dinBodyType->ServiceDetailRes_isUsed = 0u;
+	dinBodyType->ServicePaymentSelectionReq_isUsed = 0u;
+	dinBodyType->ServicePaymentSelectionRes_isUsed = 0u;
+	dinBodyType->PaymentDetailsReq_isUsed = 0u;
+	dinBodyType->PaymentDetailsRes_isUsed = 0u;
+	dinBodyType->ContractAuthenticationReq_isUsed = 0u;
+	dinBodyType->ContractAuthenticationRes_isUsed = 0u;
+	dinBodyType->ChargeParameterDiscoveryReq_isUsed = 0u;
+	dinBodyType->ChargeParameterDiscoveryRes_isUsed = 0u;
+	dinBodyType->PowerDeliveryReq_isUsed = 0u;
+	dinBodyType->PowerDeliveryRes_isUsed = 0u;
+	dinBodyType->ChargingStatusReq_isUsed = 0u;
+	dinBodyType->ChargingStatusRes_isUsed = 0u;
+	dinBodyType->MeteringReceiptReq_isUsed = 0u;
+	dinBodyType->MeteringReceiptRes_isUsed = 0u;
+	dinBodyType->SessionStopReq_isUsed = 0u;
+	dinBodyType->SessionStopRes_isUsed = 0u;
+	dinBodyType->CertificateUpdateReq_isUsed = 0u;
+	dinBodyType->CertificateUpdateRes_isUsed = 0u;
+	dinBodyType->CertificateInstallationReq_isUsed = 0u;
+	dinBodyType->CertificateInstallationRes_isUsed = 0u;
+	dinBodyType->CableCheckReq_isUsed = 0u;
+	dinBodyType->CableCheckRes_isUsed = 0u;
+	dinBodyType->PreChargeReq_isUsed = 0u;
+	dinBodyType->PreChargeRes_isUsed = 0u;
+	dinBodyType->CurrentDemandReq_isUsed = 0u;
+	dinBodyType->CurrentDemandRes_isUsed = 0u;
+	dinBodyType->WeldingDetectionReq_isUsed = 0u;
+	dinBodyType->WeldingDetectionRes_isUsed = 0u;
+}
+
+void init_dinRetrievalMethodType(struct dinRetrievalMethodType* dinRetrievalMethodType) {
+	dinRetrievalMethodType->URI_isUsed = 0u;
+	dinRetrievalMethodType->Type_isUsed = 0u;
+	dinRetrievalMethodType->Transforms_isUsed = 0u;
+}
+
+void init_dinCertificateInstallationReqType(struct dinCertificateInstallationReqType* dinCertificateInstallationReqType) {
+	dinCertificateInstallationReqType->Id_isUsed = 0u;
+}
+
+void init_dinAC_EVChargeParameterType(struct dinAC_EVChargeParameterType* dinAC_EVChargeParameterType) {
+}
+
+void init_dinObjectType(struct dinObjectType* dinObjectType) {
+	dinObjectType->Id_isUsed = 0u;
+	dinObjectType->MimeType_isUsed = 0u;
+	dinObjectType->Encoding_isUsed = 0u;
+}
+
+void init_dinContractAuthenticationResType(struct dinContractAuthenticationResType* dinContractAuthenticationResType) {
+}
+
+void init_dinChargingProfileType(struct dinChargingProfileType* dinChargingProfileType) {
+	dinChargingProfileType->ProfileEntry.arrayLen = 0u;
+}
+
+void init_dinCertificateUpdateResType(struct dinCertificateUpdateResType* dinCertificateUpdateResType) {
+}
+
+void init_dinReferenceType(struct dinReferenceType* dinReferenceType) {
+	dinReferenceType->Id_isUsed = 0u;
+	dinReferenceType->URI_isUsed = 0u;
+	dinReferenceType->Type_isUsed = 0u;
+	dinReferenceType->Transforms_isUsed = 0u;
+}
+
+void init_dinPMaxScheduleEntryType(struct dinPMaxScheduleEntryType* dinPMaxScheduleEntryType) {
+	dinPMaxScheduleEntryType->TimeInterval_isUsed = 0u;
+	dinPMaxScheduleEntryType->RelativeTimeInterval_isUsed = 0u;
+}
+
+void init_dinServicePaymentSelectionReqType(struct dinServicePaymentSelectionReqType* dinServicePaymentSelectionReqType) {
+}
+
+void init_dinCertificateInstallationResType(struct dinCertificateInstallationResType* dinCertificateInstallationResType) {
+}
+
+void init_dinSelectedServiceType(struct dinSelectedServiceType* dinSelectedServiceType) {
+	dinSelectedServiceType->ParameterSetID_isUsed = 0u;
+}
+
+void init_dinDC_EVStatusType(struct dinDC_EVStatusType* dinDC_EVStatusType) {
+	dinDC_EVStatusType->EVCabinConditioning_isUsed = 0u;
+	dinDC_EVStatusType->EVRESSConditioning_isUsed = 0u;
+}
+
+void init_dinPGPDataType(struct dinPGPDataType* dinPGPDataType) {
+	dinPGPDataType->PGPKeyID_isUsed = 0u;
+	dinPGPDataType->PGPKeyPacket_isUsed = 0u;
+}
+
+void init_dinCurrentDemandResType(struct dinCurrentDemandResType* dinCurrentDemandResType) {
+	dinCurrentDemandResType->EVSEMaximumVoltageLimit_isUsed = 0u;
+	dinCurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 0u;
+	dinCurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 0u;
+}
+
+void init_dinCableCheckReqType(struct dinCableCheckReqType* dinCableCheckReqType) {
+}
+
+void init_dinChargingStatusResType(struct dinChargingStatusResType* dinChargingStatusResType) {
+	dinChargingStatusResType->EVSEMaxCurrent_isUsed = 0u;
+	dinChargingStatusResType->MeterInfo_isUsed = 0u;
+}
+
+void init_dinWeldingDetectionReqType(struct dinWeldingDetectionReqType* dinWeldingDetectionReqType) {
+}
+
+void init_dinServiceParameterListType(struct dinServiceParameterListType* dinServiceParameterListType) {
+	dinServiceParameterListType->ParameterSet.arrayLen = 0u;
+}
+
+void init_dinCertificateChainType(struct dinCertificateChainType* dinCertificateChainType) {
+	dinCertificateChainType->SubCertificates_isUsed = 0u;
+}
+
+void init_dinPowerDeliveryResType(struct dinPowerDeliveryResType* dinPowerDeliveryResType) {
+	dinPowerDeliveryResType->EVSEStatus_isUsed = 0u;
+	dinPowerDeliveryResType->AC_EVSEStatus_isUsed = 0u;
+	dinPowerDeliveryResType->DC_EVSEStatus_isUsed = 0u;
+}
+
+void init_dinAC_EVSEChargeParameterType(struct dinAC_EVSEChargeParameterType* dinAC_EVSEChargeParameterType) {
+}
+
+void init_dinAnonType_V2G_Message(struct dinAnonType_V2G_Message* dinAnonType_V2G_Message) {
+}
+
+void init_dinConsumptionCostType(struct dinConsumptionCostType* dinConsumptionCostType) {
+	dinConsumptionCostType->Cost.arrayLen = 0u;
+}
+
+void init_dinDC_EVSEStatusType(struct dinDC_EVSEStatusType* dinDC_EVSEStatusType) {
+	dinDC_EVSEStatusType->EVSEIsolationStatus_isUsed = 0u;
+}
+
+void init_dinWeldingDetectionResType(struct dinWeldingDetectionResType* dinWeldingDetectionResType) {
+}
+
+void init_dinSessionSetupReqType(struct dinSessionSetupReqType* dinSessionSetupReqType) {
+}
+
+void init_dinSessionSetupResType(struct dinSessionSetupResType* dinSessionSetupResType) {
+	dinSessionSetupResType->DateTimeNow_isUsed = 0u;
+}
+
+void init_dinServiceDetailResType(struct dinServiceDetailResType* dinServiceDetailResType) {
+	dinServiceDetailResType->ServiceParameterList_isUsed = 0u;
+}
+
+void init_dinSPKIDataType(struct dinSPKIDataType* dinSPKIDataType) {
+	dinSPKIDataType->SPKISexp.arrayLen = 0u;
+}
+
+void init_dinPowerDeliveryReqType(struct dinPowerDeliveryReqType* dinPowerDeliveryReqType) {
+	dinPowerDeliveryReqType->ChargingProfile_isUsed = 0u;
+	dinPowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 0u;
+	dinPowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 0u;
+}
+
+void init_dinPreChargeResType(struct dinPreChargeResType* dinPreChargeResType) {
+}
+
+void init_dinCanonicalizationMethodType(struct dinCanonicalizationMethodType* dinCanonicalizationMethodType) {
+}
+
+void init_dinServiceChargeType(struct dinServiceChargeType* dinServiceChargeType) {
+}
+
+void init_dinEVChargeParameterType(struct dinEVChargeParameterType* dinEVChargeParameterType) {
+}
+
+void init_dinSAScheduleListType(struct dinSAScheduleListType* dinSAScheduleListType) {
+	dinSAScheduleListType->SAScheduleTuple.arrayLen = 0u;
+}
+
+void init_dinSASchedulesType(struct dinSASchedulesType* dinSASchedulesType) {
+}
+
+void init_dinPhysicalValueType(struct dinPhysicalValueType* dinPhysicalValueType) {
+	dinPhysicalValueType->Unit_isUsed = 0u;
+}
+
+void init_dinSAScheduleTupleType(struct dinSAScheduleTupleType* dinSAScheduleTupleType) {
+	dinSAScheduleTupleType->SalesTariff_isUsed = 0u;
+}
+
+void init_dinCertificateUpdateReqType(struct dinCertificateUpdateReqType* dinCertificateUpdateReqType) {
+	dinCertificateUpdateReqType->Id_isUsed = 0u;
+}
+
+void init_dinSignatureMethodType(struct dinSignatureMethodType* dinSignatureMethodType) {
+	dinSignatureMethodType->HMACOutputLength_isUsed = 0u;
+}
+
+void init_dinDigestMethodType(struct dinDigestMethodType* dinDigestMethodType) {
+}
+
+void init_dinKeyValueType(struct dinKeyValueType* dinKeyValueType) {
+	dinKeyValueType->DSAKeyValue_isUsed = 0u;
+	dinKeyValueType->RSAKeyValue_isUsed = 0u;
+}
+
+void init_dinContractAuthenticationReqType(struct dinContractAuthenticationReqType* dinContractAuthenticationReqType) {
+	dinContractAuthenticationReqType->Id_isUsed = 0u;
+	dinContractAuthenticationReqType->GenChallenge_isUsed = 0u;
+}
+
+void init_dinServiceDiscoveryReqType(struct dinServiceDiscoveryReqType* dinServiceDiscoveryReqType) {
+	dinServiceDiscoveryReqType->ServiceScope_isUsed = 0u;
+	dinServiceDiscoveryReqType->ServiceCategory_isUsed = 0u;
+}
+
+void init_dinServiceDetailReqType(struct dinServiceDetailReqType* dinServiceDetailReqType) {
+}
+
+void init_dinSignedInfoType(struct dinSignedInfoType* dinSignedInfoType) {
+	dinSignedInfoType->Id_isUsed = 0u;
+	dinSignedInfoType->Reference.arrayLen = 0u;
+}
+
+void init_dinMeteringReceiptReqType(struct dinMeteringReceiptReqType* dinMeteringReceiptReqType) {
+	dinMeteringReceiptReqType->Id_isUsed = 0u;
+	dinMeteringReceiptReqType->SAScheduleTupleID_isUsed = 0u;
+}
+
+void init_dinX509IssuerSerialType(struct dinX509IssuerSerialType* dinX509IssuerSerialType) {
+}
+
+void init_dinTransformsType(struct dinTransformsType* dinTransformsType) {
+	dinTransformsType->Transform.arrayLen = 0u;
+}
+
+void init_dinParameterType(struct dinParameterType* dinParameterType) {
+	dinParameterType->boolValue_isUsed = 0u;
+	dinParameterType->byteValue_isUsed = 0u;
+	dinParameterType->shortValue_isUsed = 0u;
+	dinParameterType->intValue_isUsed = 0u;
+	dinParameterType->physicalValue_isUsed = 0u;
+	dinParameterType->stringValue_isUsed = 0u;
+}
+
+void init_dinIntervalType(struct dinIntervalType* dinIntervalType) {
+}
+
+void init_dinRelativeTimeIntervalType(struct dinRelativeTimeIntervalType* dinRelativeTimeIntervalType) {
+	dinRelativeTimeIntervalType->duration_isUsed = 0u;
+}
+
+void init_dinKeyInfoType(struct dinKeyInfoType* dinKeyInfoType) {
+	dinKeyInfoType->Id_isUsed = 0u;
+	dinKeyInfoType->KeyName.arrayLen = 0u;
+	dinKeyInfoType->KeyValue.arrayLen = 0u;
+	dinKeyInfoType->RetrievalMethod.arrayLen = 0u;
+	dinKeyInfoType->X509Data.arrayLen = 0u;
+	dinKeyInfoType->PGPData.arrayLen = 0u;
+	dinKeyInfoType->SPKIData.arrayLen = 0u;
+	dinKeyInfoType->MgmtData.arrayLen = 0u;
+}
+
+void init_dinEntryType(struct dinEntryType* dinEntryType) {
+	dinEntryType->TimeInterval_isUsed = 0u;
+	dinEntryType->RelativeTimeInterval_isUsed = 0u;
+}
+
+void init_dinEVStatusType(struct dinEVStatusType* dinEVStatusType) {
+}
+
+void init_dinChargingStatusReqType(struct dinChargingStatusReqType* dinChargingStatusReqType) {
+}
+
+void init_dinChargeParameterDiscoveryResType(struct dinChargeParameterDiscoveryResType* dinChargeParameterDiscoveryResType) {
+	dinChargeParameterDiscoveryResType->SASchedules_isUsed = 0u;
+	dinChargeParameterDiscoveryResType->SAScheduleList_isUsed = 0u;
+	dinChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed = 0u;
+	dinChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 0u;
+	dinChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 0u;
+}
+
+void init_dinPMaxScheduleType(struct dinPMaxScheduleType* dinPMaxScheduleType) {
+	dinPMaxScheduleType->PMaxScheduleEntry.arrayLen = 0u;
+}
+
+void init_dinDC_EVSEChargeParameterType(struct dinDC_EVSEChargeParameterType* dinDC_EVSEChargeParameterType) {
+	dinDC_EVSEChargeParameterType->EVSEMaximumPowerLimit_isUsed = 0u;
+	dinDC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed = 0u;
+	dinDC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed = 0u;
+}
+
+void init_dinCableCheckResType(struct dinCableCheckResType* dinCableCheckResType) {
+}
+
+void init_dinTransformType(struct dinTransformType* dinTransformType) {
+	dinTransformType->XPath.arrayLen = 0u;
+}
+
+void init_dinParameterSetType(struct dinParameterSetType* dinParameterSetType) {
+	dinParameterSetType->Parameter.arrayLen = 0u;
+}
+
+void init_dinSubCertificatesType(struct dinSubCertificatesType* dinSubCertificatesType) {
+	dinSubCertificatesType->Certificate.arrayLen = 0u;
+}
+
+void init_dinDC_EVPowerDeliveryParameterType(struct dinDC_EVPowerDeliveryParameterType* dinDC_EVPowerDeliveryParameterType) {
+	dinDC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed = 0u;
+}
+
+void init_dinPaymentDetailsReqType(struct dinPaymentDetailsReqType* dinPaymentDetailsReqType) {
+}
+
+void init_dinDC_EVChargeParameterType(struct dinDC_EVChargeParameterType* dinDC_EVChargeParameterType) {
+	dinDC_EVChargeParameterType->EVMaximumPowerLimit_isUsed = 0u;
+	dinDC_EVChargeParameterType->EVEnergyCapacity_isUsed = 0u;
+	dinDC_EVChargeParameterType->EVEnergyRequest_isUsed = 0u;
+	dinDC_EVChargeParameterType->FullSOC_isUsed = 0u;
+	dinDC_EVChargeParameterType->BulkSOC_isUsed = 0u;
+}
+
+void init_dinSelectedServiceListType(struct dinSelectedServiceListType* dinSelectedServiceListType) {
+	dinSelectedServiceListType->SelectedService.arrayLen = 0u;
+}
+
+void init_dinServiceDiscoveryResType(struct dinServiceDiscoveryResType* dinServiceDiscoveryResType) {
+	dinServiceDiscoveryResType->ServiceList_isUsed = 0u;
+}
+
+void init_dinPaymentDetailsResType(struct dinPaymentDetailsResType* dinPaymentDetailsResType) {
+}
+
+void init_dinServiceType(struct dinServiceType* dinServiceType) {
+}
+
+void init_dinEVPowerDeliveryParameterType(struct dinEVPowerDeliveryParameterType* dinEVPowerDeliveryParameterType) {
+}
+
+void init_dinBodyBaseType(struct dinBodyBaseType* dinBodyBaseType) {
+}
+
+void init_dinCurrentDemandReqType(struct dinCurrentDemandReqType* dinCurrentDemandReqType) {
+	dinCurrentDemandReqType->EVMaximumVoltageLimit_isUsed = 0u;
+	dinCurrentDemandReqType->EVMaximumCurrentLimit_isUsed = 0u;
+	dinCurrentDemandReqType->EVMaximumPowerLimit_isUsed = 0u;
+	dinCurrentDemandReqType->BulkChargingComplete_isUsed = 0u;
+	dinCurrentDemandReqType->RemainingTimeToFullSoC_isUsed = 0u;
+	dinCurrentDemandReqType->RemainingTimeToBulkSoC_isUsed = 0u;
+}
+
+void init_dinMeteringReceiptResType(struct dinMeteringReceiptResType* dinMeteringReceiptResType) {
+}
+
+void init_dinPaymentOptionsType(struct dinPaymentOptionsType* dinPaymentOptionsType) {
+	dinPaymentOptionsType->PaymentOption.arrayLen = 0u;
+}
+
+void init_dinMessageHeaderType(struct dinMessageHeaderType* dinMessageHeaderType) {
+	dinMessageHeaderType->Notification_isUsed = 0u;
+	dinMessageHeaderType->Signature_isUsed = 0u;
+}
+
+void init_dinAC_EVSEStatusType(struct dinAC_EVSEStatusType* dinAC_EVSEStatusType) {
+}
+
+void init_dinSalesTariffType(struct dinSalesTariffType* dinSalesTariffType) {
+	dinSalesTariffType->SalesTariffDescription_isUsed = 0u;
+	dinSalesTariffType->SalesTariffEntry.arrayLen = 0u;
+}
+
+void init_dinChargeParameterDiscoveryReqType(struct dinChargeParameterDiscoveryReqType* dinChargeParameterDiscoveryReqType) {
+	dinChargeParameterDiscoveryReqType->EVChargeParameter_isUsed = 0u;
+	dinChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 0u;
+	dinChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 0u;
+}
+
+void init_dinServicePaymentSelectionResType(struct dinServicePaymentSelectionResType* dinServicePaymentSelectionResType) {
+}
+
+void init_dinEVSEStatusType(struct dinEVSEStatusType* dinEVSEStatusType) {
+}
+
+void init_dinManifestType(struct dinManifestType* dinManifestType) {
+	dinManifestType->Id_isUsed = 0u;
+	dinManifestType->Reference.arrayLen = 0u;
+}
+
+void init_dinListOfRootCertificateIDsType(struct dinListOfRootCertificateIDsType* dinListOfRootCertificateIDsType) {
+	dinListOfRootCertificateIDsType->RootCertificateID.arrayLen = 0u;
+}
+
+void init_dinServiceTagListType(struct dinServiceTagListType* dinServiceTagListType) {
+	dinServiceTagListType->Service.arrayLen = 0u;
+}
+
+void init_dinRSAKeyValueType(struct dinRSAKeyValueType* dinRSAKeyValueType) {
+}
+
+void init_dinEVSEChargeParameterType(struct dinEVSEChargeParameterType* dinEVSEChargeParameterType) {
+}
+
+void init_dinSignaturePropertiesType(struct dinSignaturePropertiesType* dinSignaturePropertiesType) {
+	dinSignaturePropertiesType->Id_isUsed = 0u;
+	dinSignaturePropertiesType->SignatureProperty.arrayLen = 0u;
+}
+
+void init_dinDSAKeyValueType(struct dinDSAKeyValueType* dinDSAKeyValueType) {
+	dinDSAKeyValueType->P_isUsed = 0u;
+	dinDSAKeyValueType->Q_isUsed = 0u;
+	dinDSAKeyValueType->G_isUsed = 0u;
+	dinDSAKeyValueType->J_isUsed = 0u;
+	dinDSAKeyValueType->Seed_isUsed = 0u;
+	dinDSAKeyValueType->PgenCounter_isUsed = 0u;
+}
+
+void init_dinProfileEntryType(struct dinProfileEntryType* dinProfileEntryType) {
+}
+
+void init_dinSignatureValueType(struct dinSignatureValueType* dinSignatureValueType) {
+	dinSignatureValueType->Id_isUsed = 0u;
+}
+
+void init_dinSessionStopResType(struct dinSessionStopResType* dinSessionStopResType) {
+}
+
+void init_dinMeterInfoType(struct dinMeterInfoType* dinMeterInfoType) {
+	dinMeterInfoType->MeterReading_isUsed = 0u;
+	dinMeterInfoType->SigMeterReading_isUsed = 0u;
+	dinMeterInfoType->MeterStatus_isUsed = 0u;
+	dinMeterInfoType->TMeter_isUsed = 0u;
+}
+
+void init_dinSalesTariffEntryType(struct dinSalesTariffEntryType* dinSalesTariffEntryType) {
+	dinSalesTariffEntryType->TimeInterval_isUsed = 0u;
+	dinSalesTariffEntryType->RelativeTimeInterval_isUsed = 0u;
+	dinSalesTariffEntryType->ConsumptionCost.arrayLen = 0u;
+}
+
+void init_dinSessionStopType(struct dinSessionStopType* dinSessionStopType) {
+}
+
+void init_dinSignaturePropertyType(struct dinSignaturePropertyType* dinSignaturePropertyType) {
+	dinSignaturePropertyType->Id_isUsed = 0u;
+}
+
+void init_dinSignatureType(struct dinSignatureType* dinSignatureType) {
+	dinSignatureType->Id_isUsed = 0u;
+	dinSignatureType->KeyInfo_isUsed = 0u;
+	dinSignatureType->Object.arrayLen = 0u;
+}
+
+
+
+#endif /* DEPLOY_DIN_CODEC */
+
+#endif
+

+ 2181 - 0
src/din/dinEXIDatatypes.h

@@ -0,0 +1,2181 @@
+/*
+ * Copyright (C) 2007-2014 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.9.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * <p>Code generated by EXIdizer</p>
+ * <p>Schema: V2G_CI_MsgDef.xsd</p>
+ *
+ *
+ ********************************************************************/
+
+
+
+/**
+ * \file 	EXIDatatypes.h
+ * \brief 	Datatype definitions and structs for given XML Schema definitions and initialization methods
+ *
+ */
+
+#ifndef EXI_din_DATATYPES_H
+#define EXI_din_DATATYPES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SUPPORT_YES 1
+#define SUPPORT_NO 2
+#define DEPLOY_DIN_CODEC SUPPORT_NO
+
+#if DEPLOY_DIN_CODEC == SUPPORT_YES
+
+
+#include <stdint.h>
+
+#include "EXITypes.h"
+
+
+/* Datatype definitions and structs for given XML Schema definitions */
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ObjectType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##any])){0-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+#define dinObjectType_Id_CHARACTERS_SIZE 50
+#define dinObjectType_MimeType_CHARACTERS_SIZE 50
+#define dinObjectType_Encoding_CHARACTERS_SIZE 50
+struct dinObjectType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */
+	struct {
+		exi_string_character_t characters[dinObjectType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* attribute: MimeType {http://www.w3.org/2001/XMLSchema,string} */
+	struct {
+		exi_string_character_t characters[dinObjectType_MimeType_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  MimeType ;
+	unsigned int MimeType_isUsed:1;
+	/* attribute: Encoding {http://www.w3.org/2001/XMLSchema,anyURI} */
+	struct {
+		exi_string_character_t characters[dinObjectType_Encoding_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Encoding ;
+	unsigned int Encoding_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SelectedServiceType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ServiceID,"urn:iso:15118:2:2010:MsgDataTypes":ParameterSetID{0-1})',  derivedBy='RESTRICTION'.  */
+struct dinSelectedServiceType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ServiceID, urn:iso:15118:2:2010:MsgDataTypes,serviceIDType */
+	uint16_t ServiceID ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ParameterSetID, http://www.w3.org/2001/XMLSchema,short */
+	int16_t ParameterSetID ;
+	unsigned int ParameterSetID_isUsed:1;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,PGPDataType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("http://www.w3.org/2000/09/xmldsig#":PGPKeyID,"http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})|("http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED}))',  derivedBy='RESTRICTION'.  */
+#define dinPGPDataType_PGPKeyID_BYTES_SIZE 350
+#define dinPGPDataType_PGPKeyPacket_BYTES_SIZE 350
+struct dinPGPDataType {
+	/* element: "http://www.w3.org/2000/09/xmldsig#":PGPKeyID, http://www.w3.org/2001/XMLSchema,base64Binary */
+	struct {
+		uint8_t bytes[dinPGPDataType_PGPKeyID_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  PGPKeyID ;
+	unsigned int PGPKeyID_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket, http://www.w3.org/2001/XMLSchema,base64Binary */
+	struct {
+		uint8_t bytes[dinPGPDataType_PGPKeyPacket_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  PGPKeyPacket ;
+	unsigned int PGPKeyPacket_isUsed:1;
+};
+
+typedef enum {
+	responseCodeType_OK = 0,
+	responseCodeType_OK_NewSessionEstablished = 1,
+	responseCodeType_OK_OldSessionJoined = 2,
+	responseCodeType_OK_CertificateExpiresSoon = 3,
+	responseCodeType_FAILED = 4,
+	responseCodeType_FAILED_SequenceError = 5,
+	responseCodeType_FAILED_ServiceIDInvalid = 6,
+	responseCodeType_FAILED_UnknownSession = 7,
+	responseCodeType_FAILED_ServiceSelectionInvalid = 8,
+	responseCodeType_FAILED_PaymentSelectionInvalid = 9,
+	responseCodeType_FAILED_CertificateExpired = 10,
+	responseCodeType_FAILED_SignatureError = 11,
+	responseCodeType_FAILED_NoCertificateAvailable = 12,
+	responseCodeType_FAILED_CertChainError = 13,
+	responseCodeType_FAILED_ChallengeInvalid = 14,
+	responseCodeType_FAILED_ContractCanceled = 15,
+	responseCodeType_FAILED_WrongChargeParameter = 16,
+	responseCodeType_FAILED_PowerDeliveryNotApplied = 17,
+	responseCodeType_FAILED_TariffSelectionInvalid = 18,
+	responseCodeType_FAILED_ChargingProfileInvalid = 19,
+	responseCodeType_FAILED_EVSEPresentVoltageToLow = 20,
+	responseCodeType_FAILED_MeteringSignatureNotValid = 21,
+	responseCodeType_FAILED_WrongEnergyTransferType = 22
+} dinresponseCodeType;
+
+typedef enum {
+	DC_EVErrorCodeType_NO_ERROR = 0,
+	DC_EVErrorCodeType_FAILED_RESSTemperatureInhibit = 1,
+	DC_EVErrorCodeType_FAILED_EVShiftPosition = 2,
+	DC_EVErrorCodeType_FAILED_ChargerConnectorLockFault = 3,
+	DC_EVErrorCodeType_FAILED_EVRESSMalfunction = 4,
+	DC_EVErrorCodeType_FAILED_ChargingCurrentdifferential = 5,
+	DC_EVErrorCodeType_FAILED_ChargingVoltageOutOfRange = 6,
+	DC_EVErrorCodeType_Reserved_A = 7,
+	DC_EVErrorCodeType_Reserved_B = 8,
+	DC_EVErrorCodeType_Reserved_C = 9,
+	DC_EVErrorCodeType_FAILED_ChargingSystemIncompatibility = 10,
+	DC_EVErrorCodeType_NoData = 11
+} dinDC_EVErrorCodeType;
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,SessionSetupReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":EVCCID)',  derivedBy='EXTENSION'.  */
+#define dinSessionSetupReqType_EVCCID_BYTES_SIZE 8 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,evccIDType is 8 */
+struct dinSessionSetupReqType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVCCID, urn:iso:15118:2:2010:MsgDataTypes,evccIDType */
+	struct {
+		uint8_t bytes[dinSessionSetupReqType_EVCCID_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  EVCCID ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,SessionSetupResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":EVSEID,"urn:iso:15118:2:2010:MsgBody":DateTimeNow{0-1})',  derivedBy='EXTENSION'.  */
+#define dinSessionSetupResType_EVSEID_BYTES_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,evseIDType is 32 */
+struct dinSessionSetupResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEID, urn:iso:15118:2:2010:MsgDataTypes,evseIDType */
+	struct {
+		uint8_t bytes[dinSessionSetupResType_EVSEID_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  EVSEID ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":DateTimeNow, http://www.w3.org/2001/XMLSchema,long */
+	int64_t DateTimeNow ;
+	unsigned int DateTimeNow_isUsed:1;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SPKIDataType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":SPKISexp,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-1}){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+#define dinSPKIDataType_SPKISexp_BYTES_SIZE 350
+#define dinSPKIDataType_SPKISexp_ARRAY_SIZE 1
+struct dinSPKIDataType {
+	/* element: "http://www.w3.org/2000/09/xmldsig#":SPKISexp, http://www.w3.org/2001/XMLSchema,base64Binary */
+	struct {
+		struct {
+			uint8_t bytes[dinSPKIDataType_SPKISexp_BYTES_SIZE];
+			uint16_t bytesLen;
+		}  array[dinSPKIDataType_SPKISexp_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} SPKISexp;
+};
+
+typedef enum {
+	costKindType_relativePricePercentage = 0,
+	costKindType_RenewableGenerationPercentage = 1,
+	costKindType_CarbonDioxideEmission = 2
+} dincostKindType;
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,CanonicalizationMethodType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##any]){0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinCanonicalizationMethodType_Algorithm_CHARACTERS_SIZE 50
+struct dinCanonicalizationMethodType {
+	/* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */
+	struct {
+		exi_string_character_t characters[dinCanonicalizationMethodType_Algorithm_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Algorithm ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,EVChargeParameterType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+struct dinEVChargeParameterType {
+	int noContent; /* avoid warning */
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SASchedulesType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+struct dinSASchedulesType {
+	int noContent; /* avoid warning */
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureMethodType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":HMACOutputLength{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinSignatureMethodType_Algorithm_CHARACTERS_SIZE 50
+struct dinSignatureMethodType {
+	/* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */
+	struct {
+		exi_string_character_t characters[dinSignatureMethodType_Algorithm_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Algorithm ;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":HMACOutputLength, http://www.w3.org/2000/09/xmldsig#,HMACOutputLengthType */
+	int64_t HMACOutputLength ;
+	unsigned int HMACOutputLength_isUsed:1;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,DigestMethodType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinDigestMethodType_Algorithm_CHARACTERS_SIZE 50
+struct dinDigestMethodType {
+	/* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */
+	struct {
+		exi_string_character_t characters[dinDigestMethodType_Algorithm_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Algorithm ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ContractAuthenticationReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":GenChallenge{0-1})',  derivedBy='EXTENSION'.  */
+#define dinContractAuthenticationReqType_Id_CHARACTERS_SIZE 50
+#define dinContractAuthenticationReqType_GenChallenge_CHARACTERS_SIZE 50 
+struct dinContractAuthenticationReqType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,IDREF} */
+	struct {
+		exi_string_character_t characters[dinContractAuthenticationReqType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":GenChallenge, urn:iso:15118:2:2010:MsgDataTypes,genChallengeType */
+	struct {
+		exi_string_character_t characters[dinContractAuthenticationReqType_GenChallenge_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  GenChallenge ;
+	unsigned int GenChallenge_isUsed:1;
+};
+
+typedef enum {
+	EVSENotificationType_None = 0,
+	EVSENotificationType_StopCharging = 1,
+	EVSENotificationType_ReNegotiation = 2
+} dinEVSENotificationType;
+
+typedef enum {
+	EVSESupportedEnergyTransferType_AC_single_phase_core = 0,
+	EVSESupportedEnergyTransferType_AC_three_phase_core = 1,
+	EVSESupportedEnergyTransferType_DC_core = 2,
+	EVSESupportedEnergyTransferType_DC_extended = 3,
+	EVSESupportedEnergyTransferType_DC_combo_core = 4,
+	EVSESupportedEnergyTransferType_DC_dual = 5,
+	EVSESupportedEnergyTransferType_AC_core1p_DC_extended = 6,
+	EVSESupportedEnergyTransferType_AC_single_DC_core = 7,
+	EVSESupportedEnergyTransferType_AC_single_phase_three_phase_core_DC_extended = 8,
+	EVSESupportedEnergyTransferType_AC_core3p_DC_extended = 9
+} dinEVSESupportedEnergyTransferType;
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ServiceDetailReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ServiceID)',  derivedBy='EXTENSION'.  */
+struct dinServiceDetailReqType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ServiceID, urn:iso:15118:2:2010:MsgDataTypes,serviceIDType */
+	uint16_t ServiceID ;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509IssuerSerialType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":X509IssuerName,"http://www.w3.org/2000/09/xmldsig#":X509SerialNumber)',  derivedBy='RESTRICTION'.  */
+#define dinX509IssuerSerialType_X509IssuerName_CHARACTERS_SIZE 50
+struct dinX509IssuerSerialType {
+	/* element: "http://www.w3.org/2000/09/xmldsig#":X509IssuerName, http://www.w3.org/2001/XMLSchema,string */
+	struct {
+		exi_string_character_t characters[dinX509IssuerSerialType_X509IssuerName_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  X509IssuerName ;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":X509SerialNumber, http://www.w3.org/2001/XMLSchema,integer */
+	int64_t X509SerialNumber ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,IntervalType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+struct dinIntervalType {
+	int noContent; /* avoid warning */
+};
+
+typedef enum {
+	faultCodeType_ParsingError = 0,
+	faultCodeType_NoTLSRootCertificatAvailable = 1,
+	faultCodeType_UnknownError = 2
+} dinfaultCodeType;
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,RelativeTimeIntervalType',  base type name='IntervalType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":start,"urn:iso:15118:2:2010:MsgDataTypes":duration{0-1})',  derivedBy='EXTENSION'.  */
+struct dinRelativeTimeIntervalType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":start, http://www.w3.org/2001/XMLSchema,unsignedInt */
+	uint32_t start ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":duration, http://www.w3.org/2001/XMLSchema,unsignedInt */
+	uint32_t duration ;
+	unsigned int duration_isUsed:1;
+};
+
+typedef enum {
+	paymentOptionType_Contract = 0,
+	paymentOptionType_ExternalPayment = 1
+} dinpaymentOptionType;
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,EntryType',  base type name='anyType',  content type='ELEMENT',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":TimeInterval)',  derivedBy='RESTRICTION'.  */
+struct dinEntryType {
+	union { /* substitutionGroup */
+		/* element: "urn:iso:15118:2:2010:MsgDataTypes":TimeInterval, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,IntervalType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+		struct dinIntervalType TimeInterval ;
+		/* element: "urn:iso:15118:2:2010:MsgDataTypes":RelativeTimeInterval, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,RelativeTimeIntervalType',  base type name='IntervalType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":start,"urn:iso:15118:2:2010:MsgDataTypes":duration{0-1})',  derivedBy='EXTENSION'.  */
+		struct dinRelativeTimeIntervalType RelativeTimeInterval ;
+	}; /* union */
+		unsigned int TimeInterval_isUsed:1;
+		unsigned int RelativeTimeInterval_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ChargingStatusReqType',  base type name='BodyBaseType',  content type='EMPTY',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
+struct dinChargingStatusReqType {
+	int noContent; /* avoid warning */
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,EVStatusType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+struct dinEVStatusType {
+	int noContent; /* avoid warning */
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])|"http://www.w3.org/2000/09/xmldsig#":XPath){0-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+#define dinTransformType_Algorithm_CHARACTERS_SIZE 50
+#define dinTransformType_XPath_CHARACTERS_SIZE 50
+#define dinTransformType_XPath_ARRAY_SIZE 1
+struct dinTransformType {
+	/* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */
+	struct {
+		exi_string_character_t characters[dinTransformType_Algorithm_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Algorithm ;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":XPath, http://www.w3.org/2001/XMLSchema,string */
+	struct {
+		struct {
+			exi_string_character_t characters[dinTransformType_XPath_CHARACTERS_SIZE];
+			uint16_t charactersLen;
+		}  array[dinTransformType_XPath_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} XPath;
+};
+
+typedef enum {
+	isolationLevelType_Invalid = 0,
+	isolationLevelType_Valid = 1,
+	isolationLevelType_Warning = 2,
+	isolationLevelType_Fault = 3
+} dinisolationLevelType;
+
+typedef enum {
+	valueType_bool = 0,
+	valueType_byte = 1,
+	valueType_short = 2,
+	valueType_int = 3,
+	valueType_physicalValue = 4,
+	valueType_string = 5
+} dinvalueType;
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SubCertificatesType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Certificate{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinSubCertificatesType_Certificate_BYTES_SIZE 1200 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,certificateType is 1200 */
+#define dinSubCertificatesType_Certificate_ARRAY_SIZE 5
+struct dinSubCertificatesType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":Certificate, urn:iso:15118:2:2010:MsgDataTypes,certificateType */
+	struct {
+		struct {
+			uint8_t bytes[dinSubCertificatesType_Certificate_BYTES_SIZE];
+			uint16_t bytesLen;
+		}  array[dinSubCertificatesType_Certificate_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} Certificate;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SelectedServiceListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":SelectedService{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinSelectedServiceListType_SelectedService_ARRAY_SIZE 5
+struct dinSelectedServiceListType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SelectedService, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SelectedServiceType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ServiceID,"urn:iso:15118:2:2010:MsgDataTypes":ParameterSetID{0-1})',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinSelectedServiceType array[dinSelectedServiceListType_SelectedService_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} SelectedService;
+};
+
+typedef enum {
+	DC_EVSEStatusCodeType_EVSE_NotReady = 0,
+	DC_EVSEStatusCodeType_EVSE_Ready = 1,
+	DC_EVSEStatusCodeType_EVSE_Shutdown = 2,
+	DC_EVSEStatusCodeType_EVSE_UtilityInterruptEvent = 3,
+	DC_EVSEStatusCodeType_EVSE_IsolationMonitoringActive = 4,
+	DC_EVSEStatusCodeType_EVSE_EmergencyShutdown = 5,
+	DC_EVSEStatusCodeType_EVSE_Malfunction = 6,
+	DC_EVSEStatusCodeType_Reserved_8 = 7,
+	DC_EVSEStatusCodeType_Reserved_9 = 8,
+	DC_EVSEStatusCodeType_Reserved_A = 9,
+	DC_EVSEStatusCodeType_Reserved_B = 10,
+	DC_EVSEStatusCodeType_Reserved_C = 11
+} dinDC_EVSEStatusCodeType;
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,PaymentDetailsResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":GenChallenge,"urn:iso:15118:2:2010:MsgBody":DateTimeNow)',  derivedBy='EXTENSION'.  */
+#define dinPaymentDetailsResType_GenChallenge_CHARACTERS_SIZE 50
+struct dinPaymentDetailsResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":GenChallenge, urn:iso:15118:2:2010:MsgDataTypes,genChallengeType */
+	struct {
+		exi_string_character_t characters[dinPaymentDetailsResType_GenChallenge_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  GenChallenge ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":DateTimeNow, http://www.w3.org/2001/XMLSchema,long */
+	int64_t DateTimeNow ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,EVPowerDeliveryParameterType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+struct dinEVPowerDeliveryParameterType {
+	int noContent; /* avoid warning */
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDef,BodyBaseType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+struct dinBodyBaseType {
+	int noContent; /* avoid warning */
+};
+
+typedef enum {
+	EVSEProcessingType_Finished = 0,
+	EVSEProcessingType_Ongoing = 1
+} dinEVSEProcessingType;
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PaymentOptionsType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":PaymentOption{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinPaymentOptionsType_PaymentOption_ARRAY_SIZE 5
+struct dinPaymentOptionsType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":PaymentOption, urn:iso:15118:2:2010:MsgDataTypes,paymentOptionType */
+	struct {
+		dinpaymentOptionType array[dinPaymentOptionsType_PaymentOption_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} PaymentOption;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,AC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":PowerSwitchClosed,"urn:iso:15118:2:2010:MsgDataTypes":RCD,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+struct dinAC_EVSEStatusType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":PowerSwitchClosed, http://www.w3.org/2001/XMLSchema,boolean */
+	int PowerSwitchClosed ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":RCD, http://www.w3.org/2001/XMLSchema,boolean */
+	int RCD ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay, http://www.w3.org/2001/XMLSchema,unsignedInt */
+	uint32_t NotificationMaxDelay ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSENotification, urn:iso:15118:2:2010:MsgDataTypes,EVSENotificationType */
+	dinEVSENotificationType EVSENotification ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ServicePaymentSelectionResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode)',  derivedBy='EXTENSION'.  */
+struct dinServicePaymentSelectionResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,EVSEStatusType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+struct dinEVSEStatusType {
+	int noContent; /* avoid warning */
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ListOfRootCertificateIDsType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":RootCertificateID{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinListOfRootCertificateIDsType_RootCertificateID_CHARACTERS_SIZE 40 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,rootCertificateIDType is 40 */
+#define dinListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE 5
+struct dinListOfRootCertificateIDsType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":RootCertificateID, urn:iso:15118:2:2010:MsgDataTypes,rootCertificateIDType */
+	struct {
+		struct {
+			exi_string_character_t characters[dinListOfRootCertificateIDsType_RootCertificateID_CHARACTERS_SIZE];
+			uint16_t charactersLen;
+		}  array[dinListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} RootCertificateID;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,RSAKeyValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Modulus,"http://www.w3.org/2000/09/xmldsig#":Exponent)',  derivedBy='RESTRICTION'.  */
+#define dinRSAKeyValueType_Modulus_BYTES_SIZE 350
+#define dinRSAKeyValueType_Exponent_BYTES_SIZE 350
+struct dinRSAKeyValueType {
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Modulus, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */
+	struct {
+		uint8_t bytes[dinRSAKeyValueType_Modulus_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  Modulus ;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Exponent, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */
+	struct {
+		uint8_t bytes[dinRSAKeyValueType_Exponent_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  Exponent ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,EVSEChargeParameterType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+struct dinEVSEChargeParameterType {
+	int noContent; /* avoid warning */
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,DSAKeyValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("http://www.w3.org/2000/09/xmldsig#":P,"http://www.w3.org/2000/09/xmldsig#":Q){0-1},"http://www.w3.org/2000/09/xmldsig#":G{0-1},"http://www.w3.org/2000/09/xmldsig#":Y,"http://www.w3.org/2000/09/xmldsig#":J{0-1},("http://www.w3.org/2000/09/xmldsig#":Seed,"http://www.w3.org/2000/09/xmldsig#":PgenCounter){0-1})',  derivedBy='RESTRICTION'.  */
+#define dinDSAKeyValueType_P_BYTES_SIZE 350 
+#define dinDSAKeyValueType_Q_BYTES_SIZE 350 
+#define dinDSAKeyValueType_G_BYTES_SIZE 350 
+#define dinDSAKeyValueType_Y_BYTES_SIZE 350 
+#define dinDSAKeyValueType_J_BYTES_SIZE 350 
+#define dinDSAKeyValueType_Seed_BYTES_SIZE 350 
+#define dinDSAKeyValueType_PgenCounter_BYTES_SIZE 350 
+struct dinDSAKeyValueType {
+	/* element: "http://www.w3.org/2000/09/xmldsig#":P, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */
+	struct {
+		uint8_t bytes[dinDSAKeyValueType_P_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  P ;
+	unsigned int P_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Q, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */
+	struct {
+		uint8_t bytes[dinDSAKeyValueType_Q_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  Q ;
+	unsigned int Q_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":G, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */
+	struct {
+		uint8_t bytes[dinDSAKeyValueType_G_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  G ;
+	unsigned int G_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Y, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */
+	struct {
+		uint8_t bytes[dinDSAKeyValueType_Y_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  Y ;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":J, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */
+	struct {
+		uint8_t bytes[dinDSAKeyValueType_J_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  J ;
+	unsigned int J_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Seed, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */
+	struct {
+		uint8_t bytes[dinDSAKeyValueType_Seed_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  Seed ;
+	unsigned int Seed_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":PgenCounter, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */
+	struct {
+		uint8_t bytes[dinDSAKeyValueType_PgenCounter_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  PgenCounter ;
+	unsigned int PgenCounter_isUsed:1;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureValueType',  base type name='base64Binary',  content type='SIMPLE',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
+#define dinSignatureValueType_Id_CHARACTERS_SIZE 50
+#define dinSignatureValueType_CONTENT_BYTES_SIZE 350
+struct dinSignatureValueType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */
+	struct {
+		exi_string_character_t characters[dinSignatureValueType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* simple content: http://www.w3.org/2001/XMLSchema,base64Binary */
+	struct {
+		uint8_t bytes[dinSignatureValueType_CONTENT_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  CONTENT ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ProfileEntryType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ChargingProfileEntryStart,"urn:iso:15118:2:2010:MsgDataTypes":ChargingProfileEntryMaxPower)',  derivedBy='RESTRICTION'.  */
+struct dinProfileEntryType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ChargingProfileEntryStart, http://www.w3.org/2001/XMLSchema,unsignedInt */
+	uint32_t ChargingProfileEntryStart ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ChargingProfileEntryMaxPower, urn:iso:15118:2:2010:MsgDataTypes,PMaxType */
+	int16_t ChargingProfileEntryMaxPower ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,SessionStopResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode)',  derivedBy='EXTENSION'.  */
+struct dinSessionStopResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+};
+
+typedef enum {
+	serviceCategoryType_EVCharging = 0,
+	serviceCategoryType_Internet = 1,
+	serviceCategoryType_ContractCertificate = 2,
+	serviceCategoryType_OtherCustom = 3
+} dinserviceCategoryType;
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertyType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+#define dinSignaturePropertyType_Target_CHARACTERS_SIZE 50
+#define dinSignaturePropertyType_Id_CHARACTERS_SIZE 50
+struct dinSignaturePropertyType {
+	/* attribute: Target {http://www.w3.org/2001/XMLSchema,anyURI} */
+	struct {
+		exi_string_character_t characters[dinSignaturePropertyType_Target_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Target ;
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */
+	struct {
+		exi_string_character_t characters[dinSignaturePropertyType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,SessionStopType',  base type name='BodyBaseType',  content type='EMPTY',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
+struct dinSessionStopType {
+	int noContent; /* avoid warning */
+};
+
+typedef enum {
+	EVRequestedEnergyTransferType_AC_single_phase_core = 0,
+	EVRequestedEnergyTransferType_AC_three_phase_core = 1,
+	EVRequestedEnergyTransferType_DC_core = 2,
+	EVRequestedEnergyTransferType_DC_extended = 3,
+	EVRequestedEnergyTransferType_DC_combo_core = 4,
+	EVRequestedEnergyTransferType_DC_unique = 5
+} dinEVRequestedEnergyTransferType;
+
+typedef enum {
+	unitSymbolType_h = 0,
+	unitSymbolType_m = 1,
+	unitSymbolType_s = 2,
+	unitSymbolType_A = 3,
+	unitSymbolType_Ah = 4,
+	unitSymbolType_V = 5,
+	unitSymbolType_VA = 6,
+	unitSymbolType_W = 7,
+	unitSymbolType_W_s = 8,
+	unitSymbolType_Wh = 9
+} dinunitSymbolType;
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,NotificationType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":FaultCode,"urn:iso:15118:2:2010:MsgDataTypes":FaultMsg{0-1})',  derivedBy='RESTRICTION'.  */
+#define dinNotificationType_FaultMsg_CHARACTERS_SIZE 64 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,faultMsgType is 64 */
+struct dinNotificationType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":FaultCode, urn:iso:15118:2:2010:MsgDataTypes,faultCodeType */
+	dinfaultCodeType FaultCode ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":FaultMsg, urn:iso:15118:2:2010:MsgDataTypes,faultMsgType */
+	struct {
+		exi_string_character_t characters[dinNotificationType_FaultMsg_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  FaultMsg ;
+	unsigned int FaultMsg_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ServiceTagType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ServiceID,"urn:iso:15118:2:2010:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2010:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2010:MsgDataTypes":ServiceScope{0-1})',  derivedBy='RESTRICTION'.  */
+#define dinServiceTagType_ServiceName_CHARACTERS_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,serviceNameType is 32 */
+#define dinServiceTagType_ServiceScope_CHARACTERS_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,serviceScopeType is 32 */
+struct dinServiceTagType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ServiceID, urn:iso:15118:2:2010:MsgDataTypes,serviceIDType */
+	uint16_t ServiceID ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ServiceName, urn:iso:15118:2:2010:MsgDataTypes,serviceNameType */
+	struct {
+		exi_string_character_t characters[dinServiceTagType_ServiceName_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  ServiceName ;
+	unsigned int ServiceName_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ServiceCategory, urn:iso:15118:2:2010:MsgDataTypes,serviceCategoryType */
+	dinserviceCategoryType ServiceCategory ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ServiceScope, urn:iso:15118:2:2010:MsgDataTypes,serviceScopeType */
+	struct {
+		exi_string_character_t characters[dinServiceTagType_ServiceScope_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  ServiceScope ;
+	unsigned int ServiceScope_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,CostType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":costKind,"urn:iso:15118:2:2010:MsgDataTypes":amount,"urn:iso:15118:2:2010:MsgDataTypes":amountMultiplier{0-1})',  derivedBy='RESTRICTION'.  */
+struct dinCostType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":costKind, urn:iso:15118:2:2010:MsgDataTypes,costKindType */
+	dincostKindType costKind ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":amount, http://www.w3.org/2001/XMLSchema,unsignedInt */
+	uint32_t amount ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":amountMultiplier, urn:iso:15118:2:2010:MsgDataTypes,unitMultiplierType */
+	int8_t amountMultiplier ;
+	unsigned int amountMultiplier_isUsed:1;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509DataType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("http://www.w3.org/2000/09/xmldsig#":X509IssuerSerial|"http://www.w3.org/2000/09/xmldsig#":X509SKI|"http://www.w3.org/2000/09/xmldsig#":X509SubjectName|"http://www.w3.org/2000/09/xmldsig#":X509Certificate|"http://www.w3.org/2000/09/xmldsig#":X509CRL|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+#define dinX509DataType_X509IssuerSerial_ARRAY_SIZE 1
+#define dinX509DataType_X509SKI_BYTES_SIZE 350
+#define dinX509DataType_X509SKI_ARRAY_SIZE 1
+#define dinX509DataType_X509SubjectName_CHARACTERS_SIZE 50
+#define dinX509DataType_X509SubjectName_ARRAY_SIZE 1
+#define dinX509DataType_X509Certificate_BYTES_SIZE 350
+#define dinX509DataType_X509Certificate_ARRAY_SIZE 1
+#define dinX509DataType_X509CRL_BYTES_SIZE 350
+#define dinX509DataType_X509CRL_ARRAY_SIZE 1
+struct dinX509DataType {
+	/* element: "http://www.w3.org/2000/09/xmldsig#":X509IssuerSerial, Complex type name='http://www.w3.org/2000/09/xmldsig#,X509IssuerSerialType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":X509IssuerName,"http://www.w3.org/2000/09/xmldsig#":X509SerialNumber)',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinX509IssuerSerialType array[dinX509DataType_X509IssuerSerial_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} X509IssuerSerial;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":X509SKI, http://www.w3.org/2001/XMLSchema,base64Binary */
+	struct {
+		struct {
+			uint8_t bytes[dinX509DataType_X509SKI_BYTES_SIZE];
+			uint16_t bytesLen;
+		}  array[dinX509DataType_X509SKI_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} X509SKI;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":X509SubjectName, http://www.w3.org/2001/XMLSchema,string */
+	struct {
+		struct {
+			exi_string_character_t characters[dinX509DataType_X509SubjectName_CHARACTERS_SIZE];
+			uint16_t charactersLen;
+		}  array[dinX509DataType_X509SubjectName_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} X509SubjectName;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":X509Certificate, http://www.w3.org/2001/XMLSchema,base64Binary */
+	struct {
+		struct {
+			uint8_t bytes[dinX509DataType_X509Certificate_BYTES_SIZE];
+			uint16_t bytesLen;
+		}  array[dinX509DataType_X509Certificate_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} X509Certificate;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":X509CRL, http://www.w3.org/2001/XMLSchema,base64Binary */
+	struct {
+		struct {
+			uint8_t bytes[dinX509DataType_X509CRL_BYTES_SIZE];
+			uint16_t bytesLen;
+		}  array[dinX509DataType_X509CRL_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} X509CRL;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,CertificateInstallationReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":OEMProvisioningCert,"urn:iso:15118:2:2010:MsgBody":ListOfRootCertificateIDs,"urn:iso:15118:2:2010:MsgBody":DHParams)',  derivedBy='EXTENSION'.  */
+#define dinCertificateInstallationReqType_Id_CHARACTERS_SIZE 50
+#define dinCertificateInstallationReqType_OEMProvisioningCert_BYTES_SIZE 1200 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,certificateType is 1200 */
+#define dinCertificateInstallationReqType_DHParams_BYTES_SIZE 256 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,dHParamsType is 256 */
+struct dinCertificateInstallationReqType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,IDREF} */
+	struct {
+		exi_string_character_t characters[dinCertificateInstallationReqType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":OEMProvisioningCert, urn:iso:15118:2:2010:MsgDataTypes,certificateType */
+	struct {
+		uint8_t bytes[dinCertificateInstallationReqType_OEMProvisioningCert_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  OEMProvisioningCert ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ListOfRootCertificateIDs, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ListOfRootCertificateIDsType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":RootCertificateID{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinListOfRootCertificateIDsType ListOfRootCertificateIDs ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":DHParams, urn:iso:15118:2:2010:MsgDataTypes,dHParamsType */
+	struct {
+		uint8_t bytes[dinCertificateInstallationReqType_DHParams_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  DHParams ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ContractAuthenticationResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":EVSEProcessing)',  derivedBy='EXTENSION'.  */
+struct dinContractAuthenticationResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEProcessing, urn:iso:15118:2:2010:MsgDataTypes,EVSEProcessingType */
+	dinEVSEProcessingType EVSEProcessing ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ChargingProfileType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":SAScheduleTupleID,"urn:iso:15118:2:2010:MsgDataTypes":ProfileEntry{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinChargingProfileType_ProfileEntry_ARRAY_SIZE 5
+struct dinChargingProfileType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SAScheduleTupleID, urn:iso:15118:2:2010:MsgDataTypes,SAIDType */
+	int16_t SAScheduleTupleID ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ProfileEntry, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ProfileEntryType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ChargingProfileEntryStart,"urn:iso:15118:2:2010:MsgDataTypes":ChargingProfileEntryMaxPower)',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinProfileEntryType array[dinChargingProfileType_ProfileEntry_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} ProfileEntry;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PMaxScheduleEntryType',  base type name='EntryType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2010:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2010:MsgDataTypes":PMax))',  derivedBy='EXTENSION'.  */
+struct dinPMaxScheduleEntryType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":TimeInterval, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,IntervalType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+	struct dinIntervalType TimeInterval ;
+	unsigned int TimeInterval_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":RelativeTimeInterval, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,RelativeTimeIntervalType',  base type name='IntervalType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":start,"urn:iso:15118:2:2010:MsgDataTypes":duration{0-1})',  derivedBy='EXTENSION'.  */
+	struct dinRelativeTimeIntervalType RelativeTimeInterval ;
+	unsigned int RelativeTimeInterval_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":PMax, urn:iso:15118:2:2010:MsgDataTypes,PMaxType */
+	int16_t PMax ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ServicePaymentSelectionReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":SelectedPaymentOption,"urn:iso:15118:2:2010:MsgBody":SelectedServiceList)',  derivedBy='EXTENSION'.  */
+struct dinServicePaymentSelectionReqType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":SelectedPaymentOption, urn:iso:15118:2:2010:MsgDataTypes,paymentOptionType */
+	dinpaymentOptionType SelectedPaymentOption ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":SelectedServiceList, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SelectedServiceListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":SelectedService{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinSelectedServiceListType SelectedServiceList ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVStatusType',  base type name='EVStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVReady,"urn:iso:15118:2:2010:MsgDataTypes":EVCabinConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVRESSConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2010:MsgDataTypes":EVRESSSOC)',  derivedBy='EXTENSION'.  */
+struct dinDC_EVStatusType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVReady, http://www.w3.org/2001/XMLSchema,boolean */
+	int EVReady ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVCabinConditioning, http://www.w3.org/2001/XMLSchema,boolean */
+	int EVCabinConditioning ;
+	unsigned int EVCabinConditioning_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVRESSConditioning, http://www.w3.org/2001/XMLSchema,boolean */
+	int EVRESSConditioning ;
+	unsigned int EVRESSConditioning_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVErrorCode, urn:iso:15118:2:2010:MsgDataTypes,DC_EVErrorCodeType */
+	dinDC_EVErrorCodeType EVErrorCode ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVRESSSOC, urn:iso:15118:2:2010:MsgDataTypes,percentValueType */
+	int8_t EVRESSSOC ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,CableCheckReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":DC_EVStatus)',  derivedBy='EXTENSION'.  */
+struct dinCableCheckReqType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":DC_EVStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVStatusType',  base type name='EVStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVReady,"urn:iso:15118:2:2010:MsgDataTypes":EVCabinConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVRESSConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2010:MsgDataTypes":EVRESSSOC)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVStatusType DC_EVStatus ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,WeldingDetectionReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":DC_EVStatus)',  derivedBy='EXTENSION'.  */
+struct dinWeldingDetectionReqType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":DC_EVStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVStatusType',  base type name='EVStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVReady,"urn:iso:15118:2:2010:MsgDataTypes":EVCabinConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVRESSConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2010:MsgDataTypes":EVRESSSOC)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVStatusType DC_EVStatus ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,CertificateChainType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Certificate,"urn:iso:15118:2:2010:MsgDataTypes":SubCertificates{0-1})',  derivedBy='RESTRICTION'.  */
+#define dinCertificateChainType_Certificate_BYTES_SIZE 1200 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,certificateType is 1200 */
+struct dinCertificateChainType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":Certificate, urn:iso:15118:2:2010:MsgDataTypes,certificateType */
+	struct {
+		uint8_t bytes[dinCertificateChainType_Certificate_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  Certificate ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SubCertificates, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SubCertificatesType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Certificate{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinSubCertificatesType SubCertificates ;
+	unsigned int SubCertificates_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ConsumptionCostType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":startValue,"urn:iso:15118:2:2010:MsgDataTypes":Cost{0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinConsumptionCostType_Cost_ARRAY_SIZE 5
+struct dinConsumptionCostType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":startValue, http://www.w3.org/2001/XMLSchema,unsignedInt */
+	uint32_t startValue ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":Cost, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,CostType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":costKind,"urn:iso:15118:2:2010:MsgDataTypes":amount,"urn:iso:15118:2:2010:MsgDataTypes":amountMultiplier{0-1})',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinCostType array[dinConsumptionCostType_Cost_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} Cost;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVSEStatusCode,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+struct dinDC_EVSEStatusType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEIsolationStatus, urn:iso:15118:2:2010:MsgDataTypes,isolationLevelType */
+	dinisolationLevelType EVSEIsolationStatus ;
+	unsigned int EVSEIsolationStatus_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEStatusCode, urn:iso:15118:2:2010:MsgDataTypes,DC_EVSEStatusCodeType */
+	dinDC_EVSEStatusCodeType EVSEStatusCode ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay, http://www.w3.org/2001/XMLSchema,unsignedInt */
+	uint32_t NotificationMaxDelay ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSENotification, urn:iso:15118:2:2010:MsgDataTypes,EVSENotificationType */
+	dinEVSENotificationType EVSENotification ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ServiceChargeType',  base type name='ServiceType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2010:MsgDataTypes":ServiceTag,"urn:iso:15118:2:2010:MsgDataTypes":FreeService),("urn:iso:15118:2:2010:MsgDataTypes":EnergyTransferType))',  derivedBy='EXTENSION'.  */
+struct dinServiceChargeType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ServiceTag, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ServiceTagType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ServiceID,"urn:iso:15118:2:2010:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2010:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2010:MsgDataTypes":ServiceScope{0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinServiceTagType ServiceTag ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":FreeService, http://www.w3.org/2001/XMLSchema,boolean */
+	int FreeService ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EnergyTransferType, urn:iso:15118:2:2010:MsgDataTypes,EVSESupportedEnergyTransferType */
+	dinEVSESupportedEnergyTransferType EnergyTransferType ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+struct dinPhysicalValueType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":Multiplier, urn:iso:15118:2:2010:MsgDataTypes,unitMultiplierType */
+	int8_t Multiplier ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":Unit, urn:iso:15118:2:2010:MsgDataTypes,unitSymbolType */
+	dinunitSymbolType Unit ;
+	unsigned int Unit_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":Value, http://www.w3.org/2001/XMLSchema,short */
+	int16_t Value ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,CertificateUpdateReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2010:MsgBody":ContractID,"urn:iso:15118:2:2010:MsgBody":ListOfRootCertificateIDs,"urn:iso:15118:2:2010:MsgBody":DHParams)',  derivedBy='EXTENSION'.  */
+#define dinCertificateUpdateReqType_Id_CHARACTERS_SIZE 50
+#define dinCertificateUpdateReqType_ContractID_CHARACTERS_SIZE 24 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,contractIDType is 24 */
+#define dinCertificateUpdateReqType_DHParams_BYTES_SIZE 256 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,dHParamsType is 256 */
+struct dinCertificateUpdateReqType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,IDREF} */
+	struct {
+		exi_string_character_t characters[dinCertificateUpdateReqType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,CertificateChainType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Certificate,"urn:iso:15118:2:2010:MsgDataTypes":SubCertificates{0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinCertificateChainType ContractSignatureCertChain ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ContractID, urn:iso:15118:2:2010:MsgDataTypes,contractIDType */
+	struct {
+		exi_string_character_t characters[dinCertificateUpdateReqType_ContractID_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  ContractID ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ListOfRootCertificateIDs, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ListOfRootCertificateIDsType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":RootCertificateID{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinListOfRootCertificateIDsType ListOfRootCertificateIDs ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":DHParams, urn:iso:15118:2:2010:MsgDataTypes,dHParamsType */
+	struct {
+		uint8_t bytes[dinCertificateUpdateReqType_DHParams_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  DHParams ;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyValueType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":DSAKeyValue|"http://www.w3.org/2000/09/xmldsig#":RSAKeyValue|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))',  derivedBy='RESTRICTION'.  */
+struct dinKeyValueType {
+	/* element: "http://www.w3.org/2000/09/xmldsig#":DSAKeyValue, Complex type name='http://www.w3.org/2000/09/xmldsig#,DSAKeyValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("http://www.w3.org/2000/09/xmldsig#":P,"http://www.w3.org/2000/09/xmldsig#":Q){0-1},"http://www.w3.org/2000/09/xmldsig#":G{0-1},"http://www.w3.org/2000/09/xmldsig#":Y,"http://www.w3.org/2000/09/xmldsig#":J{0-1},("http://www.w3.org/2000/09/xmldsig#":Seed,"http://www.w3.org/2000/09/xmldsig#":PgenCounter){0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinDSAKeyValueType DSAKeyValue ;
+	unsigned int DSAKeyValue_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":RSAKeyValue, Complex type name='http://www.w3.org/2000/09/xmldsig#,RSAKeyValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Modulus,"http://www.w3.org/2000/09/xmldsig#":Exponent)',  derivedBy='RESTRICTION'.  */
+	struct dinRSAKeyValueType RSAKeyValue ;
+	unsigned int RSAKeyValue_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ServiceDiscoveryReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ServiceScope{0-1},"urn:iso:15118:2:2010:MsgBody":ServiceCategory{0-1})',  derivedBy='EXTENSION'.  */
+#define dinServiceDiscoveryReqType_ServiceScope_CHARACTERS_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,serviceScopeType is 32 */
+struct dinServiceDiscoveryReqType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ServiceScope, urn:iso:15118:2:2010:MsgDataTypes,serviceScopeType */
+	struct {
+		exi_string_character_t characters[dinServiceDiscoveryReqType_ServiceScope_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  ServiceScope ;
+	unsigned int ServiceScope_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ServiceCategory, urn:iso:15118:2:2010:MsgDataTypes,serviceCategoryType */
+	dinserviceCategoryType ServiceCategory ;
+	unsigned int ServiceCategory_isUsed:1;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformsType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transform{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinTransformsType_Transform_ARRAY_SIZE 1
+struct dinTransformsType {
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Transform, Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])|"http://www.w3.org/2000/09/xmldsig#":XPath){0-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinTransformType array[dinTransformsType_Transform_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} Transform;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ParameterType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":boolValue|"urn:iso:15118:2:2010:MsgDataTypes":byteValue|"urn:iso:15118:2:2010:MsgDataTypes":shortValue|"urn:iso:15118:2:2010:MsgDataTypes":intValue|"urn:iso:15118:2:2010:MsgDataTypes":physicalValue|"urn:iso:15118:2:2010:MsgDataTypes":stringValue)',  derivedBy='RESTRICTION'.  */
+#define dinParameterType_Name_CHARACTERS_SIZE 50
+#define dinParameterType_stringValue_CHARACTERS_SIZE 50
+struct dinParameterType {
+	/* attribute: Name {http://www.w3.org/2001/XMLSchema,string} */
+	struct {
+		exi_string_character_t characters[dinParameterType_Name_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Name ;
+	/* attribute: ValueType {urn:iso:15118:2:2010:MsgDataTypes,valueType} */
+	dinvalueType ValueType ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":boolValue, http://www.w3.org/2001/XMLSchema,boolean */
+	int boolValue ;
+	unsigned int boolValue_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":byteValue, http://www.w3.org/2001/XMLSchema,byte */
+	int8_t byteValue ;
+	unsigned int byteValue_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":shortValue, http://www.w3.org/2001/XMLSchema,short */
+	int16_t shortValue ;
+	unsigned int shortValue_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":intValue, http://www.w3.org/2001/XMLSchema,int */
+	int32_t intValue ;
+	unsigned int intValue_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":physicalValue, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType physicalValue ;
+	unsigned int physicalValue_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":stringValue, http://www.w3.org/2001/XMLSchema,string */
+	struct {
+		exi_string_character_t characters[dinParameterType_stringValue_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  stringValue ;
+	unsigned int stringValue_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PMaxScheduleType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":PMaxScheduleID,"urn:iso:15118:2:2010:MsgDataTypes":PMaxScheduleEntry{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinPMaxScheduleType_PMaxScheduleEntry_ARRAY_SIZE 5
+struct dinPMaxScheduleType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":PMaxScheduleID, urn:iso:15118:2:2010:MsgDataTypes,SAIDType */
+	int16_t PMaxScheduleID ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":PMaxScheduleEntry, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PMaxScheduleEntryType',  base type name='EntryType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2010:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2010:MsgDataTypes":PMax))',  derivedBy='EXTENSION'.  */
+	struct {
+		struct dinPMaxScheduleEntryType array[dinPMaxScheduleType_PMaxScheduleEntry_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} PMaxScheduleEntry;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVSEChargeParameterType',  base type name='EVSEChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":DC_EVSEStatus,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMaximumCurrentLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMaximumPowerLimit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVSEMaximumVoltageLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMinimumCurrentLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMinimumVoltageLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVSECurrentRegulationTolerance{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVSEPeakCurrentRipple,"urn:iso:15118:2:2010:MsgDataTypes":EVSEEnergyToBeDelivered{0-1})',  derivedBy='EXTENSION'.  */
+struct dinDC_EVSEChargeParameterType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVSEStatusCode,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVSEStatusType DC_EVSEStatus ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEMaximumCurrentLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMaximumCurrentLimit ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEMaximumPowerLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMaximumPowerLimit ;
+	unsigned int EVSEMaximumPowerLimit_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEMaximumVoltageLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMaximumVoltageLimit ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEMinimumCurrentLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMinimumCurrentLimit ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEMinimumVoltageLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMinimumVoltageLimit ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSECurrentRegulationTolerance, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSECurrentRegulationTolerance ;
+	unsigned int EVSECurrentRegulationTolerance_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEPeakCurrentRipple, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEPeakCurrentRipple ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEEnergyToBeDelivered, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEEnergyToBeDelivered ;
+	unsigned int EVSEEnergyToBeDelivered_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,CableCheckResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2010:MsgBody":EVSEProcessing)',  derivedBy='EXTENSION'.  */
+struct dinCableCheckResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVSEStatusCode,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVSEStatusType DC_EVSEStatus ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEProcessing, urn:iso:15118:2:2010:MsgDataTypes,EVSEProcessingType */
+	dinEVSEProcessingType EVSEProcessing ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ParameterSetType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ParameterSetID,"urn:iso:15118:2:2010:MsgDataTypes":Parameter{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinParameterSetType_Parameter_ARRAY_SIZE 5
+struct dinParameterSetType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ParameterSetID, http://www.w3.org/2001/XMLSchema,short */
+	int16_t ParameterSetID ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":Parameter, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ParameterType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":boolValue|"urn:iso:15118:2:2010:MsgDataTypes":byteValue|"urn:iso:15118:2:2010:MsgDataTypes":shortValue|"urn:iso:15118:2:2010:MsgDataTypes":intValue|"urn:iso:15118:2:2010:MsgDataTypes":physicalValue|"urn:iso:15118:2:2010:MsgDataTypes":stringValue)',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinParameterType array[dinParameterSetType_Parameter_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} Parameter;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVPowerDeliveryParameterType',  base type name='EVPowerDeliveryParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2010:MsgDataTypes":BulkChargingComplete{0-1},"urn:iso:15118:2:2010:MsgDataTypes":ChargingComplete)',  derivedBy='EXTENSION'.  */
+struct dinDC_EVPowerDeliveryParameterType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":DC_EVStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVStatusType',  base type name='EVStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVReady,"urn:iso:15118:2:2010:MsgDataTypes":EVCabinConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVRESSConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2010:MsgDataTypes":EVRESSSOC)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVStatusType DC_EVStatus ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":BulkChargingComplete, http://www.w3.org/2001/XMLSchema,boolean */
+	int BulkChargingComplete ;
+	unsigned int BulkChargingComplete_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ChargingComplete, http://www.w3.org/2001/XMLSchema,boolean */
+	int ChargingComplete ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,PaymentDetailsReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ContractID,"urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain)',  derivedBy='EXTENSION'.  */
+#define dinPaymentDetailsReqType_ContractID_CHARACTERS_SIZE 24 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,contractIDType is 24 */
+struct dinPaymentDetailsReqType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ContractID, urn:iso:15118:2:2010:MsgDataTypes,contractIDType */
+	struct {
+		exi_string_character_t characters[dinPaymentDetailsReqType_ContractID_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  ContractID ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,CertificateChainType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Certificate,"urn:iso:15118:2:2010:MsgDataTypes":SubCertificates{0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinCertificateChainType ContractSignatureCertChain ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVChargeParameterType',  base type name='EVChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2010:MsgDataTypes":EVMaximumCurrentLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVMaximumVoltageLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVEnergyCapacity{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVEnergyRequest{0-1},"urn:iso:15118:2:2010:MsgDataTypes":FullSOC{0-1},"urn:iso:15118:2:2010:MsgDataTypes":BulkSOC{0-1})',  derivedBy='EXTENSION'.  */
+struct dinDC_EVChargeParameterType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":DC_EVStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVStatusType',  base type name='EVStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVReady,"urn:iso:15118:2:2010:MsgDataTypes":EVCabinConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVRESSConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2010:MsgDataTypes":EVRESSSOC)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVStatusType DC_EVStatus ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVMaximumCurrentLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVMaximumCurrentLimit ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVMaximumPowerLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVMaximumPowerLimit ;
+	unsigned int EVMaximumPowerLimit_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVMaximumVoltageLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVMaximumVoltageLimit ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVEnergyCapacity, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVEnergyCapacity ;
+	unsigned int EVEnergyCapacity_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVEnergyRequest, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVEnergyRequest ;
+	unsigned int EVEnergyRequest_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":FullSOC, urn:iso:15118:2:2010:MsgDataTypes,percentValueType */
+	int8_t FullSOC ;
+	unsigned int FullSOC_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":BulkSOC, urn:iso:15118:2:2010:MsgDataTypes,percentValueType */
+	int8_t BulkSOC ;
+	unsigned int BulkSOC_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ServiceType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ServiceTag,"urn:iso:15118:2:2010:MsgDataTypes":FreeService)',  derivedBy='RESTRICTION'.  */
+struct dinServiceType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ServiceTag, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ServiceTagType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ServiceID,"urn:iso:15118:2:2010:MsgDataTypes":ServiceName{0-1},"urn:iso:15118:2:2010:MsgDataTypes":ServiceCategory,"urn:iso:15118:2:2010:MsgDataTypes":ServiceScope{0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinServiceTagType ServiceTag ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":FreeService, http://www.w3.org/2001/XMLSchema,boolean */
+	int FreeService ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,CurrentDemandReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":DC_EVStatus,"urn:iso:15118:2:2010:MsgBody":EVTargetCurrent,"urn:iso:15118:2:2010:MsgBody":EVMaximumVoltageLimit{0-1},"urn:iso:15118:2:2010:MsgBody":EVMaximumCurrentLimit{0-1},"urn:iso:15118:2:2010:MsgBody":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2010:MsgBody":BulkChargingComplete{0-1},"urn:iso:15118:2:2010:MsgBody":ChargingComplete,"urn:iso:15118:2:2010:MsgBody":RemainingTimeToFullSoC{0-1},"urn:iso:15118:2:2010:MsgBody":RemainingTimeToBulkSoC{0-1},"urn:iso:15118:2:2010:MsgBody":EVTargetVoltage)',  derivedBy='EXTENSION'.  */
+struct dinCurrentDemandReqType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":DC_EVStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVStatusType',  base type name='EVStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVReady,"urn:iso:15118:2:2010:MsgDataTypes":EVCabinConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVRESSConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2010:MsgDataTypes":EVRESSSOC)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVStatusType DC_EVStatus ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVTargetCurrent, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVTargetCurrent ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVMaximumVoltageLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVMaximumVoltageLimit ;
+	unsigned int EVMaximumVoltageLimit_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVMaximumCurrentLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVMaximumCurrentLimit ;
+	unsigned int EVMaximumCurrentLimit_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVMaximumPowerLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVMaximumPowerLimit ;
+	unsigned int EVMaximumPowerLimit_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":BulkChargingComplete, http://www.w3.org/2001/XMLSchema,boolean */
+	int BulkChargingComplete ;
+	unsigned int BulkChargingComplete_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ChargingComplete, http://www.w3.org/2001/XMLSchema,boolean */
+	int ChargingComplete ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":RemainingTimeToFullSoC, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType RemainingTimeToFullSoC ;
+	unsigned int RemainingTimeToFullSoC_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":RemainingTimeToBulkSoC, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType RemainingTimeToBulkSoC ;
+	unsigned int RemainingTimeToBulkSoC_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVTargetVoltage, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVTargetVoltage ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,MeteringReceiptResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":AC_EVSEStatus)',  derivedBy='EXTENSION'.  */
+struct dinMeteringReceiptResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":AC_EVSEStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,AC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":PowerSwitchClosed,"urn:iso:15118:2:2010:MsgDataTypes":RCD,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+	struct dinAC_EVSEStatusType AC_EVSEStatus ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ServiceTagListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Service{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinServiceTagListType_Service_ARRAY_SIZE 5
+struct dinServiceTagListType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":Service, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ServiceType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ServiceTag,"urn:iso:15118:2:2010:MsgDataTypes":FreeService)',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinServiceType array[dinServiceTagListType_Service_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} Service;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertiesType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":SignatureProperty{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinSignaturePropertiesType_Id_CHARACTERS_SIZE 50
+#define dinSignaturePropertiesType_SignatureProperty_ARRAY_SIZE 1
+struct dinSignaturePropertiesType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */
+	struct {
+		exi_string_character_t characters[dinSignaturePropertiesType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":SignatureProperty, Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertyType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinSignaturePropertyType array[dinSignaturePropertiesType_SignatureProperty_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} SignatureProperty;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,MeterInfoType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":MeterID,"urn:iso:15118:2:2010:MsgDataTypes":MeterReading{0-1},"urn:iso:15118:2:2010:MsgDataTypes":SigMeterReading{0-1},"urn:iso:15118:2:2010:MsgDataTypes":MeterStatus{0-1},"urn:iso:15118:2:2010:MsgDataTypes":TMeter{0-1})',  derivedBy='RESTRICTION'.  */
+#define dinMeterInfoType_MeterID_CHARACTERS_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,meterIDType is 32 */
+#define dinMeterInfoType_SigMeterReading_BYTES_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,sigMeterReadingType is 32 */
+struct dinMeterInfoType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":MeterID, urn:iso:15118:2:2010:MsgDataTypes,meterIDType */
+	struct {
+		exi_string_character_t characters[dinMeterInfoType_MeterID_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  MeterID ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":MeterReading, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType MeterReading ;
+	unsigned int MeterReading_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SigMeterReading, urn:iso:15118:2:2010:MsgDataTypes,sigMeterReadingType */
+	struct {
+		uint8_t bytes[dinMeterInfoType_SigMeterReading_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  SigMeterReading ;
+	unsigned int SigMeterReading_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":MeterStatus, urn:iso:15118:2:2010:MsgDataTypes,meterStatusType */
+	int16_t MeterStatus ;
+	unsigned int MeterStatus_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":TMeter, http://www.w3.org/2001/XMLSchema,long */
+	int64_t TMeter ;
+	unsigned int TMeter_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SalesTariffEntryType',  base type name='EntryType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2010:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2010:MsgDataTypes":EPriceLevel,"urn:iso:15118:2:2010:MsgDataTypes":ConsumptionCost{0-UNBOUNDED}))',  derivedBy='EXTENSION'.  */
+#define dinSalesTariffEntryType_ConsumptionCost_ARRAY_SIZE 5
+struct dinSalesTariffEntryType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":TimeInterval, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,IntervalType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+	struct dinIntervalType TimeInterval ;
+	unsigned int TimeInterval_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":RelativeTimeInterval, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,RelativeTimeIntervalType',  base type name='IntervalType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":start,"urn:iso:15118:2:2010:MsgDataTypes":duration{0-1})',  derivedBy='EXTENSION'.  */
+	struct dinRelativeTimeIntervalType RelativeTimeInterval ;
+	unsigned int RelativeTimeInterval_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EPriceLevel, http://www.w3.org/2001/XMLSchema,unsignedByte */
+	uint8_t EPriceLevel ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ConsumptionCost, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ConsumptionCostType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":startValue,"urn:iso:15118:2:2010:MsgDataTypes":Cost{0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinConsumptionCostType array[dinSalesTariffEntryType_ConsumptionCost_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} ConsumptionCost;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,PreChargeReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":DC_EVStatus,"urn:iso:15118:2:2010:MsgBody":EVTargetVoltage,"urn:iso:15118:2:2010:MsgBody":EVTargetCurrent)',  derivedBy='EXTENSION'.  */
+struct dinPreChargeReqType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":DC_EVStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVStatusType',  base type name='EVStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVReady,"urn:iso:15118:2:2010:MsgDataTypes":EVCabinConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVRESSConditioning{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVErrorCode,"urn:iso:15118:2:2010:MsgDataTypes":EVRESSSOC)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVStatusType DC_EVStatus ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVTargetVoltage, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVTargetVoltage ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVTargetCurrent, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVTargetCurrent ;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,RetrievalMethodType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1})',  derivedBy='RESTRICTION'.  */
+#define dinRetrievalMethodType_URI_CHARACTERS_SIZE 50
+#define dinRetrievalMethodType_Type_CHARACTERS_SIZE 50
+struct dinRetrievalMethodType {
+	/* attribute: URI {http://www.w3.org/2001/XMLSchema,anyURI} */
+	struct {
+		exi_string_character_t characters[dinRetrievalMethodType_URI_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  URI ;
+	unsigned int URI_isUsed:1;
+	/* attribute: Type {http://www.w3.org/2001/XMLSchema,anyURI} */
+	struct {
+		exi_string_character_t characters[dinRetrievalMethodType_Type_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Type ;
+	unsigned int Type_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Transforms, Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformsType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transform{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinTransformsType Transforms ;
+	unsigned int Transforms_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,AC_EVChargeParameterType',  base type name='EVChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":DepartureTime,"urn:iso:15118:2:2010:MsgDataTypes":EAmount,"urn:iso:15118:2:2010:MsgDataTypes":EVMaxVoltage,"urn:iso:15118:2:2010:MsgDataTypes":EVMaxCurrent,"urn:iso:15118:2:2010:MsgDataTypes":EVMinCurrent)',  derivedBy='EXTENSION'.  */
+struct dinAC_EVChargeParameterType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":DepartureTime, http://www.w3.org/2001/XMLSchema,unsignedInt */
+	uint32_t DepartureTime ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EAmount, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EAmount ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVMaxVoltage, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVMaxVoltage ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVMaxCurrent, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVMaxCurrent ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVMinCurrent, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVMinCurrent ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,CertificateUpdateResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2010:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2010:MsgBody":DHParams,"urn:iso:15118:2:2010:MsgBody":ContractID,"urn:iso:15118:2:2010:MsgBody":RetryCounter)',  derivedBy='EXTENSION'.  */
+#define dinCertificateUpdateResType_Id_CHARACTERS_SIZE 50
+#define dinCertificateUpdateResType_ContractSignatureEncryptedPrivateKey_BYTES_SIZE 128 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,privateKeyType is 128 */
+#define dinCertificateUpdateResType_DHParams_BYTES_SIZE 256 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,dHParamsType is 256 */
+#define dinCertificateUpdateResType_ContractID_CHARACTERS_SIZE 24 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,contractIDType is 24 */
+struct dinCertificateUpdateResType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,IDREF} */
+	struct {
+		exi_string_character_t characters[dinCertificateUpdateResType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,CertificateChainType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Certificate,"urn:iso:15118:2:2010:MsgDataTypes":SubCertificates{0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinCertificateChainType ContractSignatureCertChain ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ContractSignatureEncryptedPrivateKey, urn:iso:15118:2:2010:MsgDataTypes,privateKeyType */
+	struct {
+		uint8_t bytes[dinCertificateUpdateResType_ContractSignatureEncryptedPrivateKey_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  ContractSignatureEncryptedPrivateKey ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":DHParams, urn:iso:15118:2:2010:MsgDataTypes,dHParamsType */
+	struct {
+		uint8_t bytes[dinCertificateUpdateResType_DHParams_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  DHParams ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ContractID, urn:iso:15118:2:2010:MsgDataTypes,contractIDType */
+	struct {
+		exi_string_character_t characters[dinCertificateUpdateResType_ContractID_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  ContractID ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":RetryCounter, http://www.w3.org/2001/XMLSchema,short */
+	int16_t RetryCounter ;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ReferenceType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1},"http://www.w3.org/2000/09/xmldsig#":DigestMethod,"http://www.w3.org/2000/09/xmldsig#":DigestValue)',  derivedBy='RESTRICTION'.  */
+#define dinReferenceType_Id_CHARACTERS_SIZE 50
+#define dinReferenceType_URI_CHARACTERS_SIZE 50
+#define dinReferenceType_Type_CHARACTERS_SIZE 50
+#define dinReferenceType_DigestValue_BYTES_SIZE 350
+struct dinReferenceType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */
+	struct {
+		exi_string_character_t characters[dinReferenceType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* attribute: URI {http://www.w3.org/2001/XMLSchema,anyURI} */
+	struct {
+		exi_string_character_t characters[dinReferenceType_URI_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  URI ;
+	unsigned int URI_isUsed:1;
+	/* attribute: Type {http://www.w3.org/2001/XMLSchema,anyURI} */
+	struct {
+		exi_string_character_t characters[dinReferenceType_Type_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Type ;
+	unsigned int Type_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Transforms, Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformsType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transform{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinTransformsType Transforms ;
+	unsigned int Transforms_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":DigestMethod, Complex type name='http://www.w3.org/2000/09/xmldsig#,DigestMethodType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinDigestMethodType DigestMethod ;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":DigestValue, http://www.w3.org/2000/09/xmldsig#,DigestValueType */
+	struct {
+		uint8_t bytes[dinReferenceType_DigestValue_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  DigestValue ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,CertificateInstallationResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2010:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2010:MsgBody":DHParams,"urn:iso:15118:2:2010:MsgBody":ContractID)',  derivedBy='EXTENSION'.  */
+#define dinCertificateInstallationResType_Id_CHARACTERS_SIZE 50
+#define dinCertificateInstallationResType_ContractSignatureEncryptedPrivateKey_BYTES_SIZE 128 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,privateKeyType is 128 */
+#define dinCertificateInstallationResType_DHParams_BYTES_SIZE 256 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,dHParamsType is 256 */
+#define dinCertificateInstallationResType_ContractID_CHARACTERS_SIZE 24 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,contractIDType is 24 */
+struct dinCertificateInstallationResType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,IDREF} */
+	struct {
+		exi_string_character_t characters[dinCertificateInstallationResType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,CertificateChainType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Certificate,"urn:iso:15118:2:2010:MsgDataTypes":SubCertificates{0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinCertificateChainType ContractSignatureCertChain ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ContractSignatureEncryptedPrivateKey, urn:iso:15118:2:2010:MsgDataTypes,privateKeyType */
+	struct {
+		uint8_t bytes[dinCertificateInstallationResType_ContractSignatureEncryptedPrivateKey_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  ContractSignatureEncryptedPrivateKey ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":DHParams, urn:iso:15118:2:2010:MsgDataTypes,dHParamsType */
+	struct {
+		uint8_t bytes[dinCertificateInstallationResType_DHParams_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  DHParams ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ContractID, urn:iso:15118:2:2010:MsgDataTypes,contractIDType */
+	struct {
+		exi_string_character_t characters[dinCertificateInstallationResType_ContractID_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  ContractID ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,CurrentDemandResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2010:MsgBody":EVSEPresentVoltage,"urn:iso:15118:2:2010:MsgBody":EVSEPresentCurrent,"urn:iso:15118:2:2010:MsgBody":EVSECurrentLimitAchieved,"urn:iso:15118:2:2010:MsgBody":EVSEVoltageLimitAchieved,"urn:iso:15118:2:2010:MsgBody":EVSEPowerLimitAchieved,"urn:iso:15118:2:2010:MsgBody":EVSEMaximumVoltageLimit{0-1},"urn:iso:15118:2:2010:MsgBody":EVSEMaximumCurrentLimit{0-1},"urn:iso:15118:2:2010:MsgBody":EVSEMaximumPowerLimit{0-1})',  derivedBy='EXTENSION'.  */
+struct dinCurrentDemandResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVSEStatusCode,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVSEStatusType DC_EVSEStatus ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEPresentVoltage, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEPresentVoltage ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEPresentCurrent, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEPresentCurrent ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSECurrentLimitAchieved, http://www.w3.org/2001/XMLSchema,boolean */
+	int EVSECurrentLimitAchieved ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEVoltageLimitAchieved, http://www.w3.org/2001/XMLSchema,boolean */
+	int EVSEVoltageLimitAchieved ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEPowerLimitAchieved, http://www.w3.org/2001/XMLSchema,boolean */
+	int EVSEPowerLimitAchieved ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEMaximumVoltageLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMaximumVoltageLimit ;
+	unsigned int EVSEMaximumVoltageLimit_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEMaximumCurrentLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMaximumCurrentLimit ;
+	unsigned int EVSEMaximumCurrentLimit_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEMaximumPowerLimit, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMaximumPowerLimit ;
+	unsigned int EVSEMaximumPowerLimit_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ChargingStatusResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":EVSEID,"urn:iso:15118:2:2010:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2010:MsgBody":EVSEMaxCurrent{0-1},"urn:iso:15118:2:2010:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2010:MsgBody":ReceiptRequired,"urn:iso:15118:2:2010:MsgBody":AC_EVSEStatus)',  derivedBy='EXTENSION'.  */
+#define dinChargingStatusResType_EVSEID_BYTES_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,evseIDType is 32 */
+struct dinChargingStatusResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEID, urn:iso:15118:2:2010:MsgDataTypes,evseIDType */
+	struct {
+		uint8_t bytes[dinChargingStatusResType_EVSEID_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  EVSEID ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":SAScheduleTupleID, urn:iso:15118:2:2010:MsgDataTypes,SAIDType */
+	int16_t SAScheduleTupleID ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEMaxCurrent, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMaxCurrent ;
+	unsigned int EVSEMaxCurrent_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":MeterInfo, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,MeterInfoType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":MeterID,"urn:iso:15118:2:2010:MsgDataTypes":MeterReading{0-1},"urn:iso:15118:2:2010:MsgDataTypes":SigMeterReading{0-1},"urn:iso:15118:2:2010:MsgDataTypes":MeterStatus{0-1},"urn:iso:15118:2:2010:MsgDataTypes":TMeter{0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinMeterInfoType MeterInfo ;
+	unsigned int MeterInfo_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ReceiptRequired, http://www.w3.org/2001/XMLSchema,boolean */
+	int ReceiptRequired ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":AC_EVSEStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,AC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":PowerSwitchClosed,"urn:iso:15118:2:2010:MsgDataTypes":RCD,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+	struct dinAC_EVSEStatusType AC_EVSEStatus ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ServiceParameterListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ParameterSet{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinServiceParameterListType_ParameterSet_ARRAY_SIZE 5
+struct dinServiceParameterListType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":ParameterSet, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ParameterSetType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ParameterSetID,"urn:iso:15118:2:2010:MsgDataTypes":Parameter{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinParameterSetType array[dinServiceParameterListType_ParameterSet_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} ParameterSet;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,PowerDeliveryResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgDataTypes":EVSEStatus)',  derivedBy='EXTENSION'.  */
+struct dinPowerDeliveryResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,EVSEStatusType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+	struct dinEVSEStatusType EVSEStatus ;
+	unsigned int EVSEStatus_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":AC_EVSEStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,AC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":PowerSwitchClosed,"urn:iso:15118:2:2010:MsgDataTypes":RCD,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+	struct dinAC_EVSEStatusType AC_EVSEStatus ;
+	unsigned int AC_EVSEStatus_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVSEStatusCode,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVSEStatusType DC_EVSEStatus ;
+	unsigned int DC_EVSEStatus_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,AC_EVSEChargeParameterType',  base type name='EVSEChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":AC_EVSEStatus,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMaxVoltage,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMaxCurrent,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMinCurrent)',  derivedBy='EXTENSION'.  */
+struct dinAC_EVSEChargeParameterType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":AC_EVSEStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,AC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":PowerSwitchClosed,"urn:iso:15118:2:2010:MsgDataTypes":RCD,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+	struct dinAC_EVSEStatusType AC_EVSEStatus ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEMaxVoltage, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMaxVoltage ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEMaxCurrent, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMaxCurrent ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEMinCurrent, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEMinCurrent ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,WeldingDetectionResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2010:MsgBody":EVSEPresentVoltage)',  derivedBy='EXTENSION'.  */
+struct dinWeldingDetectionResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVSEStatusCode,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVSEStatusType DC_EVSEStatus ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEPresentVoltage, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEPresentVoltage ;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ServiceDetailResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":ServiceID,"urn:iso:15118:2:2010:MsgBody":ServiceParameterList{0-1})',  derivedBy='EXTENSION'.  */
+struct dinServiceDetailResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ServiceID, urn:iso:15118:2:2010:MsgDataTypes,serviceIDType */
+	uint16_t ServiceID ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ServiceParameterList, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ServiceParameterListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":ParameterSet{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinServiceParameterListType ServiceParameterList ;
+	unsigned int ServiceParameterList_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,PowerDeliveryReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ReadyToChargeState,"urn:iso:15118:2:2010:MsgBody":ChargingProfile{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVPowerDeliveryParameter{0-1})',  derivedBy='EXTENSION'.  */
+struct dinPowerDeliveryReqType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ReadyToChargeState, http://www.w3.org/2001/XMLSchema,boolean */
+	int ReadyToChargeState ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ChargingProfile, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ChargingProfileType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":SAScheduleTupleID,"urn:iso:15118:2:2010:MsgDataTypes":ProfileEntry{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinChargingProfileType ChargingProfile ;
+	unsigned int ChargingProfile_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVPowerDeliveryParameter, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,EVPowerDeliveryParameterType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+	struct dinEVPowerDeliveryParameterType EVPowerDeliveryParameter ;
+	unsigned int EVPowerDeliveryParameter_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":DC_EVPowerDeliveryParameter, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVPowerDeliveryParameterType',  base type name='EVPowerDeliveryParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2010:MsgDataTypes":BulkChargingComplete{0-1},"urn:iso:15118:2:2010:MsgDataTypes":ChargingComplete)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVPowerDeliveryParameterType DC_EVPowerDeliveryParameter ;
+	unsigned int DC_EVPowerDeliveryParameter_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,PreChargeResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2010:MsgBody":EVSEPresentVoltage)',  derivedBy='EXTENSION'.  */
+struct dinPreChargeResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVSEStatusType',  base type name='EVSEStatusType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":EVSEIsolationStatus{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVSEStatusCode,"urn:iso:15118:2:2010:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2010:MsgDataTypes":EVSENotification)',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVSEStatusType DC_EVSEStatus ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEPresentVoltage, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Multiplier,"urn:iso:15118:2:2010:MsgDataTypes":Unit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
+	struct dinPhysicalValueType EVSEPresentVoltage ;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignedInfoType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":CanonicalizationMethod,"http://www.w3.org/2000/09/xmldsig#":SignatureMethod,"http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinSignedInfoType_Id_CHARACTERS_SIZE 50
+#define dinSignedInfoType_Reference_ARRAY_SIZE 1
+struct dinSignedInfoType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */
+	struct {
+		exi_string_character_t characters[dinSignedInfoType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":CanonicalizationMethod, Complex type name='http://www.w3.org/2000/09/xmldsig#,CanonicalizationMethodType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##any]){0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinCanonicalizationMethodType CanonicalizationMethod ;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":SignatureMethod, Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureMethodType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":HMACOutputLength{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinSignatureMethodType SignatureMethod ;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Reference, Complex type name='http://www.w3.org/2000/09/xmldsig#,ReferenceType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1},"http://www.w3.org/2000/09/xmldsig#":DigestMethod,"http://www.w3.org/2000/09/xmldsig#":DigestValue)',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinReferenceType array[dinSignedInfoType_Reference_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} Reference;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,MeteringReceiptReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":SessionID,"urn:iso:15118:2:2010:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2010:MsgBody":MeterInfo)',  derivedBy='EXTENSION'.  */
+#define dinMeteringReceiptReqType_Id_CHARACTERS_SIZE 50
+#define dinMeteringReceiptReqType_SessionID_BYTES_SIZE 8 /* XML schema facet length for urn:iso:15118:2:2010:MsgDataTypes,sessionIDType is 8 */
+struct dinMeteringReceiptReqType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,IDREF} */
+	struct {
+		exi_string_character_t characters[dinMeteringReceiptReqType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":SessionID, urn:iso:15118:2:2010:MsgDataTypes,sessionIDType */
+	struct {
+		uint8_t bytes[dinMeteringReceiptReqType_SessionID_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  SessionID ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":SAScheduleTupleID, urn:iso:15118:2:2010:MsgDataTypes,SAIDType */
+	int16_t SAScheduleTupleID ;
+	unsigned int SAScheduleTupleID_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgBody":MeterInfo, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,MeterInfoType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":MeterID,"urn:iso:15118:2:2010:MsgDataTypes":MeterReading{0-1},"urn:iso:15118:2:2010:MsgDataTypes":SigMeterReading{0-1},"urn:iso:15118:2:2010:MsgDataTypes":MeterStatus{0-1},"urn:iso:15118:2:2010:MsgDataTypes":TMeter{0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinMeterInfoType MeterInfo ;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyInfoType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":KeyName|"http://www.w3.org/2000/09/xmldsig#":KeyValue|"http://www.w3.org/2000/09/xmldsig#":RetrievalMethod|"http://www.w3.org/2000/09/xmldsig#":X509Data|"http://www.w3.org/2000/09/xmldsig#":PGPData|"http://www.w3.org/2000/09/xmldsig#":SPKIData|"http://www.w3.org/2000/09/xmldsig#":MgmtData|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+#define dinKeyInfoType_Id_CHARACTERS_SIZE 50
+#define dinKeyInfoType_KeyName_CHARACTERS_SIZE 50
+#define dinKeyInfoType_KeyName_ARRAY_SIZE 1
+#define dinKeyInfoType_KeyValue_ARRAY_SIZE 1
+#define dinKeyInfoType_RetrievalMethod_ARRAY_SIZE 1
+#define dinKeyInfoType_X509Data_ARRAY_SIZE 1
+#define dinKeyInfoType_PGPData_ARRAY_SIZE 1
+#define dinKeyInfoType_SPKIData_ARRAY_SIZE 1
+#define dinKeyInfoType_MgmtData_CHARACTERS_SIZE 50
+#define dinKeyInfoType_MgmtData_ARRAY_SIZE 1
+struct dinKeyInfoType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */
+	struct {
+		exi_string_character_t characters[dinKeyInfoType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":KeyName, http://www.w3.org/2001/XMLSchema,string */
+	struct {
+		struct {
+			exi_string_character_t characters[dinKeyInfoType_KeyName_CHARACTERS_SIZE];
+			uint16_t charactersLen;
+		}  array[dinKeyInfoType_KeyName_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} KeyName;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":KeyValue, Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyValueType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":DSAKeyValue|"http://www.w3.org/2000/09/xmldsig#":RSAKeyValue|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinKeyValueType array[dinKeyInfoType_KeyValue_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} KeyValue;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":RetrievalMethod, Complex type name='http://www.w3.org/2000/09/xmldsig#,RetrievalMethodType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1})',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinRetrievalMethodType array[dinKeyInfoType_RetrievalMethod_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} RetrievalMethod;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":X509Data, Complex type name='http://www.w3.org/2000/09/xmldsig#,X509DataType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("http://www.w3.org/2000/09/xmldsig#":X509IssuerSerial|"http://www.w3.org/2000/09/xmldsig#":X509SKI|"http://www.w3.org/2000/09/xmldsig#":X509SubjectName|"http://www.w3.org/2000/09/xmldsig#":X509Certificate|"http://www.w3.org/2000/09/xmldsig#":X509CRL|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinX509DataType array[dinKeyInfoType_X509Data_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} X509Data;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":PGPData, Complex type name='http://www.w3.org/2000/09/xmldsig#,PGPDataType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("http://www.w3.org/2000/09/xmldsig#":PGPKeyID,"http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})|("http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED}))',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinPGPDataType array[dinKeyInfoType_PGPData_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} PGPData;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":SPKIData, Complex type name='http://www.w3.org/2000/09/xmldsig#,SPKIDataType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":SPKISexp,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-1}){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinSPKIDataType array[dinKeyInfoType_SPKIData_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} SPKIData;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":MgmtData, http://www.w3.org/2001/XMLSchema,string */
+	struct {
+		struct {
+			exi_string_character_t characters[dinKeyInfoType_MgmtData_CHARACTERS_SIZE];
+			uint16_t charactersLen;
+		}  array[dinKeyInfoType_MgmtData_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} MgmtData;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ServiceDiscoveryResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":PaymentOptions,"urn:iso:15118:2:2010:MsgBody":ChargeService,"urn:iso:15118:2:2010:MsgBody":ServiceList{0-1})',  derivedBy='EXTENSION'.  */
+struct dinServiceDiscoveryResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":PaymentOptions, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PaymentOptionsType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":PaymentOption{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinPaymentOptionsType PaymentOptions ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ChargeService, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ServiceChargeType',  base type name='ServiceType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2010:MsgDataTypes":ServiceTag,"urn:iso:15118:2:2010:MsgDataTypes":FreeService),("urn:iso:15118:2:2010:MsgDataTypes":EnergyTransferType))',  derivedBy='EXTENSION'.  */
+	struct dinServiceChargeType ChargeService ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":ServiceList, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,ServiceTagListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":Service{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinServiceTagListType ServiceList ;
+	unsigned int ServiceList_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SalesTariffType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":SalesTariffID,"urn:iso:15118:2:2010:MsgDataTypes":SalesTariffDescription{0-1},"urn:iso:15118:2:2010:MsgDataTypes":NumEPriceLevels,"urn:iso:15118:2:2010:MsgDataTypes":SalesTariffEntry{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinSalesTariffType_Id_CHARACTERS_SIZE 50
+#define dinSalesTariffType_SalesTariffDescription_CHARACTERS_SIZE 32 /* XML schema facet maxLength for urn:iso:15118:2:2010:MsgDataTypes,tariffDescriptionType is 32 */
+#define dinSalesTariffType_SalesTariffEntry_ARRAY_SIZE 5
+struct dinSalesTariffType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,IDREF} */
+	struct {
+		exi_string_character_t characters[dinSalesTariffType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SalesTariffID, urn:iso:15118:2:2010:MsgDataTypes,SAIDType */
+	int16_t SalesTariffID ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SalesTariffDescription, urn:iso:15118:2:2010:MsgDataTypes,tariffDescriptionType */
+	struct {
+		exi_string_character_t characters[dinSalesTariffType_SalesTariffDescription_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  SalesTariffDescription ;
+	unsigned int SalesTariffDescription_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":NumEPriceLevels, http://www.w3.org/2001/XMLSchema,unsignedByte */
+	uint8_t NumEPriceLevels ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SalesTariffEntry, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SalesTariffEntryType',  base type name='EntryType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2010:MsgDataTypes":TimeInterval),("urn:iso:15118:2:2010:MsgDataTypes":EPriceLevel,"urn:iso:15118:2:2010:MsgDataTypes":ConsumptionCost{0-UNBOUNDED}))',  derivedBy='EXTENSION'.  */
+	struct {
+		struct dinSalesTariffEntryType array[dinSalesTariffType_SalesTariffEntry_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} SalesTariffEntry;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ChargeParameterDiscoveryReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":EVRequestedEnergyTransferType,"urn:iso:15118:2:2010:MsgDataTypes":EVChargeParameter)',  derivedBy='EXTENSION'.  */
+struct dinChargeParameterDiscoveryReqType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVRequestedEnergyTransferType, urn:iso:15118:2:2010:MsgDataTypes,EVRequestedEnergyTransferType */
+	dinEVRequestedEnergyTransferType EVRequestedEnergyTransferType ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVChargeParameter, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,EVChargeParameterType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+	struct dinEVChargeParameterType EVChargeParameter ;
+	unsigned int EVChargeParameter_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":AC_EVChargeParameter, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,AC_EVChargeParameterType',  base type name='EVChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":DepartureTime,"urn:iso:15118:2:2010:MsgDataTypes":EAmount,"urn:iso:15118:2:2010:MsgDataTypes":EVMaxVoltage,"urn:iso:15118:2:2010:MsgDataTypes":EVMaxCurrent,"urn:iso:15118:2:2010:MsgDataTypes":EVMinCurrent)',  derivedBy='EXTENSION'.  */
+	struct dinAC_EVChargeParameterType AC_EVChargeParameter ;
+	unsigned int AC_EVChargeParameter_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":DC_EVChargeParameter, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVChargeParameterType',  base type name='EVChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":DC_EVStatus,"urn:iso:15118:2:2010:MsgDataTypes":EVMaximumCurrentLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVMaximumVoltageLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVEnergyCapacity{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVEnergyRequest{0-1},"urn:iso:15118:2:2010:MsgDataTypes":FullSOC{0-1},"urn:iso:15118:2:2010:MsgDataTypes":BulkSOC{0-1})',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVChargeParameterType DC_EVChargeParameter ;
+	unsigned int DC_EVChargeParameter_isUsed:1;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ManifestType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinManifestType_Id_CHARACTERS_SIZE 50
+#define dinManifestType_Reference_ARRAY_SIZE 1
+struct dinManifestType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */
+	struct {
+		exi_string_character_t characters[dinManifestType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Reference, Complex type name='http://www.w3.org/2000/09/xmldsig#,ReferenceType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1},"http://www.w3.org/2000/09/xmldsig#":DigestMethod,"http://www.w3.org/2000/09/xmldsig#":DigestValue)',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinReferenceType array[dinManifestType_Reference_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} Reference;
+};
+
+/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":SignedInfo,"http://www.w3.org/2000/09/xmldsig#":SignatureValue,"http://www.w3.org/2000/09/xmldsig#":KeyInfo{0-1},"http://www.w3.org/2000/09/xmldsig#":Object{0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+#define dinSignatureType_Id_CHARACTERS_SIZE 50
+#define dinSignatureType_Object_ARRAY_SIZE 1
+struct dinSignatureType {
+	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */
+	struct {
+		exi_string_character_t characters[dinSignatureType_Id_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  Id ;
+	unsigned int Id_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":SignedInfo, Complex type name='http://www.w3.org/2000/09/xmldsig#,SignedInfoType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":CanonicalizationMethod,"http://www.w3.org/2000/09/xmldsig#":SignatureMethod,"http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinSignedInfoType SignedInfo ;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":SignatureValue, Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureValueType',  base type name='base64Binary',  content type='SIMPLE',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
+	struct dinSignatureValueType SignatureValue ;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":KeyInfo, Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyInfoType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":KeyName|"http://www.w3.org/2000/09/xmldsig#":KeyValue|"http://www.w3.org/2000/09/xmldsig#":RetrievalMethod|"http://www.w3.org/2000/09/xmldsig#":X509Data|"http://www.w3.org/2000/09/xmldsig#":PGPData|"http://www.w3.org/2000/09/xmldsig#":SPKIData|"http://www.w3.org/2000/09/xmldsig#":MgmtData|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+	struct dinKeyInfoType KeyInfo ;
+	unsigned int KeyInfo_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Object, Complex type name='http://www.w3.org/2000/09/xmldsig#,ObjectType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##any])){0-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinObjectType array[dinSignatureType_Object_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} Object;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SAScheduleTupleType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":SAScheduleTupleID,"urn:iso:15118:2:2010:MsgDataTypes":PMaxSchedule,"urn:iso:15118:2:2010:MsgDataTypes":SalesTariff{0-1})',  derivedBy='RESTRICTION'.  */
+struct dinSAScheduleTupleType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SAScheduleTupleID, urn:iso:15118:2:2010:MsgDataTypes,SAIDType */
+	int16_t SAScheduleTupleID ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":PMaxSchedule, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,PMaxScheduleType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":PMaxScheduleID,"urn:iso:15118:2:2010:MsgDataTypes":PMaxScheduleEntry{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinPMaxScheduleType PMaxSchedule ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SalesTariff, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SalesTariffType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":SalesTariffID,"urn:iso:15118:2:2010:MsgDataTypes":SalesTariffDescription{0-1},"urn:iso:15118:2:2010:MsgDataTypes":NumEPriceLevels,"urn:iso:15118:2:2010:MsgDataTypes":SalesTariffEntry{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinSalesTariffType SalesTariff ;
+	unsigned int SalesTariff_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgHeader,MessageHeaderType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgHeader":SessionID,"urn:iso:15118:2:2010:MsgHeader":Notification{0-1},"http://www.w3.org/2000/09/xmldsig#":Signature{0-1})',  derivedBy='RESTRICTION'.  */
+#define dinMessageHeaderType_SessionID_BYTES_SIZE 8 /* XML schema facet length for urn:iso:15118:2:2010:MsgDataTypes,sessionIDType is 8 */
+struct dinMessageHeaderType {
+	/* element: "urn:iso:15118:2:2010:MsgHeader":SessionID, urn:iso:15118:2:2010:MsgDataTypes,sessionIDType */
+	struct {
+		uint8_t bytes[dinMessageHeaderType_SessionID_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  SessionID ;
+	/* element: "urn:iso:15118:2:2010:MsgHeader":Notification, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,NotificationType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":FaultCode,"urn:iso:15118:2:2010:MsgDataTypes":FaultMsg{0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinNotificationType Notification ;
+	unsigned int Notification_isUsed:1;
+	/* element: "http://www.w3.org/2000/09/xmldsig#":Signature, Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":SignedInfo,"http://www.w3.org/2000/09/xmldsig#":SignatureValue,"http://www.w3.org/2000/09/xmldsig#":KeyInfo{0-1},"http://www.w3.org/2000/09/xmldsig#":Object{0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
+	struct dinSignatureType Signature ;
+	unsigned int Signature_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SAScheduleListType',  base type name='SASchedulesType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":SAScheduleTuple{1-UNBOUNDED})',  derivedBy='EXTENSION'.  */
+#define dinSAScheduleListType_SAScheduleTuple_ARRAY_SIZE 5
+struct dinSAScheduleListType {
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SAScheduleTuple, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SAScheduleTupleType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":SAScheduleTupleID,"urn:iso:15118:2:2010:MsgDataTypes":PMaxSchedule,"urn:iso:15118:2:2010:MsgDataTypes":SalesTariff{0-1})',  derivedBy='RESTRICTION'.  */
+	struct {
+		struct dinSAScheduleTupleType array[dinSAScheduleListType_SAScheduleTuple_ARRAY_SIZE];
+		uint16_t arrayLen;
+	} SAScheduleTuple;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgBody,ChargeParameterDiscoveryResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":EVSEProcessing,"urn:iso:15118:2:2010:MsgDataTypes":SASchedules,"urn:iso:15118:2:2010:MsgDataTypes":EVSEChargeParameter)',  derivedBy='EXTENSION'.  */
+struct dinChargeParameterDiscoveryResType {
+	/* element: "urn:iso:15118:2:2010:MsgBody":ResponseCode, urn:iso:15118:2:2010:MsgDataTypes,responseCodeType */
+	dinresponseCodeType ResponseCode ;
+	/* element: "urn:iso:15118:2:2010:MsgBody":EVSEProcessing, urn:iso:15118:2:2010:MsgDataTypes,EVSEProcessingType */
+	dinEVSEProcessingType EVSEProcessing ;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SASchedules, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SASchedulesType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+	struct dinSASchedulesType SASchedules ;
+	unsigned int SASchedules_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":SAScheduleList, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,SAScheduleListType',  base type name='SASchedulesType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":SAScheduleTuple{1-UNBOUNDED})',  derivedBy='EXTENSION'.  */
+	struct dinSAScheduleListType SAScheduleList ;
+	unsigned int SAScheduleList_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":EVSEChargeParameter, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,EVSEChargeParameterType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+	struct dinEVSEChargeParameterType EVSEChargeParameter ;
+	unsigned int EVSEChargeParameter_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":AC_EVSEChargeParameter, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,AC_EVSEChargeParameterType',  base type name='EVSEChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":AC_EVSEStatus,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMaxVoltage,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMaxCurrent,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMinCurrent)',  derivedBy='EXTENSION'.  */
+	struct dinAC_EVSEChargeParameterType AC_EVSEChargeParameter ;
+	unsigned int AC_EVSEChargeParameter_isUsed:1;
+	/* element: "urn:iso:15118:2:2010:MsgDataTypes":DC_EVSEChargeParameter, Complex type name='urn:iso:15118:2:2010:MsgDataTypes,DC_EVSEChargeParameterType',  base type name='EVSEChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDataTypes":DC_EVSEStatus,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMaximumCurrentLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMaximumPowerLimit{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVSEMaximumVoltageLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMinimumCurrentLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVSEMinimumVoltageLimit,"urn:iso:15118:2:2010:MsgDataTypes":EVSECurrentRegulationTolerance{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVSEPeakCurrentRipple,"urn:iso:15118:2:2010:MsgDataTypes":EVSEEnergyToBeDelivered{0-1})',  derivedBy='EXTENSION'.  */
+	struct dinDC_EVSEChargeParameterType DC_EVSEChargeParameter ;
+	unsigned int DC_EVSEChargeParameter_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDef,BodyType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDef":BodyElement{0-1})',  derivedBy='RESTRICTION'.  */
+struct dinBodyType {
+	union { /* substitutionGroup */
+		/* element: "urn:iso:15118:2:2010:MsgDef":BodyElement, Complex type name='urn:iso:15118:2:2010:MsgDef,BodyBaseType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
+		struct dinBodyBaseType BodyElement ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":SessionSetupReq, Complex type name='urn:iso:15118:2:2010:MsgBody,SessionSetupReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":EVCCID)',  derivedBy='EXTENSION'.  */
+		struct dinSessionSetupReqType SessionSetupReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":SessionSetupRes, Complex type name='urn:iso:15118:2:2010:MsgBody,SessionSetupResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":EVSEID,"urn:iso:15118:2:2010:MsgBody":DateTimeNow{0-1})',  derivedBy='EXTENSION'.  */
+		struct dinSessionSetupResType SessionSetupRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ServiceDiscoveryReq, Complex type name='urn:iso:15118:2:2010:MsgBody,ServiceDiscoveryReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ServiceScope{0-1},"urn:iso:15118:2:2010:MsgBody":ServiceCategory{0-1})',  derivedBy='EXTENSION'.  */
+		struct dinServiceDiscoveryReqType ServiceDiscoveryReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ServiceDiscoveryRes, Complex type name='urn:iso:15118:2:2010:MsgBody,ServiceDiscoveryResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":PaymentOptions,"urn:iso:15118:2:2010:MsgBody":ChargeService,"urn:iso:15118:2:2010:MsgBody":ServiceList{0-1})',  derivedBy='EXTENSION'.  */
+		struct dinServiceDiscoveryResType ServiceDiscoveryRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ServiceDetailReq, Complex type name='urn:iso:15118:2:2010:MsgBody,ServiceDetailReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ServiceID)',  derivedBy='EXTENSION'.  */
+		struct dinServiceDetailReqType ServiceDetailReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ServiceDetailRes, Complex type name='urn:iso:15118:2:2010:MsgBody,ServiceDetailResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":ServiceID,"urn:iso:15118:2:2010:MsgBody":ServiceParameterList{0-1})',  derivedBy='EXTENSION'.  */
+		struct dinServiceDetailResType ServiceDetailRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ServicePaymentSelectionReq, Complex type name='urn:iso:15118:2:2010:MsgBody,ServicePaymentSelectionReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":SelectedPaymentOption,"urn:iso:15118:2:2010:MsgBody":SelectedServiceList)',  derivedBy='EXTENSION'.  */
+		struct dinServicePaymentSelectionReqType ServicePaymentSelectionReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ServicePaymentSelectionRes, Complex type name='urn:iso:15118:2:2010:MsgBody,ServicePaymentSelectionResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode)',  derivedBy='EXTENSION'.  */
+		struct dinServicePaymentSelectionResType ServicePaymentSelectionRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":PaymentDetailsReq, Complex type name='urn:iso:15118:2:2010:MsgBody,PaymentDetailsReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ContractID,"urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain)',  derivedBy='EXTENSION'.  */
+		struct dinPaymentDetailsReqType PaymentDetailsReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":PaymentDetailsRes, Complex type name='urn:iso:15118:2:2010:MsgBody,PaymentDetailsResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":GenChallenge,"urn:iso:15118:2:2010:MsgBody":DateTimeNow)',  derivedBy='EXTENSION'.  */
+		struct dinPaymentDetailsResType PaymentDetailsRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ContractAuthenticationReq, Complex type name='urn:iso:15118:2:2010:MsgBody,ContractAuthenticationReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":GenChallenge{0-1})',  derivedBy='EXTENSION'.  */
+		struct dinContractAuthenticationReqType ContractAuthenticationReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ContractAuthenticationRes, Complex type name='urn:iso:15118:2:2010:MsgBody,ContractAuthenticationResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":EVSEProcessing)',  derivedBy='EXTENSION'.  */
+		struct dinContractAuthenticationResType ContractAuthenticationRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ChargeParameterDiscoveryReq, Complex type name='urn:iso:15118:2:2010:MsgBody,ChargeParameterDiscoveryReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":EVRequestedEnergyTransferType,"urn:iso:15118:2:2010:MsgDataTypes":EVChargeParameter)',  derivedBy='EXTENSION'.  */
+		struct dinChargeParameterDiscoveryReqType ChargeParameterDiscoveryReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ChargeParameterDiscoveryRes, Complex type name='urn:iso:15118:2:2010:MsgBody,ChargeParameterDiscoveryResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":EVSEProcessing,"urn:iso:15118:2:2010:MsgDataTypes":SASchedules,"urn:iso:15118:2:2010:MsgDataTypes":EVSEChargeParameter)',  derivedBy='EXTENSION'.  */
+		struct dinChargeParameterDiscoveryResType ChargeParameterDiscoveryRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":PowerDeliveryReq, Complex type name='urn:iso:15118:2:2010:MsgBody,PowerDeliveryReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ReadyToChargeState,"urn:iso:15118:2:2010:MsgBody":ChargingProfile{0-1},"urn:iso:15118:2:2010:MsgDataTypes":EVPowerDeliveryParameter{0-1})',  derivedBy='EXTENSION'.  */
+		struct dinPowerDeliveryReqType PowerDeliveryReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":PowerDeliveryRes, Complex type name='urn:iso:15118:2:2010:MsgBody,PowerDeliveryResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgDataTypes":EVSEStatus)',  derivedBy='EXTENSION'.  */
+		struct dinPowerDeliveryResType PowerDeliveryRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ChargingStatusReq, Complex type name='urn:iso:15118:2:2010:MsgBody,ChargingStatusReqType',  base type name='BodyBaseType',  content type='EMPTY',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
+		struct dinChargingStatusReqType ChargingStatusReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":ChargingStatusRes, Complex type name='urn:iso:15118:2:2010:MsgBody,ChargingStatusResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":EVSEID,"urn:iso:15118:2:2010:MsgBody":SAScheduleTupleID,"urn:iso:15118:2:2010:MsgBody":EVSEMaxCurrent{0-1},"urn:iso:15118:2:2010:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2010:MsgBody":ReceiptRequired,"urn:iso:15118:2:2010:MsgBody":AC_EVSEStatus)',  derivedBy='EXTENSION'.  */
+		struct dinChargingStatusResType ChargingStatusRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":MeteringReceiptReq, Complex type name='urn:iso:15118:2:2010:MsgBody,MeteringReceiptReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":SessionID,"urn:iso:15118:2:2010:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2010:MsgBody":MeterInfo)',  derivedBy='EXTENSION'.  */
+		struct dinMeteringReceiptReqType MeteringReceiptReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":MeteringReceiptRes, Complex type name='urn:iso:15118:2:2010:MsgBody,MeteringReceiptResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":AC_EVSEStatus)',  derivedBy='EXTENSION'.  */
+		struct dinMeteringReceiptResType MeteringReceiptRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":SessionStopReq, Complex type name='urn:iso:15118:2:2010:MsgBody,SessionStopType',  base type name='BodyBaseType',  content type='EMPTY',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
+		struct dinSessionStopType SessionStopReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":SessionStopRes, Complex type name='urn:iso:15118:2:2010:MsgBody,SessionStopResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode)',  derivedBy='EXTENSION'.  */
+		struct dinSessionStopResType SessionStopRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":CertificateUpdateReq, Complex type name='urn:iso:15118:2:2010:MsgBody,CertificateUpdateReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2010:MsgBody":ContractID,"urn:iso:15118:2:2010:MsgBody":ListOfRootCertificateIDs,"urn:iso:15118:2:2010:MsgBody":DHParams)',  derivedBy='EXTENSION'.  */
+		struct dinCertificateUpdateReqType CertificateUpdateReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":CertificateUpdateRes, Complex type name='urn:iso:15118:2:2010:MsgBody,CertificateUpdateResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2010:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2010:MsgBody":DHParams,"urn:iso:15118:2:2010:MsgBody":ContractID,"urn:iso:15118:2:2010:MsgBody":RetryCounter)',  derivedBy='EXTENSION'.  */
+		struct dinCertificateUpdateResType CertificateUpdateRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":CertificateInstallationReq, Complex type name='urn:iso:15118:2:2010:MsgBody,CertificateInstallationReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":OEMProvisioningCert,"urn:iso:15118:2:2010:MsgBody":ListOfRootCertificateIDs,"urn:iso:15118:2:2010:MsgBody":DHParams)',  derivedBy='EXTENSION'.  */
+		struct dinCertificateInstallationReqType CertificateInstallationReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":CertificateInstallationRes, Complex type name='urn:iso:15118:2:2010:MsgBody,CertificateInstallationResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2010:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2010:MsgBody":DHParams,"urn:iso:15118:2:2010:MsgBody":ContractID)',  derivedBy='EXTENSION'.  */
+		struct dinCertificateInstallationResType CertificateInstallationRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":CableCheckReq, Complex type name='urn:iso:15118:2:2010:MsgBody,CableCheckReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":DC_EVStatus)',  derivedBy='EXTENSION'.  */
+		struct dinCableCheckReqType CableCheckReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":CableCheckRes, Complex type name='urn:iso:15118:2:2010:MsgBody,CableCheckResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2010:MsgBody":EVSEProcessing)',  derivedBy='EXTENSION'.  */
+		struct dinCableCheckResType CableCheckRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":PreChargeReq, Complex type name='urn:iso:15118:2:2010:MsgBody,PreChargeReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":DC_EVStatus,"urn:iso:15118:2:2010:MsgBody":EVTargetVoltage,"urn:iso:15118:2:2010:MsgBody":EVTargetCurrent)',  derivedBy='EXTENSION'.  */
+		struct dinPreChargeReqType PreChargeReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":PreChargeRes, Complex type name='urn:iso:15118:2:2010:MsgBody,PreChargeResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2010:MsgBody":EVSEPresentVoltage)',  derivedBy='EXTENSION'.  */
+		struct dinPreChargeResType PreChargeRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":CurrentDemandReq, Complex type name='urn:iso:15118:2:2010:MsgBody,CurrentDemandReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":DC_EVStatus,"urn:iso:15118:2:2010:MsgBody":EVTargetCurrent,"urn:iso:15118:2:2010:MsgBody":EVMaximumVoltageLimit{0-1},"urn:iso:15118:2:2010:MsgBody":EVMaximumCurrentLimit{0-1},"urn:iso:15118:2:2010:MsgBody":EVMaximumPowerLimit{0-1},"urn:iso:15118:2:2010:MsgBody":BulkChargingComplete{0-1},"urn:iso:15118:2:2010:MsgBody":ChargingComplete,"urn:iso:15118:2:2010:MsgBody":RemainingTimeToFullSoC{0-1},"urn:iso:15118:2:2010:MsgBody":RemainingTimeToBulkSoC{0-1},"urn:iso:15118:2:2010:MsgBody":EVTargetVoltage)',  derivedBy='EXTENSION'.  */
+		struct dinCurrentDemandReqType CurrentDemandReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":CurrentDemandRes, Complex type name='urn:iso:15118:2:2010:MsgBody,CurrentDemandResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2010:MsgBody":EVSEPresentVoltage,"urn:iso:15118:2:2010:MsgBody":EVSEPresentCurrent,"urn:iso:15118:2:2010:MsgBody":EVSECurrentLimitAchieved,"urn:iso:15118:2:2010:MsgBody":EVSEVoltageLimitAchieved,"urn:iso:15118:2:2010:MsgBody":EVSEPowerLimitAchieved,"urn:iso:15118:2:2010:MsgBody":EVSEMaximumVoltageLimit{0-1},"urn:iso:15118:2:2010:MsgBody":EVSEMaximumCurrentLimit{0-1},"urn:iso:15118:2:2010:MsgBody":EVSEMaximumPowerLimit{0-1})',  derivedBy='EXTENSION'.  */
+		struct dinCurrentDemandResType CurrentDemandRes ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":WeldingDetectionReq, Complex type name='urn:iso:15118:2:2010:MsgBody,WeldingDetectionReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":DC_EVStatus)',  derivedBy='EXTENSION'.  */
+		struct dinWeldingDetectionReqType WeldingDetectionReq ;
+		/* element: "urn:iso:15118:2:2010:MsgBody":WeldingDetectionRes, Complex type name='urn:iso:15118:2:2010:MsgBody,WeldingDetectionResType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgBody":ResponseCode,"urn:iso:15118:2:2010:MsgBody":DC_EVSEStatus,"urn:iso:15118:2:2010:MsgBody":EVSEPresentVoltage)',  derivedBy='EXTENSION'.  */
+		struct dinWeldingDetectionResType WeldingDetectionRes ;
+	}; /* union */
+		unsigned int BodyElement_isUsed:1;
+		unsigned int SessionSetupReq_isUsed:1;
+		unsigned int SessionSetupRes_isUsed:1;
+		unsigned int ServiceDiscoveryReq_isUsed:1;
+		unsigned int ServiceDiscoveryRes_isUsed:1;
+		unsigned int ServiceDetailReq_isUsed:1;
+		unsigned int ServiceDetailRes_isUsed:1;
+		unsigned int ServicePaymentSelectionReq_isUsed:1;
+		unsigned int ServicePaymentSelectionRes_isUsed:1;
+		unsigned int PaymentDetailsReq_isUsed:1;
+		unsigned int PaymentDetailsRes_isUsed:1;
+		unsigned int ContractAuthenticationReq_isUsed:1;
+		unsigned int ContractAuthenticationRes_isUsed:1;
+		unsigned int ChargeParameterDiscoveryReq_isUsed:1;
+		unsigned int ChargeParameterDiscoveryRes_isUsed:1;
+		unsigned int PowerDeliveryReq_isUsed:1;
+		unsigned int PowerDeliveryRes_isUsed:1;
+		unsigned int ChargingStatusReq_isUsed:1;
+		unsigned int ChargingStatusRes_isUsed:1;
+		unsigned int MeteringReceiptReq_isUsed:1;
+		unsigned int MeteringReceiptRes_isUsed:1;
+		unsigned int SessionStopReq_isUsed:1;
+		unsigned int SessionStopRes_isUsed:1;
+		unsigned int CertificateUpdateReq_isUsed:1;
+		unsigned int CertificateUpdateRes_isUsed:1;
+		unsigned int CertificateInstallationReq_isUsed:1;
+		unsigned int CertificateInstallationRes_isUsed:1;
+		unsigned int CableCheckReq_isUsed:1;
+		unsigned int CableCheckRes_isUsed:1;
+		unsigned int PreChargeReq_isUsed:1;
+		unsigned int PreChargeRes_isUsed:1;
+		unsigned int CurrentDemandReq_isUsed:1;
+		unsigned int CurrentDemandRes_isUsed:1;
+		unsigned int WeldingDetectionReq_isUsed:1;
+		unsigned int WeldingDetectionRes_isUsed:1;
+};
+
+/* Complex type name='urn:iso:15118:2:2010:MsgDef,#AnonType_V2G_Message',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDef":Header,"urn:iso:15118:2:2010:MsgDef":Body)',  derivedBy='RESTRICTION'.  */
+struct dinAnonType_V2G_Message {
+	/* element: "urn:iso:15118:2:2010:MsgDef":Header, Complex type name='urn:iso:15118:2:2010:MsgHeader,MessageHeaderType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgHeader":SessionID,"urn:iso:15118:2:2010:MsgHeader":Notification{0-1},"http://www.w3.org/2000/09/xmldsig#":Signature{0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinMessageHeaderType Header ;
+	/* element: "urn:iso:15118:2:2010:MsgDef":Body, Complex type name='urn:iso:15118:2:2010:MsgDef,BodyType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2010:MsgDef":BodyElement{0-1})',  derivedBy='RESTRICTION'.  */
+	struct dinBodyType Body ;
+};
+
+
+
+#define EXIDocument_MgmtData_CHARACTERS_SIZE 50 
+#define EXIDocument_KeyName_CHARACTERS_SIZE 50 
+#define EXIDocument_DigestValue_BYTES_SIZE 350 
+
+
+/* Possible root elements of EXI Document */
+struct dinEXIDocument {
+#define USE_UNION_FOR_GLOBAL_ELEMENTS 1
+#ifdef USE_UNION_FOR_GLOBAL_ELEMENTS
+	union {
+#endif
+	struct dinBodyBaseType BodyElement ;
+	struct dinAnonType_V2G_Message V2G_Message ;
+	struct dinSignaturePropertyType SignatureProperty ;
+	struct dinDSAKeyValueType DSAKeyValue ;
+	struct dinSignaturePropertiesType SignatureProperties ;
+	struct dinKeyValueType KeyValue ;
+	struct dinTransformsType Transforms ;
+	struct dinDigestMethodType DigestMethod ;
+	struct dinSignatureType Signature ;
+	struct dinRetrievalMethodType RetrievalMethod ;
+	struct dinManifestType Manifest ;
+	struct dinReferenceType Reference ;
+	struct dinCanonicalizationMethodType CanonicalizationMethod ;
+	struct dinRSAKeyValueType RSAKeyValue ;
+	struct dinTransformType Transform ;
+	struct dinPGPDataType PGPData ;
+	struct {
+		exi_string_character_t characters[EXIDocument_MgmtData_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  MgmtData ;
+	struct dinSignatureMethodType SignatureMethod ;
+	struct dinKeyInfoType KeyInfo ;
+	struct dinSPKIDataType SPKIData ;
+	struct dinX509DataType X509Data ;
+	struct dinSignatureValueType SignatureValue ;
+	struct {
+		exi_string_character_t characters[EXIDocument_KeyName_CHARACTERS_SIZE];
+		uint16_t charactersLen;
+	}  KeyName ;
+	struct {
+		uint8_t bytes[EXIDocument_DigestValue_BYTES_SIZE];
+		uint16_t bytesLen;
+	}  DigestValue ;
+	struct dinSignedInfoType SignedInfo ;
+	struct dinObjectType Object ;
+	struct dinDC_EVSEStatusType DC_EVSEStatus ;
+	struct dinRelativeTimeIntervalType RelativeTimeInterval ;
+	struct dinSalesTariffEntryType SalesTariffEntry ;
+	struct dinDC_EVPowerDeliveryParameterType DC_EVPowerDeliveryParameter ;
+	struct dinSASchedulesType SASchedules ;
+	struct dinAC_EVChargeParameterType AC_EVChargeParameter ;
+	struct dinSAScheduleListType SAScheduleList ;
+	struct dinDC_EVStatusType DC_EVStatus ;
+	struct dinServiceChargeType ServiceCharge ;
+	struct dinEVStatusType EVStatus ;
+	struct dinDC_EVChargeParameterType DC_EVChargeParameter ;
+	struct dinDC_EVSEChargeParameterType DC_EVSEChargeParameter ;
+	struct dinEVSEStatusType EVSEStatus ;
+	struct dinIntervalType TimeInterval ;
+	struct dinEVPowerDeliveryParameterType EVPowerDeliveryParameter ;
+	struct dinEVSEChargeParameterType EVSEChargeParameter ;
+	struct dinAC_EVSEStatusType AC_EVSEStatus ;
+	struct dinEntryType Entry ;
+	struct dinAC_EVSEChargeParameterType AC_EVSEChargeParameter ;
+	struct dinPMaxScheduleEntryType PMaxScheduleEntry ;
+	struct dinEVChargeParameterType EVChargeParameter ;
+	struct dinServiceDiscoveryReqType ServiceDiscoveryReq ;
+	struct dinServiceDiscoveryResType ServiceDiscoveryRes ;
+	struct dinMeteringReceiptReqType MeteringReceiptReq ;
+	struct dinPaymentDetailsReqType PaymentDetailsReq ;
+	struct dinMeteringReceiptResType MeteringReceiptRes ;
+	struct dinPaymentDetailsResType PaymentDetailsRes ;
+	struct dinSessionSetupReqType SessionSetupReq ;
+	struct dinSessionSetupResType SessionSetupRes ;
+	struct dinCableCheckReqType CableCheckReq ;
+	struct dinCableCheckResType CableCheckRes ;
+	struct dinContractAuthenticationReqType ContractAuthenticationReq ;
+	struct dinCertificateInstallationReqType CertificateInstallationReq ;
+	struct dinContractAuthenticationResType ContractAuthenticationRes ;
+	struct dinCertificateInstallationResType CertificateInstallationRes ;
+	struct dinWeldingDetectionReqType WeldingDetectionReq ;
+	struct dinWeldingDetectionResType WeldingDetectionRes ;
+	struct dinCertificateUpdateReqType CertificateUpdateReq ;
+	struct dinCertificateUpdateResType CertificateUpdateRes ;
+	struct dinPowerDeliveryReqType PowerDeliveryReq ;
+	struct dinPowerDeliveryResType PowerDeliveryRes ;
+	struct dinChargingStatusReqType ChargingStatusReq ;
+	struct dinChargingStatusResType ChargingStatusRes ;
+	struct dinCurrentDemandReqType CurrentDemandReq ;
+	struct dinPreChargeReqType PreChargeReq ;
+	struct dinCurrentDemandResType CurrentDemandRes ;
+	struct dinPreChargeResType PreChargeRes ;
+	struct dinServicePaymentSelectionReqType ServicePaymentSelectionReq ;
+	struct dinSessionStopType SessionStopReq ;
+	struct dinServicePaymentSelectionResType ServicePaymentSelectionRes ;
+	struct dinSessionStopResType SessionStopRes ;
+	struct dinChargeParameterDiscoveryReqType ChargeParameterDiscoveryReq ;
+	struct dinChargeParameterDiscoveryResType ChargeParameterDiscoveryRes ;
+	struct dinServiceDetailReqType ServiceDetailReq ;
+	struct dinServiceDetailResType ServiceDetailRes ;
+#ifdef USE_UNION_FOR_GLOBAL_ELEMENTS
+	};
+#endif
+	unsigned int BodyElement_isUsed:1;
+	unsigned int V2G_Message_isUsed:1;
+	unsigned int SignatureProperty_isUsed:1;
+	unsigned int DSAKeyValue_isUsed:1;
+	unsigned int SignatureProperties_isUsed:1;
+	unsigned int KeyValue_isUsed:1;
+	unsigned int Transforms_isUsed:1;
+	unsigned int DigestMethod_isUsed:1;
+	unsigned int Signature_isUsed:1;
+	unsigned int RetrievalMethod_isUsed:1;
+	unsigned int Manifest_isUsed:1;
+	unsigned int Reference_isUsed:1;
+	unsigned int CanonicalizationMethod_isUsed:1;
+	unsigned int RSAKeyValue_isUsed:1;
+	unsigned int Transform_isUsed:1;
+	unsigned int PGPData_isUsed:1;
+	unsigned int MgmtData_isUsed:1;
+	unsigned int SignatureMethod_isUsed:1;
+	unsigned int KeyInfo_isUsed:1;
+	unsigned int SPKIData_isUsed:1;
+	unsigned int X509Data_isUsed:1;
+	unsigned int SignatureValue_isUsed:1;
+	unsigned int KeyName_isUsed:1;
+	unsigned int DigestValue_isUsed:1;
+	unsigned int SignedInfo_isUsed:1;
+	unsigned int Object_isUsed:1;
+	unsigned int DC_EVSEStatus_isUsed:1;
+	unsigned int RelativeTimeInterval_isUsed:1;
+	unsigned int SalesTariffEntry_isUsed:1;
+	unsigned int DC_EVPowerDeliveryParameter_isUsed:1;
+	unsigned int SASchedules_isUsed:1;
+	unsigned int AC_EVChargeParameter_isUsed:1;
+	unsigned int SAScheduleList_isUsed:1;
+	unsigned int DC_EVStatus_isUsed:1;
+	unsigned int ServiceCharge_isUsed:1;
+	unsigned int EVStatus_isUsed:1;
+	unsigned int DC_EVChargeParameter_isUsed:1;
+	unsigned int DC_EVSEChargeParameter_isUsed:1;
+	unsigned int EVSEStatus_isUsed:1;
+	unsigned int TimeInterval_isUsed:1;
+	unsigned int EVPowerDeliveryParameter_isUsed:1;
+	unsigned int EVSEChargeParameter_isUsed:1;
+	unsigned int AC_EVSEStatus_isUsed:1;
+	unsigned int Entry_isUsed:1;
+	unsigned int AC_EVSEChargeParameter_isUsed:1;
+	unsigned int PMaxScheduleEntry_isUsed:1;
+	unsigned int EVChargeParameter_isUsed:1;
+	unsigned int ServiceDiscoveryReq_isUsed:1;
+	unsigned int ServiceDiscoveryRes_isUsed:1;
+	unsigned int MeteringReceiptReq_isUsed:1;
+	unsigned int PaymentDetailsReq_isUsed:1;
+	unsigned int MeteringReceiptRes_isUsed:1;
+	unsigned int PaymentDetailsRes_isUsed:1;
+	unsigned int SessionSetupReq_isUsed:1;
+	unsigned int SessionSetupRes_isUsed:1;
+	unsigned int CableCheckReq_isUsed:1;
+	unsigned int CableCheckRes_isUsed:1;
+	unsigned int ContractAuthenticationReq_isUsed:1;
+	unsigned int CertificateInstallationReq_isUsed:1;
+	unsigned int ContractAuthenticationRes_isUsed:1;
+	unsigned int CertificateInstallationRes_isUsed:1;
+	unsigned int WeldingDetectionReq_isUsed:1;
+	unsigned int WeldingDetectionRes_isUsed:1;
+	unsigned int CertificateUpdateReq_isUsed:1;
+	unsigned int CertificateUpdateRes_isUsed:1;
+	unsigned int PowerDeliveryReq_isUsed:1;
+	unsigned int PowerDeliveryRes_isUsed:1;
+	unsigned int ChargingStatusReq_isUsed:1;
+	unsigned int ChargingStatusRes_isUsed:1;
+	unsigned int CurrentDemandReq_isUsed:1;
+	unsigned int PreChargeReq_isUsed:1;
+	unsigned int CurrentDemandRes_isUsed:1;
+	unsigned int PreChargeRes_isUsed:1;
+	unsigned int ServicePaymentSelectionReq_isUsed:1;
+	unsigned int SessionStopReq_isUsed:1;
+	unsigned int ServicePaymentSelectionRes_isUsed:1;
+	unsigned int SessionStopRes_isUsed:1;
+	unsigned int ChargeParameterDiscoveryReq_isUsed:1;
+	unsigned int ChargeParameterDiscoveryRes_isUsed:1;
+	unsigned int ServiceDetailReq_isUsed:1;
+	unsigned int ServiceDetailRes_isUsed:1;
+
+
+	int _warning_;
+};
+
+/* Initialization methods for structs */
+
+void init_dinEXIDocument(struct dinEXIDocument* exiDoc);
+void init_dinPreChargeReqType(struct dinPreChargeReqType* dinPreChargeReqType);
+void init_dinNotificationType(struct dinNotificationType* dinNotificationType);
+void init_dinServiceTagType(struct dinServiceTagType* dinServiceTagType);
+void init_dinCostType(struct dinCostType* dinCostType);
+void init_dinX509DataType(struct dinX509DataType* dinX509DataType);
+void init_dinBodyType(struct dinBodyType* dinBodyType);
+void init_dinRetrievalMethodType(struct dinRetrievalMethodType* dinRetrievalMethodType);
+void init_dinCertificateInstallationReqType(struct dinCertificateInstallationReqType* dinCertificateInstallationReqType);
+void init_dinAC_EVChargeParameterType(struct dinAC_EVChargeParameterType* dinAC_EVChargeParameterType);
+void init_dinObjectType(struct dinObjectType* dinObjectType);
+void init_dinContractAuthenticationResType(struct dinContractAuthenticationResType* dinContractAuthenticationResType);
+void init_dinChargingProfileType(struct dinChargingProfileType* dinChargingProfileType);
+void init_dinCertificateUpdateResType(struct dinCertificateUpdateResType* dinCertificateUpdateResType);
+void init_dinReferenceType(struct dinReferenceType* dinReferenceType);
+void init_dinPMaxScheduleEntryType(struct dinPMaxScheduleEntryType* dinPMaxScheduleEntryType);
+void init_dinServicePaymentSelectionReqType(struct dinServicePaymentSelectionReqType* dinServicePaymentSelectionReqType);
+void init_dinCertificateInstallationResType(struct dinCertificateInstallationResType* dinCertificateInstallationResType);
+void init_dinSelectedServiceType(struct dinSelectedServiceType* dinSelectedServiceType);
+void init_dinDC_EVStatusType(struct dinDC_EVStatusType* dinDC_EVStatusType);
+void init_dinPGPDataType(struct dinPGPDataType* dinPGPDataType);
+void init_dinCurrentDemandResType(struct dinCurrentDemandResType* dinCurrentDemandResType);
+void init_dinCableCheckReqType(struct dinCableCheckReqType* dinCableCheckReqType);
+void init_dinChargingStatusResType(struct dinChargingStatusResType* dinChargingStatusResType);
+void init_dinWeldingDetectionReqType(struct dinWeldingDetectionReqType* dinWeldingDetectionReqType);
+void init_dinServiceParameterListType(struct dinServiceParameterListType* dinServiceParameterListType);
+void init_dinCertificateChainType(struct dinCertificateChainType* dinCertificateChainType);
+void init_dinPowerDeliveryResType(struct dinPowerDeliveryResType* dinPowerDeliveryResType);
+void init_dinAC_EVSEChargeParameterType(struct dinAC_EVSEChargeParameterType* dinAC_EVSEChargeParameterType);
+void init_dinAnonType_V2G_Message(struct dinAnonType_V2G_Message* dinAnonType_V2G_Message);
+void init_dinConsumptionCostType(struct dinConsumptionCostType* dinConsumptionCostType);
+void init_dinDC_EVSEStatusType(struct dinDC_EVSEStatusType* dinDC_EVSEStatusType);
+void init_dinWeldingDetectionResType(struct dinWeldingDetectionResType* dinWeldingDetectionResType);
+void init_dinSessionSetupReqType(struct dinSessionSetupReqType* dinSessionSetupReqType);
+void init_dinSessionSetupResType(struct dinSessionSetupResType* dinSessionSetupResType);
+void init_dinServiceDetailResType(struct dinServiceDetailResType* dinServiceDetailResType);
+void init_dinSPKIDataType(struct dinSPKIDataType* dinSPKIDataType);
+void init_dinPowerDeliveryReqType(struct dinPowerDeliveryReqType* dinPowerDeliveryReqType);
+void init_dinPreChargeResType(struct dinPreChargeResType* dinPreChargeResType);
+void init_dinCanonicalizationMethodType(struct dinCanonicalizationMethodType* dinCanonicalizationMethodType);
+void init_dinServiceChargeType(struct dinServiceChargeType* dinServiceChargeType);
+void init_dinEVChargeParameterType(struct dinEVChargeParameterType* dinEVChargeParameterType);
+void init_dinSAScheduleListType(struct dinSAScheduleListType* dinSAScheduleListType);
+void init_dinSASchedulesType(struct dinSASchedulesType* dinSASchedulesType);
+void init_dinPhysicalValueType(struct dinPhysicalValueType* dinPhysicalValueType);
+void init_dinSAScheduleTupleType(struct dinSAScheduleTupleType* dinSAScheduleTupleType);
+void init_dinCertificateUpdateReqType(struct dinCertificateUpdateReqType* dinCertificateUpdateReqType);
+void init_dinSignatureMethodType(struct dinSignatureMethodType* dinSignatureMethodType);
+void init_dinDigestMethodType(struct dinDigestMethodType* dinDigestMethodType);
+void init_dinKeyValueType(struct dinKeyValueType* dinKeyValueType);
+void init_dinContractAuthenticationReqType(struct dinContractAuthenticationReqType* dinContractAuthenticationReqType);
+void init_dinServiceDiscoveryReqType(struct dinServiceDiscoveryReqType* dinServiceDiscoveryReqType);
+void init_dinServiceDetailReqType(struct dinServiceDetailReqType* dinServiceDetailReqType);
+void init_dinSignedInfoType(struct dinSignedInfoType* dinSignedInfoType);
+void init_dinMeteringReceiptReqType(struct dinMeteringReceiptReqType* dinMeteringReceiptReqType);
+void init_dinX509IssuerSerialType(struct dinX509IssuerSerialType* dinX509IssuerSerialType);
+void init_dinTransformsType(struct dinTransformsType* dinTransformsType);
+void init_dinParameterType(struct dinParameterType* dinParameterType);
+void init_dinIntervalType(struct dinIntervalType* dinIntervalType);
+void init_dinRelativeTimeIntervalType(struct dinRelativeTimeIntervalType* dinRelativeTimeIntervalType);
+void init_dinKeyInfoType(struct dinKeyInfoType* dinKeyInfoType);
+void init_dinEntryType(struct dinEntryType* dinEntryType);
+void init_dinEVStatusType(struct dinEVStatusType* dinEVStatusType);
+void init_dinChargingStatusReqType(struct dinChargingStatusReqType* dinChargingStatusReqType);
+void init_dinChargeParameterDiscoveryResType(struct dinChargeParameterDiscoveryResType* dinChargeParameterDiscoveryResType);
+void init_dinPMaxScheduleType(struct dinPMaxScheduleType* dinPMaxScheduleType);
+void init_dinDC_EVSEChargeParameterType(struct dinDC_EVSEChargeParameterType* dinDC_EVSEChargeParameterType);
+void init_dinCableCheckResType(struct dinCableCheckResType* dinCableCheckResType);
+void init_dinTransformType(struct dinTransformType* dinTransformType);
+void init_dinParameterSetType(struct dinParameterSetType* dinParameterSetType);
+void init_dinSubCertificatesType(struct dinSubCertificatesType* dinSubCertificatesType);
+void init_dinDC_EVPowerDeliveryParameterType(struct dinDC_EVPowerDeliveryParameterType* dinDC_EVPowerDeliveryParameterType);
+void init_dinPaymentDetailsReqType(struct dinPaymentDetailsReqType* dinPaymentDetailsReqType);
+void init_dinDC_EVChargeParameterType(struct dinDC_EVChargeParameterType* dinDC_EVChargeParameterType);
+void init_dinSelectedServiceListType(struct dinSelectedServiceListType* dinSelectedServiceListType);
+void init_dinServiceDiscoveryResType(struct dinServiceDiscoveryResType* dinServiceDiscoveryResType);
+void init_dinPaymentDetailsResType(struct dinPaymentDetailsResType* dinPaymentDetailsResType);
+void init_dinServiceType(struct dinServiceType* dinServiceType);
+void init_dinEVPowerDeliveryParameterType(struct dinEVPowerDeliveryParameterType* dinEVPowerDeliveryParameterType);
+void init_dinBodyBaseType(struct dinBodyBaseType* dinBodyBaseType);
+void init_dinCurrentDemandReqType(struct dinCurrentDemandReqType* dinCurrentDemandReqType);
+void init_dinMeteringReceiptResType(struct dinMeteringReceiptResType* dinMeteringReceiptResType);
+void init_dinPaymentOptionsType(struct dinPaymentOptionsType* dinPaymentOptionsType);
+void init_dinMessageHeaderType(struct dinMessageHeaderType* dinMessageHeaderType);
+void init_dinAC_EVSEStatusType(struct dinAC_EVSEStatusType* dinAC_EVSEStatusType);
+void init_dinSalesTariffType(struct dinSalesTariffType* dinSalesTariffType);
+void init_dinChargeParameterDiscoveryReqType(struct dinChargeParameterDiscoveryReqType* dinChargeParameterDiscoveryReqType);
+void init_dinServicePaymentSelectionResType(struct dinServicePaymentSelectionResType* dinServicePaymentSelectionResType);
+void init_dinEVSEStatusType(struct dinEVSEStatusType* dinEVSEStatusType);
+void init_dinManifestType(struct dinManifestType* dinManifestType);
+void init_dinListOfRootCertificateIDsType(struct dinListOfRootCertificateIDsType* dinListOfRootCertificateIDsType);
+void init_dinServiceTagListType(struct dinServiceTagListType* dinServiceTagListType);
+void init_dinRSAKeyValueType(struct dinRSAKeyValueType* dinRSAKeyValueType);
+void init_dinEVSEChargeParameterType(struct dinEVSEChargeParameterType* dinEVSEChargeParameterType);
+void init_dinSignaturePropertiesType(struct dinSignaturePropertiesType* dinSignaturePropertiesType);
+void init_dinDSAKeyValueType(struct dinDSAKeyValueType* dinDSAKeyValueType);
+void init_dinProfileEntryType(struct dinProfileEntryType* dinProfileEntryType);
+void init_dinSignatureValueType(struct dinSignatureValueType* dinSignatureValueType);
+void init_dinSessionStopResType(struct dinSessionStopResType* dinSessionStopResType);
+void init_dinMeterInfoType(struct dinMeterInfoType* dinMeterInfoType);
+void init_dinSalesTariffEntryType(struct dinSalesTariffEntryType* dinSalesTariffEntryType);
+void init_dinSessionStopType(struct dinSessionStopType* dinSessionStopType);
+void init_dinSignaturePropertyType(struct dinSignaturePropertyType* dinSignaturePropertyType);
+void init_dinSignatureType(struct dinSignatureType* dinSignatureType);
+
+
+#endif /* DEPLOY_DIN_CODEC */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

File diff suppressed because it is too large
+ 1074 - 0
src/din/dinEXIDatatypesDecoder.c


+ 62 - 0
src/din/dinEXIDatatypesDecoder.h

@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2007-2014 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.9.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * <p>Code generated by EXIdizer</p>
+ * <p>Schema: V2G_CI_MsgDef.xsd</p>
+ *
+ *
+ ********************************************************************/
+
+
+
+/**
+ * \file 	EXIDatatypesDecoder.h
+ * \brief 	Decoder for datatype definitions
+ *
+ */
+
+#ifndef EXI_din_DATATYPES_DECODER_H
+#define EXI_din_DATATYPES_DECODER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#include "dinEXIDatatypes.h"
+
+#if DEPLOY_DIN_CODEC == SUPPORT_YES
+
+#include <stdint.h>
+
+#include "EXITypes.h"
+
+int decode_dinExiDocument(bitstream_t* stream, struct dinEXIDocument* exiDoc);
+
+#endif /* DEPLOY_DIN_CODEC */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

File diff suppressed because it is too large
+ 717 - 0
src/din/dinEXIDatatypesEncoder.c


+ 63 - 0
src/din/dinEXIDatatypesEncoder.h

@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2007-2014 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.9.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * <p>Code generated by EXIdizer</p>
+ * <p>Schema: V2G_CI_MsgDef.xsd</p>
+ *
+ *
+ ********************************************************************/
+
+
+
+/**
+ * \file 	EXIDatatypesEncoder.h
+ * \brief 	Encoder for datatype definitions
+ *
+ */
+
+#ifndef EXI_din_DATATYPES_ENCODER_H
+#define EXI_din_DATATYPES_ENCODER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#include "dinEXIDatatypes.h"
+
+#if DEPLOY_DIN_CODEC == SUPPORT_YES
+
+#include <stdint.h>
+
+#include "EXITypes.h"
+
+
+int encode_dinExiDocument(bitstream_t* stream, struct dinEXIDocument* exiDoc);
+
+#endif /* DEPLOY_DIN_CODEC */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 1 - 1
src/test/main.c

@@ -19,7 +19,7 @@
  *
  * @author Daniel.Peintner.EXT@siemens.com
  * @author Sebastian.Kaebisch@siemens.com
- * @version 0.9
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Switch for sample programs: EXI codec only or for entire V2G example</p>

+ 1 - 1
src/test/main.h

@@ -19,7 +19,7 @@
  *
  * @author Daniel.Peintner.EXT@siemens.com
  * @author Sebastian.Kaebisch@siemens.com
- * @version 0.9
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  *

+ 2 - 2
src/test/main_databinder.c

@@ -18,7 +18,7 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer</p>
@@ -69,7 +69,7 @@ int main_databinder(int argc, char *argv[]) {
 	struct v2gEXIDocument exiDoc;
 	int errn = 0;
 
-	bitstream_t iStream, oStream;
+	bitstream_t iStream, oStream;
 
 #if EXI_STREAM == BYTE_ARRAY
 	uint16_t posDecode;

+ 10 - 11
src/test/main_example.c

@@ -19,7 +19,7 @@
  *
  * @author Daniel.Peintner.EXT@siemens.com
  * @author Sebastian.Kaebisch@siemens.com
- * @version 0.9 
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  *
@@ -147,9 +147,8 @@ static int deserializeStream2EXI(bitstream_t* streamIn, struct v2gEXIDocument* e
 	return errn;
 }
 
-
 /** Example implementation of the app handshake protocol for the EVSE side  */
-static int appHandshakeHandler(bitstream_t iStream, bitstream_t oStream) {
+static int appHandshakeHandler(bitstream_t* iStream, bitstream_t* oStream) {
 	struct appHandEXIDocument appHandResp;
 	int i;
 	struct appHandEXIDocument exiDoc;
@@ -157,9 +156,9 @@ static int appHandshakeHandler(bitstream_t iStream, bitstream_t oStream) {
 	uint16_t payloadLengthDec;
 
 
-	if ( (errn = read_v2gtpHeader(iStream.data, &payloadLengthDec)) == 0) {
-		*iStream.pos = V2GTP_HEADER_LENGTH;
-		if( (errn = decode_appHandExiDocument(&iStream, &exiDoc)) ) {
+	if ( (errn = read_v2gtpHeader(iStream->data, &payloadLengthDec)) == 0) {
+		*iStream->pos = V2GTP_HEADER_LENGTH;
+		if( (errn = decode_appHandExiDocument(iStream, &exiDoc)) ) {
 			/* an error occured */
 			return errn;
 		}
@@ -188,9 +187,9 @@ static int appHandshakeHandler(bitstream_t iStream, bitstream_t oStream) {
 	appHandResp.supportedAppProtocolRes.SchemaID = exiDoc.supportedAppProtocolReq.AppProtocol.array[0].SchemaID; /* signal the protocol by the provided schema id*/
 	appHandResp.supportedAppProtocolRes.SchemaID_isUsed = 1u;
 
-	*oStream.pos = V2GTP_HEADER_LENGTH;
-	if( (errn = encode_appHandExiDocument(&oStream, &appHandResp)) == 0) {
-		errn = write_v2gtpHeader(oStream.data, (*oStream.pos)-V2GTP_HEADER_LENGTH, V2GTP_EXI_TYPE);
+	*oStream->pos = V2GTP_HEADER_LENGTH;
+	if( (errn = encode_appHandExiDocument(oStream, &appHandResp)) == 0) {
+		errn = write_v2gtpHeader(oStream->data, (*oStream->pos)-V2GTP_HEADER_LENGTH, V2GTP_EXI_TYPE);
 	}
 
 
@@ -205,7 +204,7 @@ static int appHandshake()
 
 	uint16_t payloadLengthDec;
 	uint16_t pos1 = V2GTP_HEADER_LENGTH; /* v2gtp header */
-	uint16_t pos2;
+	uint16_t pos2 = 0;
 
 	struct appHandEXIDocument handshake;
 	struct appHandEXIDocument handshakeResp;
@@ -254,7 +253,7 @@ static int appHandshake()
 
 	if (errn == 0) {
 		/* read app handshake request & generate response */
-		errn = appHandshakeHandler(stream1, stream2);
+		errn = appHandshakeHandler(&stream1, &stream2);
 	}
 
 	if (errn == 0) {

+ 3 - 3
src/transport/v2gtp.c

@@ -20,7 +20,7 @@
  *
  * @author Sebastian.Kaebisch@siemens.com
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.9
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  ********************************************************************/
@@ -57,8 +57,8 @@ int write_v2gtpHeader(uint8_t* outStream, uint16_t outStreamLength, uint16_t pay
 	/* write payload length */
 	outStream[7] = (uint8_t)(outStreamLength & 0xFF);
 	outStream[6] = (uint8_t)(outStreamLength>>8 & 0xFF);
-	outStream[5] = (uint8_t)(outStreamLength>>16 & 0xFF);
-	outStream[4] = (uint8_t)(outStreamLength>>24 & 0xFF);
+	outStream[5] = (uint8_t) 0; /* uint16 only, no need for (outStreamLength>>16 & 0xFF); */
+	outStream[4] = (uint8_t) 0; /* uint16 only, no need for (outStreamLength>>24 & 0xFF); */
 
 	/* here, the outStream length have to be resized by the v2gtp offset*/
 	/**outStreamLength += V2GTP_HEADER_LENGTH;*/

+ 1 - 1
src/transport/v2gtp.h

@@ -19,7 +19,7 @@
 /*******************************************************************
  *
  * @author Sebastian.Kaebisch@siemens.com
- * @version 0.9
+ * @version 0.9.1
  * @contact Joerg.Heuer@siemens.com
  *
  ********************************************************************/

Some files were not shown because too many files changed in this diff