feat: Add enhanced EXI viewer with XML decode capability
- Implement complete CurrentDemandReq/CurrentDemandRes parsing (24 total fields) - Add enhanced_exi_viewer.c with detailed message analysis - Support -decode option for clean XML output (file-ready format) - Enable ISO1, ISO2, DIN codec support in build configuration - Fix C99 compatibility issues in makefiles (change -ansi to -std=c99) - Create test utilities for hex string to EXI conversion - Generate test files: test3.exi (CurrentDemandRes), test4.exi (CurrentDemandReq) Features: * Dual output modes: detailed analysis (default) vs XML (-decode) * Complete V2G message type detection and parsing * Session ID display in hex and ASCII formats * Voltage/current/power readings with proper units * All optional fields and status flags supported 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
		
							
								
								
									
										64
									
								
								src/appHandshake/appHandEXIDatatypes.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/appHandshake/appHandEXIDatatypes.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_AppProtocol.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "appHandEXIDatatypes.h" | ||||
| #include "EXITypes.h" | ||||
|  | ||||
|  | ||||
| #ifndef EXI_appHand_DATATYPES_C | ||||
| #define EXI_appHand_DATATYPES_C | ||||
|  | ||||
|  | ||||
|  | ||||
| void init_appHandEXIDocument(struct appHandEXIDocument* exiDoc) { | ||||
| 	exiDoc->supportedAppProtocolReq_isUsed = 0u; | ||||
| 	exiDoc->supportedAppProtocolRes_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_appHandAppProtocolType(struct appHandAppProtocolType* appHandAppProtocolType) { | ||||
| } | ||||
|  | ||||
| void init_appHandAnonType_supportedAppProtocolReq(struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) { | ||||
| 	appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_appHandAnonType_supportedAppProtocolRes(struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) { | ||||
| 	appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed = 0u; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										133
									
								
								src/appHandshake/appHandEXIDatatypes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								src/appHandshake/appHandEXIDatatypes.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,133 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_AppProtocol.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EXIDatatypes.h | ||||
|  * \brief 	Datatype definitions and structs for given XML Schema definitions and initialization methods | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_appHand_DATATYPES_H | ||||
| #define EXI_appHand_DATATYPES_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
|  | ||||
| /* Datatype definitions and structs for given XML Schema definitions */ | ||||
|  | ||||
| #define UNION_YES 1 | ||||
| #define UNION_NO 2 | ||||
| #define SAVE_MEMORY_WITH_UNNAMED_UNION UNION_YES | ||||
|  | ||||
| /* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)',  derivedBy='RESTRICTION'.  */ | ||||
| #define appHandAppProtocolType_ProtocolNamespace_CHARACTERS_SIZE 100 /* XML schema facet maxLength for urn:iso:15118:2:2010:AppProtocol,protocolNamespaceType is 100 */ | ||||
| struct appHandAppProtocolType { | ||||
| 	/* element: ProtocolNamespace, urn:iso:15118:2:2010:AppProtocol,protocolNamespaceType */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[appHandAppProtocolType_ProtocolNamespace_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ProtocolNamespace ; | ||||
| 	/* element: VersionNumberMajor, http://www.w3.org/2001/XMLSchema,unsignedInt */ | ||||
| 	uint32_t VersionNumberMajor ; | ||||
| 	/* element: VersionNumberMinor, http://www.w3.org/2001/XMLSchema,unsignedInt */ | ||||
| 	uint32_t VersionNumberMinor ; | ||||
| 	/* element: SchemaID, urn:iso:15118:2:2010:AppProtocol,idType */ | ||||
| 	uint8_t SchemaID ; | ||||
| 	/* element: Priority, urn:iso:15118:2:2010:AppProtocol,priorityType */ | ||||
| 	uint8_t Priority ; | ||||
| }; | ||||
|  | ||||
| typedef enum { | ||||
| 	appHandresponseCodeType_OK_SuccessfulNegotiation = 0, | ||||
| 	appHandresponseCodeType_OK_SuccessfulNegotiationWithMinorDeviation = 1, | ||||
| 	appHandresponseCodeType_Failed_NoNegotiation = 2 | ||||
| } appHandresponseCodeType; | ||||
|  | ||||
| /* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ResponseCode,SchemaID{0-1})',  derivedBy='RESTRICTION'.  */ | ||||
| struct appHandAnonType_supportedAppProtocolRes { | ||||
| 	/* element: ResponseCode, urn:iso:15118:2:2010:AppProtocol,responseCodeType */ | ||||
| 	appHandresponseCodeType ResponseCode ; | ||||
| 	/* element: SchemaID, urn:iso:15118:2:2010:AppProtocol,idType */ | ||||
| 	uint8_t SchemaID ; | ||||
| 	unsigned int SchemaID_isUsed:1; | ||||
| }; | ||||
|  | ||||
| /* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(AppProtocol{1-20})',  derivedBy='RESTRICTION'.  */ | ||||
| #define appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE 5 | ||||
| struct appHandAnonType_supportedAppProtocolReq { | ||||
| 	/* element: AppProtocol, Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)',  derivedBy='RESTRICTION'.  */ | ||||
| 	struct { | ||||
| 		struct appHandAppProtocolType array[appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE]; | ||||
| 		uint16_t arrayLen; | ||||
| 	} AppProtocol; | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| /* Possible root elements of EXI Document */ | ||||
| struct appHandEXIDocument { | ||||
| #if SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES | ||||
| 	union { | ||||
| #endif /* SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES */  | ||||
| 	struct appHandAnonType_supportedAppProtocolReq supportedAppProtocolReq ; | ||||
| 	struct appHandAnonType_supportedAppProtocolRes supportedAppProtocolRes ; | ||||
| #if SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES | ||||
| 	}; | ||||
| #endif /* SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES */  | ||||
| 	unsigned int supportedAppProtocolReq_isUsed:1; | ||||
| 	unsigned int supportedAppProtocolRes_isUsed:1; | ||||
|  | ||||
|  | ||||
| 	int _warning_; | ||||
| }; | ||||
|  | ||||
| /* Initialization methods for structs */ | ||||
|  | ||||
| void init_appHandEXIDocument(struct appHandEXIDocument* exiDoc); | ||||
| void init_appHandAppProtocolType(struct appHandAppProtocolType* appHandAppProtocolType); | ||||
| void init_appHandAnonType_supportedAppProtocolReq(struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq); | ||||
| void init_appHandAnonType_supportedAppProtocolRes(struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes); | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										896
									
								
								src/appHandshake/appHandEXIDatatypesDecoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										896
									
								
								src/appHandshake/appHandEXIDatatypesDecoder.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,896 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_AppProtocol.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| #include "appHandEXIDatatypesDecoder.h" | ||||
|  | ||||
| #include "DecoderChannel.h" | ||||
| #include "EXIHeaderDecoder.h" | ||||
|  | ||||
| #include "appHandEXIDatatypes.h" | ||||
| #include "ErrorCodes.h" | ||||
|  | ||||
| #ifndef EXI_appHand_DATATYPES_DECODER_C | ||||
| #define EXI_appHand_DATATYPES_DECODER_C | ||||
|  | ||||
| /** event-code */ | ||||
| static uint32_t eventCode; | ||||
| static int errn; | ||||
| static uint32_t uint32; | ||||
|  | ||||
|  | ||||
| /* Forward Declarations */ | ||||
| static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType); | ||||
| static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq); | ||||
| static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes); | ||||
|  | ||||
| /* Deviant data decoding (skip functions) */ | ||||
|  | ||||
|  | ||||
|  | ||||
| /* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)',  derivedBy='RESTRICTION'.  */ | ||||
| static int decode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType) { | ||||
| 	int grammarID = 0; | ||||
| 	int done = 0; | ||||
| 	 | ||||
| 	init_appHandAppProtocolType(appHandAppProtocolType); | ||||
| 	 | ||||
| 	while(!done) { | ||||
| 		switch(grammarID) { | ||||
| 		case 0: | ||||
| 			/* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					/* FirstStartTag[CHARACTERS[STRING]] */ | ||||
| 					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 					if(errn == 0) { | ||||
| 						if(eventCode == 0) { | ||||
| 							errn = decodeUnsignedInteger16(stream, &appHandAppProtocolType->ProtocolNamespace.charactersLen); | ||||
| 							if (errn == 0) { | ||||
| 								if (appHandAppProtocolType->ProtocolNamespace.charactersLen >= 2) { | ||||
| 									appHandAppProtocolType->ProtocolNamespace.charactersLen = (uint16_t)(appHandAppProtocolType->ProtocolNamespace.charactersLen - 2); /* string table miss */ | ||||
| 									errn = decodeCharacters(stream, appHandAppProtocolType->ProtocolNamespace.charactersLen, appHandAppProtocolType->ProtocolNamespace.characters, appHandAppProtocolType_ProtocolNamespace_CHARACTERS_SIZE); | ||||
| 								} else { | ||||
| 									/* string table hit */ | ||||
| 									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED; | ||||
| 								} | ||||
| 							} | ||||
| 						} else { | ||||
| 							/* Second level event (e.g., xsi:type, xsi:nil, ...) */ | ||||
| 							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; | ||||
| 						} | ||||
| 					} | ||||
| 					if(errn == 0) { | ||||
| 						/* valid EE for simple element START_ELEMENT(ProtocolNamespace) ? */ | ||||
| 						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 						if(eventCode == 0) { | ||||
| 						grammarID = 1; | ||||
| 						} else { | ||||
| 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ | ||||
| 						} | ||||
| 					} | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 1: | ||||
| 			/* Element[START_ELEMENT(VersionNumberMajor)] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ | ||||
| 					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 					if(errn == 0) { | ||||
| 						if(eventCode == 0) { | ||||
| 							errn = decodeUnsignedInteger32(stream, &appHandAppProtocolType->VersionNumberMajor); | ||||
| 						} else { | ||||
| 							/* Second level event (e.g., xsi:type, xsi:nil, ...) */ | ||||
| 							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; | ||||
| 						} | ||||
| 					} | ||||
| 					if(errn == 0) { | ||||
| 						/* valid EE for simple element START_ELEMENT(VersionNumberMajor) ? */ | ||||
| 						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 						if(eventCode == 0) { | ||||
| 						grammarID = 2; | ||||
| 						} else { | ||||
| 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ | ||||
| 						} | ||||
| 					} | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 2: | ||||
| 			/* Element[START_ELEMENT(VersionNumberMinor)] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ | ||||
| 					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 					if(errn == 0) { | ||||
| 						if(eventCode == 0) { | ||||
| 							errn = decodeUnsignedInteger32(stream, &appHandAppProtocolType->VersionNumberMinor); | ||||
| 						} else { | ||||
| 							/* Second level event (e.g., xsi:type, xsi:nil, ...) */ | ||||
| 							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; | ||||
| 						} | ||||
| 					} | ||||
| 					if(errn == 0) { | ||||
| 						/* valid EE for simple element START_ELEMENT(VersionNumberMinor) ? */ | ||||
| 						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 						if(eventCode == 0) { | ||||
| 						grammarID = 3; | ||||
| 						} else { | ||||
| 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ | ||||
| 						} | ||||
| 					} | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 3: | ||||
| 			/* Element[START_ELEMENT(SchemaID)] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ | ||||
| 					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 					if(errn == 0) { | ||||
| 						if(eventCode == 0) { | ||||
| 							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); | ||||
| 							appHandAppProtocolType->SchemaID = (uint8_t)(uint32 + 0); | ||||
| 						} else { | ||||
| 							/* Second level event (e.g., xsi:type, xsi:nil, ...) */ | ||||
| 							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; | ||||
| 						} | ||||
| 					} | ||||
| 					if(errn == 0) { | ||||
| 						/* valid EE for simple element START_ELEMENT(SchemaID) ? */ | ||||
| 						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 						if(eventCode == 0) { | ||||
| 						grammarID = 4; | ||||
| 						} else { | ||||
| 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ | ||||
| 						} | ||||
| 					} | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 4: | ||||
| 			/* Element[START_ELEMENT(Priority)] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ | ||||
| 					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 					if(errn == 0) { | ||||
| 						if(eventCode == 0) { | ||||
| 							errn = decodeNBitUnsignedInteger(stream, 5, &(uint32)); | ||||
| 							appHandAppProtocolType->Priority = (uint8_t)(uint32 + 1); | ||||
| 						} else { | ||||
| 							/* Second level event (e.g., xsi:type, xsi:nil, ...) */ | ||||
| 							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; | ||||
| 						} | ||||
| 					} | ||||
| 					if(errn == 0) { | ||||
| 						/* valid EE for simple element START_ELEMENT(Priority) ? */ | ||||
| 						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 						if(eventCode == 0) { | ||||
| 						grammarID = 5; | ||||
| 						} else { | ||||
| 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ | ||||
| 						} | ||||
| 					} | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 5: | ||||
| 			/* Element[END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		default: | ||||
| 			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; | ||||
| 			break; | ||||
| 		} | ||||
| 		if(errn) { | ||||
| 			done = 1; | ||||
| 		} | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(AppProtocol{1-20})',  derivedBy='RESTRICTION'.  */ | ||||
| static int decode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) { | ||||
| 	int grammarID = 7; | ||||
| 	int done = 0; | ||||
| 	 | ||||
| 	init_appHandAnonType_supportedAppProtocolReq(appHandAnonType_supportedAppProtocolReq); | ||||
| 	 | ||||
| 	while(!done) { | ||||
| 		switch(grammarID) { | ||||
| 		case 7: | ||||
| 			/* FirstStartTag[START_ELEMENT(AppProtocol)] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 8; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 8: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 9; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 9: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 10; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 10: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 11; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 11: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 12; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 12: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 13; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 13: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 14; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 14: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 15; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 15: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 16; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 16: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 17; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 17: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 18; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 18: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 19; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 19: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 20; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 20: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 21; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 21: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 22; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 22: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 23; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 23: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 24; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 24: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 25; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 25: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 26; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 26: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					if (appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen < appHandAnonType_supportedAppProtocolReq_AppProtocol_ARRAY_SIZE) { | ||||
| 						errn = decode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array[appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen++]); | ||||
| 					} else {  | ||||
| 						errn = EXI_ERROR_OUT_OF_BOUNDS; | ||||
| 					} | ||||
| 					grammarID = 5; | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 5: | ||||
| 			/* Element[END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		default: | ||||
| 			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; | ||||
| 			break; | ||||
| 		} | ||||
| 		if(errn) { | ||||
| 			done = 1; | ||||
| 		} | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ResponseCode,SchemaID{0-1})',  derivedBy='RESTRICTION'.  */ | ||||
| static int decode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) { | ||||
| 	int grammarID = 27; | ||||
| 	int done = 0; | ||||
| 	 | ||||
| 	init_appHandAnonType_supportedAppProtocolRes(appHandAnonType_supportedAppProtocolRes); | ||||
| 	 | ||||
| 	while(!done) { | ||||
| 		switch(grammarID) { | ||||
| 		case 27: | ||||
| 			/* FirstStartTag[START_ELEMENT(ResponseCode)] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					/* FirstStartTag[CHARACTERS[ENUMERATION]] */ | ||||
| 					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 					if(errn == 0) { | ||||
| 						if(eventCode == 0) { | ||||
| 							errn = decodeNBitUnsignedInteger(stream, 2, &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 = 28; | ||||
| 						} else { | ||||
| 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ | ||||
| 						} | ||||
| 					} | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 28: | ||||
| 			/* Element[START_ELEMENT(SchemaID), END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ | ||||
| 					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 					if(errn == 0) { | ||||
| 						if(eventCode == 0) { | ||||
| 							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32)); | ||||
| 							appHandAnonType_supportedAppProtocolRes->SchemaID = (uint8_t)(uint32 + 0); | ||||
| 							appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed = 1u; | ||||
| 						} else { | ||||
| 							/* Second level event (e.g., xsi:type, xsi:nil, ...) */ | ||||
| 							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS; | ||||
| 						} | ||||
| 					} | ||||
| 					if(errn == 0) { | ||||
| 						/* valid EE for simple element START_ELEMENT(SchemaID) ? */ | ||||
| 						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 						if(eventCode == 0) { | ||||
| 						grammarID = 5; | ||||
| 						} else { | ||||
| 							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */ | ||||
| 						} | ||||
| 					} | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		case 5: | ||||
| 			/* Element[END_ELEMENT] */ | ||||
| 			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode); | ||||
| 			if (errn == 0) { | ||||
| 				switch(eventCode) { | ||||
| 				case 0: | ||||
| 					done = 1; | ||||
| 					grammarID = 6; | ||||
| 					break; | ||||
| 				default: | ||||
| 					errn = EXI_ERROR_UNKOWN_EVENT_CODE; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
| 		default: | ||||
| 			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; | ||||
| 			break; | ||||
| 		} | ||||
| 		if(errn) { | ||||
| 			done = 1; | ||||
| 		} | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| int decode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc) { | ||||
| 	errn = readEXIHeader(stream); | ||||
|  | ||||
| 	if(errn == 0) { | ||||
| 		/* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */ | ||||
| 		init_appHandEXIDocument(exiDoc); | ||||
| 		errn = decodeNBitUnsignedInteger(stream, 2, &eventCode); | ||||
| 		if(errn == 0) { | ||||
| 			switch(eventCode) { | ||||
| 			case 0: | ||||
| 				/* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq) */ | ||||
| 				errn = decode_appHandAnonType_supportedAppProtocolReq(stream, &exiDoc->supportedAppProtocolReq); | ||||
| 				exiDoc->supportedAppProtocolReq_isUsed = 1u; | ||||
| 				break; | ||||
| 			case 1: | ||||
| 				/* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes) */ | ||||
| 				errn = decode_appHandAnonType_supportedAppProtocolRes(stream, &exiDoc->supportedAppProtocolRes); | ||||
| 				exiDoc->supportedAppProtocolRes_isUsed = 1u; | ||||
| 				break; | ||||
| 			default: | ||||
| 				errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										57
									
								
								src/appHandshake/appHandEXIDatatypesDecoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								src/appHandshake/appHandEXIDatatypesDecoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_AppProtocol.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EXIDatatypesDecoder.h | ||||
|  * \brief 	Decoder for datatype definitions | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_appHand_DATATYPES_DECODER_H | ||||
| #define EXI_appHand_DATATYPES_DECODER_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
| #include "appHandEXIDatatypes.h" | ||||
|  | ||||
| int decode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										671
									
								
								src/appHandshake/appHandEXIDatatypesEncoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										671
									
								
								src/appHandshake/appHandEXIDatatypesEncoder.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,671 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_AppProtocol.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| #include "appHandEXIDatatypesEncoder.h" | ||||
|  | ||||
| #include "EncoderChannel.h" | ||||
| #include "EXIHeaderEncoder.h" | ||||
|  | ||||
| #include "appHandEXIDatatypes.h" | ||||
| #include "ErrorCodes.h" | ||||
|  | ||||
| #ifndef EXI_appHand_DATATYPES_ENCODER_C | ||||
| #define EXI_appHand_DATATYPES_ENCODER_C | ||||
|  | ||||
| static int errn; | ||||
|  | ||||
| /* Forward Declarations */ | ||||
| static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType); | ||||
| static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq); | ||||
| static int encode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes); | ||||
|  | ||||
|  | ||||
|  | ||||
| /* Complex type name='urn:iso:15118:2:2010:AppProtocol,AppProtocolType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ProtocolNamespace,VersionNumberMajor,VersionNumberMinor,SchemaID,Priority)',  derivedBy='RESTRICTION'.  */ | ||||
| static int encode_appHandAppProtocolType(bitstream_t* stream, struct appHandAppProtocolType* appHandAppProtocolType) { | ||||
| 	int grammarID = 0; | ||||
| 	int done = 0; | ||||
| 	 | ||||
| 	 | ||||
| 	while(!done) { | ||||
| 		switch(grammarID) { | ||||
| 		case 0: | ||||
| 			/* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */ | ||||
| 			if ( 1 == 1 ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 				if(errn == 0) { | ||||
| 					/* FirstStartTag[CHARACTERS[STRING]] */ | ||||
| 					errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					if(errn == 0) { | ||||
| 						/* encode string as string table miss (+2 len)*/ | ||||
| 						errn = encodeUnsignedInteger16(stream, (uint16_t)(appHandAppProtocolType->ProtocolNamespace.charactersLen + 2)); | ||||
| 						if (errn == 0) { | ||||
| 							errn = encodeCharacters(stream, appHandAppProtocolType->ProtocolNamespace.characters, appHandAppProtocolType->ProtocolNamespace.charactersLen); | ||||
| 						} | ||||
| 						/* valid EE */ | ||||
| 						errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					} | ||||
| 				} | ||||
| 				grammarID = 1; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 1: | ||||
| 			/* Element[START_ELEMENT(VersionNumberMajor)] */ | ||||
| 			if ( 1 == 1 ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 				if(errn == 0) { | ||||
| 					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ | ||||
| 					errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					if(errn == 0) { | ||||
| 						errn = encodeUnsignedInteger32(stream, appHandAppProtocolType->VersionNumberMajor); | ||||
| 						/* valid EE */ | ||||
| 						errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					} | ||||
| 				} | ||||
| 				grammarID = 2; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 2: | ||||
| 			/* Element[START_ELEMENT(VersionNumberMinor)] */ | ||||
| 			if ( 1 == 1 ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 				if(errn == 0) { | ||||
| 					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */ | ||||
| 					errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					if(errn == 0) { | ||||
| 						errn = encodeUnsignedInteger32(stream, appHandAppProtocolType->VersionNumberMinor); | ||||
| 						/* valid EE */ | ||||
| 						errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					} | ||||
| 				} | ||||
| 				grammarID = 3; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 3: | ||||
| 			/* Element[START_ELEMENT(SchemaID)] */ | ||||
| 			if ( 1 == 1 ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 				if(errn == 0) { | ||||
| 					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ | ||||
| 					errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					if(errn == 0) { | ||||
| 						errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(appHandAppProtocolType->SchemaID - 0)); | ||||
| 						/* valid EE */ | ||||
| 						errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					} | ||||
| 				} | ||||
| 				grammarID = 4; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 4: | ||||
| 			/* Element[START_ELEMENT(Priority)] */ | ||||
| 			if ( 1 == 1 ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 				if(errn == 0) { | ||||
| 					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ | ||||
| 					errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					if(errn == 0) { | ||||
| 						errn = encodeNBitUnsignedInteger(stream, 5, (uint32_t)(appHandAppProtocolType->Priority - 1)); | ||||
| 						/* valid EE */ | ||||
| 						errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					} | ||||
| 				} | ||||
| 				grammarID = 5; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 5: | ||||
| 			/* Element[END_ELEMENT] */ | ||||
| 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		default: | ||||
| 			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; | ||||
| 			break; | ||||
| 		} | ||||
| 		if(errn) { | ||||
| 			done = 1; | ||||
| 		} | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolReq',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(AppProtocol{1-20})',  derivedBy='RESTRICTION'.  */ | ||||
| static int encode_appHandAnonType_supportedAppProtocolReq(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolReq* appHandAnonType_supportedAppProtocolReq) { | ||||
| 	int grammarID = 7; | ||||
| 	int done = 0; | ||||
| 	 | ||||
| 	unsigned int appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex = 0; | ||||
| 	 | ||||
| 	while(!done) { | ||||
| 		switch(grammarID) { | ||||
| 		case 7: | ||||
| 			/* FirstStartTag[START_ELEMENT(AppProtocol)] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 8; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 8: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 9; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 9: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 10; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 10: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 11; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 11: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 12; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 12: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 13; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 13: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 14; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 14: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 15; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 15: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 16; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 16: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 17; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 17: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 18; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 18: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 19; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 19: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 20; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 20: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 21; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 21: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 22; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 22: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 23; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 23: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 24; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 24: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 25; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 25: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 26; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 26: | ||||
| 			/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] */ | ||||
| 			if (appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex < appHandAnonType_supportedAppProtocolReq->AppProtocol.arrayLen ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode_appHandAppProtocolType(stream, &appHandAnonType_supportedAppProtocolReq->AppProtocol.array [appHandAnonType_supportedAppProtocolReq_AppProtocol_currArrayIndex++]); | ||||
| 				} | ||||
| 				grammarID = 5; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 5: | ||||
| 			/* Element[END_ELEMENT] */ | ||||
| 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		default: | ||||
| 			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; | ||||
| 			break; | ||||
| 		} | ||||
| 		if(errn) { | ||||
| 			done = 1; | ||||
| 		} | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /* Complex type name='urn:iso:15118:2:2010:AppProtocol,#AnonType_supportedAppProtocolRes',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(ResponseCode,SchemaID{0-1})',  derivedBy='RESTRICTION'.  */ | ||||
| static int encode_appHandAnonType_supportedAppProtocolRes(bitstream_t* stream, struct appHandAnonType_supportedAppProtocolRes* appHandAnonType_supportedAppProtocolRes) { | ||||
| 	int grammarID = 27; | ||||
| 	int done = 0; | ||||
| 	 | ||||
| 	 | ||||
| 	while(!done) { | ||||
| 		switch(grammarID) { | ||||
| 		case 27: | ||||
| 			/* FirstStartTag[START_ELEMENT(ResponseCode)] */ | ||||
| 			if ( 1 == 1 ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 				if(errn == 0) { | ||||
| 					/* FirstStartTag[CHARACTERS[ENUMERATION]] */ | ||||
| 					errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					if(errn == 0) { | ||||
| 						errn = encodeNBitUnsignedInteger(stream, 2, appHandAnonType_supportedAppProtocolRes->ResponseCode); | ||||
| 						/* valid EE */ | ||||
| 						errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					} | ||||
| 				} | ||||
| 				grammarID = 28; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 28: | ||||
| 			/* Element[START_ELEMENT(SchemaID), END_ELEMENT] */ | ||||
| 			if ( appHandAnonType_supportedAppProtocolRes->SchemaID_isUsed == 1u ) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 				if(errn == 0) { | ||||
| 					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */ | ||||
| 					errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					if(errn == 0) { | ||||
| 						errn = encodeNBitUnsignedInteger(stream, 8, (uint32_t)(appHandAnonType_supportedAppProtocolRes->SchemaID - 0)); | ||||
| 						/* valid EE */ | ||||
| 						errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 					} | ||||
| 				} | ||||
| 				grammarID = 5; | ||||
| 			} else 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		case 5: | ||||
| 			/* Element[END_ELEMENT] */ | ||||
| 			if (1==1) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, 1, 0); | ||||
| 				if(errn == 0) { | ||||
| 					done = 1; | ||||
| 				} | ||||
| 				grammarID = 6; | ||||
| 			} else { | ||||
| 				errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 			} | ||||
| 			break; | ||||
| 		default: | ||||
| 			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID; | ||||
| 			break; | ||||
| 		} | ||||
| 		if(errn) { | ||||
| 			done = 1; | ||||
| 		} | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| int encode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc) { | ||||
| 	errn = writeEXIHeader(stream); | ||||
|  | ||||
| 	if(errn == 0) { | ||||
| 		/* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */ | ||||
| 		if ( exiDoc->supportedAppProtocolReq_isUsed == 1u ) {  | ||||
| 			/* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq) */ | ||||
| 			errn = encodeNBitUnsignedInteger(stream, 2, 0); | ||||
| 			if(errn == 0) { | ||||
| 				errn = encode_appHandAnonType_supportedAppProtocolReq(stream, &exiDoc->supportedAppProtocolReq ); | ||||
| 			} | ||||
| 		} else if ( exiDoc->supportedAppProtocolRes_isUsed == 1u ) {  | ||||
| 			/* START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes) */ | ||||
| 			errn = encodeNBitUnsignedInteger(stream, 2, 1); | ||||
| 			if(errn == 0) { | ||||
| 				errn = encode_appHandAnonType_supportedAppProtocolRes(stream, &exiDoc->supportedAppProtocolRes ); | ||||
| 			} | ||||
| 		} else { | ||||
| 			errn = EXI_ERROR_UNKOWN_EVENT; | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	if(errn == 0) { | ||||
| 		/* flush any pending bits */ | ||||
| 		errn = encodeFinish(stream); | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										58
									
								
								src/appHandshake/appHandEXIDatatypesEncoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/appHandshake/appHandEXIDatatypesEncoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_AppProtocol.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EXIDatatypesEncoder.h | ||||
|  * \brief 	Encoder for datatype definitions | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_appHand_DATATYPES_ENCODER_H | ||||
| #define EXI_appHand_DATATYPES_ENCODER_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
| #include "appHandEXIDatatypes.h" | ||||
|  | ||||
|  | ||||
| int encode_appHandExiDocument(bitstream_t* stream, struct appHandEXIDocument* exiDoc); | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										105
									
								
								src/codec/BitInputStream.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								src/codec/BitInputStream.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,105 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| #include "BitInputStream.h" | ||||
| #include "EXIConfig.h" | ||||
| #include "EXITypes.h" | ||||
| #include "ErrorCodes.h" | ||||
|  | ||||
| #ifndef BIT_INPUT_STREAM_C | ||||
| #define BIT_INPUT_STREAM_C | ||||
|  | ||||
| /* internal method to (re)fill buffer */ | ||||
| static int readBuffer(bitstream_t* stream) | ||||
| { | ||||
| 	int errn = 0; | ||||
| 	if(stream->capacity==0) | ||||
| 	{ | ||||
| #if EXI_STREAM == BYTE_ARRAY | ||||
| 		if ( (*stream->pos) < stream->size ) { | ||||
| 			stream->buffer = stream->data[(*stream->pos)++]; | ||||
| 			stream->capacity = BITS_IN_BYTE; | ||||
| 		} else { | ||||
| 			errn = EXI_ERROR_INPUT_STREAM_EOF; | ||||
| 		} | ||||
| #endif | ||||
| #if EXI_STREAM == FILE_STREAM | ||||
| 		stream->buffer = (uint8_t)(getc(stream->file)); | ||||
| 		/* EOF cannot be used, 0xFF valid value */ | ||||
| 		if ( feof(stream->file) || ferror(stream->file) ) { | ||||
| 			errn = EXI_ERROR_INPUT_STREAM_EOF; | ||||
| 		} else { | ||||
| 			stream->capacity = BITS_IN_BYTE; | ||||
| 		} | ||||
| #endif | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| int readBits(bitstream_t* stream, size_t num_bits, uint32_t* b) | ||||
| { | ||||
| 	int errn = readBuffer(stream); | ||||
| 	if (errn == 0) { | ||||
| 		/* read the bits in one step */ | ||||
| 		if(num_bits <= stream->capacity) { | ||||
| 			stream->capacity = (uint8_t)(stream->capacity - num_bits); | ||||
| 			*b = (uint32_t)((stream->buffer >> stream->capacity) & (0xff >> (BITS_IN_BYTE - num_bits))); | ||||
| 		} else { | ||||
| 			/* read bits as much as possible */ | ||||
| 			*b = (uint32_t)(stream->buffer & (0xff >> (BITS_IN_BYTE - stream->capacity))); | ||||
| 			num_bits = (num_bits - stream->capacity); | ||||
| 			stream->capacity = 0; | ||||
|  | ||||
| 			/* read whole bytes */ | ||||
| 			while(errn == 0 && num_bits >= 8) | ||||
| 			{ | ||||
| 				errn = readBuffer(stream); | ||||
| 				*b = ((*b) << BITS_IN_BYTE) | stream->buffer; | ||||
| 				num_bits = (num_bits - BITS_IN_BYTE); | ||||
| 				stream->capacity = 0; | ||||
| 			} | ||||
|  | ||||
| 			/* read the spare bits in the buffer */ | ||||
| 			if(errn == 0 && num_bits > 0) | ||||
| 			{ | ||||
| 				errn = readBuffer(stream); | ||||
| 				if (errn == 0) { | ||||
| 					*b = ( (*b) << num_bits) | (uint8_t)(stream->buffer  >> (BITS_IN_BYTE - num_bits)) ; | ||||
| 					stream->capacity = (uint8_t)(BITS_IN_BYTE - num_bits); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										67
									
								
								src/codec/BitInputStream.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								src/codec/BitInputStream.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	BitInputStream.h | ||||
|  * \brief 	Bit Input Stream | ||||
|  * | ||||
|  * 			Read bits and bytes from an underlying input stream. | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef BIT_INPUT_STREAM_H | ||||
| #define BIT_INPUT_STREAM_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
| /** | ||||
|  * \brief 		Read bits | ||||
|  * | ||||
|  * 				Read the next num_bits bits and returns result an integer. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       num_bits		Number of bits | ||||
|  * \param       b		   		Integer value (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int readBits(bitstream_t* stream, size_t num_bits, uint32_t* b); | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										124
									
								
								src/codec/BitOutputStream.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								src/codec/BitOutputStream.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,124 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| #include "BitOutputStream.h" | ||||
| #include "EXIConfig.h" | ||||
| #include "EXITypes.h" | ||||
| #include "ErrorCodes.h" | ||||
|  | ||||
| #ifndef BIT_OUTPUT_STREAM_C | ||||
| #define BIT_OUTPUT_STREAM_C | ||||
|  | ||||
| int writeBits(bitstream_t* stream, size_t nbits, uint32_t val) { | ||||
| 	int errn = 0; | ||||
| 	/*  is there enough space in the buffer */ | ||||
| 	if (nbits <= stream->capacity) { | ||||
| 		/* all bits fit into the current buffer */ | ||||
| 		stream->buffer = (uint8_t)(stream->buffer << (nbits)) | (uint8_t)(val & (uint32_t)(0xff >> (uint32_t)(BITS_IN_BYTE - nbits))); | ||||
| 		stream->capacity = (uint8_t)(stream->capacity - nbits); | ||||
| 		/* if the buffer is full write byte */ | ||||
| 		if (stream->capacity == 0) { | ||||
| #if EXI_STREAM == BYTE_ARRAY | ||||
| 			if ((*stream->pos) >= stream->size) { | ||||
| 				errn = EXI_ERROR_OUTPUT_STREAM_EOF; | ||||
| 			} else { | ||||
| 				stream->data[(*stream->pos)++] = stream->buffer; | ||||
| 			} | ||||
| #endif | ||||
| #if EXI_STREAM == FILE_STREAM | ||||
| 			if ( putc(stream->buffer, stream->file) == EOF ) { | ||||
| 				errn = EXI_ERROR_OUTPUT_STREAM_EOF; | ||||
| 			} | ||||
| #endif | ||||
| 			stream->capacity = BITS_IN_BYTE; | ||||
| 			stream->buffer = 0; | ||||
| 		} | ||||
| 	} else { | ||||
| 		/* the buffer is not enough | ||||
| 		 * fill the buffer */ | ||||
| 		stream->buffer = (uint8_t)(stream->buffer << stream->capacity) | | ||||
| 				( (uint8_t)(val >> (nbits - stream->capacity)) & (uint8_t)(0xff >> (BITS_IN_BYTE - stream->capacity)) ); | ||||
|  | ||||
| 		nbits = (nbits - stream->capacity); | ||||
| #if EXI_STREAM == BYTE_ARRAY | ||||
| 		if ((*stream->pos) >= stream->size) { | ||||
| 			errn = EXI_ERROR_OUTPUT_STREAM_EOF; | ||||
| 		} else { | ||||
| 			stream->data[(*stream->pos)++] = stream->buffer; | ||||
| 		} | ||||
| #endif | ||||
| #if EXI_STREAM == FILE_STREAM | ||||
| 		if ( putc(stream->buffer, stream->file) == EOF ) { | ||||
| 			errn = EXI_ERROR_OUTPUT_STREAM_EOF; | ||||
| 		} | ||||
| #endif | ||||
| 		stream->buffer = 0; | ||||
|  | ||||
| 		/* write whole bytes */ | ||||
| 		while (errn == 0 && nbits >= BITS_IN_BYTE) { | ||||
| 			nbits = (nbits - BITS_IN_BYTE); | ||||
| #if EXI_STREAM == BYTE_ARRAY | ||||
| 			if ((*stream->pos) >= stream->size) { | ||||
| 				errn = EXI_ERROR_OUTPUT_STREAM_EOF; | ||||
| 			} else { | ||||
| 				stream->data[(*stream->pos)++] = (uint8_t)(val >> (nbits)); | ||||
| 			} | ||||
| #endif | ||||
| #if EXI_STREAM == FILE_STREAM | ||||
| 			if ( putc((int)(val >> (nbits)), stream->file) == EOF ) { | ||||
| 				errn = EXI_ERROR_OUTPUT_STREAM_EOF; | ||||
| 			} | ||||
| #endif | ||||
| 		} | ||||
|  | ||||
| 		/* spared bits are kept in the buffer */ | ||||
| 		stream->buffer = (uint8_t)val; /* Note: the high bits will be shifted out during further filling */ | ||||
| 		stream->capacity = (uint8_t)(BITS_IN_BYTE - (nbits)); | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Flush output | ||||
|  */ | ||||
| int flush(bitstream_t* stream) { | ||||
| 	int errn = 0; | ||||
| 	if (stream->capacity == BITS_IN_BYTE) { | ||||
| 		/* nothing to do, no bits in buffer */ | ||||
| 	} else { | ||||
| 		errn = writeBits(stream, stream->capacity, 0); | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										85
									
								
								src/codec/BitOutputStream.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								src/codec/BitOutputStream.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	BitOutputStream.h | ||||
|  * \brief 	Bit Output Stream | ||||
|  * | ||||
|  * 			Write bits and bytes to an underlying output stream. | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef BIT_OUTPUT_STREAM_H | ||||
| #define BIT_OUTPUT_STREAM_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
| /** | ||||
|  * \brief 		Write bits | ||||
|  * | ||||
|  * 				Write the n least significant bits of parameter b starting | ||||
|  * 				with the most significant, i.e. from left to right. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       nbits			Number of bits | ||||
|  * \param       bits		   	value | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int writeBits(bitstream_t* stream, size_t nbits, uint32_t bits); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Flush output | ||||
|  * | ||||
|  * 				If there are some unwritten bits, pad them if necessary and | ||||
|  * 				write them out. Note that this method does flush the | ||||
|  * 				underlying stream. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int flush(bitstream_t* stream); | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										88
									
								
								src/codec/ByteStream.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								src/codec/ByteStream.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,88 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /* Avoid VS warning, put before your included header files */ | ||||
| /* warning C4996: <20>fopen<65>: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. */ | ||||
| #define _CRT_SECURE_NO_DEPRECATE | ||||
|  | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
| #include "ErrorCodes.h" | ||||
|  | ||||
| #ifndef BYTE_STREAM_C | ||||
| #define BYTE_STREAM_C | ||||
|  | ||||
| int readBytesFromFile(const char * filename, uint8_t* data, size_t size, size_t* pos) { | ||||
| 	FILE* f; | ||||
| 	int character; | ||||
| 	int errn = 0; | ||||
|  | ||||
| 	f = fopen(filename, "rb"); | ||||
|  | ||||
| 	if (f == NULL) { | ||||
| 		errn = EXI_ERROR_INPUT_FILE_HANDLE; | ||||
| 	} else { | ||||
| 		/* read bytes */ | ||||
| 		while (errn == 0 && (character = getc(f)) != EOF) { | ||||
| 			if (*pos >= size) { | ||||
| 				errn = EXI_ERROR_OUT_OF_BYTE_BUFFER; | ||||
| 			} else { | ||||
| 				data[(*pos)++] = (uint8_t) character; | ||||
| 			} | ||||
| 		} | ||||
| 		fclose(f); | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| int writeBytesToFile(uint8_t* data, size_t len, const char * filename) { | ||||
| 	size_t rlen; | ||||
| 	FILE* f = fopen(filename, "wb+"); | ||||
|  | ||||
| 	if (f == NULL) { | ||||
| 		return -1; | ||||
| 	} else { | ||||
| 		rlen = fwrite(data, sizeof(uint8_t), len, f); | ||||
| 		fflush(f); | ||||
| 		fclose(f); | ||||
| 		if(rlen == len) { | ||||
| 			return 0; | ||||
| 		} else { | ||||
| 			return EXI_ERROR_OUTPUT_FILE; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| #endif /* BYTE_STREAM_C */ | ||||
|  | ||||
							
								
								
									
										75
									
								
								src/codec/ByteStream.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								src/codec/ByteStream.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	ByteStream.h | ||||
|  * \brief 	Byte Stream utilities | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef BYTE_STREAM_H | ||||
| #define BYTE_STREAM_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
| /** | ||||
|  * \brief 		Write bytes to file | ||||
|  * | ||||
|  * \param       data	   		byte array | ||||
|  * \param       len				length | ||||
|  * \param       filename		File name | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int writeBytesToFile(uint8_t* data, size_t len, const char * filename); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Read bytes from file | ||||
|  * | ||||
|  * \param       filename   		File name | ||||
|  * \param       data			byte array | ||||
|  * \param       size		   	byte array size | ||||
|  * \param       pos			   	byte array position | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int readBytesFromFile(const char * filename, uint8_t* data, size_t size, size_t* pos); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* BYTE_STREAM_H */ | ||||
							
								
								
									
										1068
									
								
								src/codec/DecoderChannel.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1068
									
								
								src/codec/DecoderChannel.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										441
									
								
								src/codec/DecoderChannel.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										441
									
								
								src/codec/DecoderChannel.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,441 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	DecoderChannel.h | ||||
|  * \brief 	EXI Decoder Channel | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef DECODER_CHANNEL_H | ||||
| #define DECODER_CHANNEL_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "EXIOptions.h" | ||||
| #include "EXITypes.h" | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode byte value | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       b		   		byte (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decode(bitstream_t* stream, uint8_t* b); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode boolean | ||||
|  * | ||||
|  * 				Decode a single boolean value. The value false is | ||||
|  * 				represented by 0, and the value true is represented by 1. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       b		   		boolean (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeBoolean(bitstream_t* stream, int* b); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode n-bit unsigned integer | ||||
|  * | ||||
|  * 				Decodes and returns an n-bit unsigned integer. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       nbits		   	Number of bits | ||||
|  * \param       uint32		   	Value (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint32_t* uint32); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode unsigned integer | ||||
|  * | ||||
|  * 				Decode an arbitrary precision non negative integer using | ||||
|  * 				a sequence of octets. The most significant bit of the last | ||||
|  * 				octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       iv		   		Unsigned Integer Value (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode unsigned integer | ||||
|  * | ||||
|  * 				Decode an arbitrary precision non negative integer using | ||||
|  * 				a sequence of octets. The most significant bit of the last | ||||
|  * 				octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       uint16		   	Unsigned Integer Value 16 bits (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeUnsignedInteger16(bitstream_t* stream, uint16_t* uint16); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode unsigned integer | ||||
|  * | ||||
|  * 				Decode an arbitrary precision non negative integer using | ||||
|  * 				a sequence of octets. The most significant bit of the last | ||||
|  * 				octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       uint32		   	Unsigned Integer Value 32 bits (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode unsigned integer | ||||
|  * | ||||
|  * 				Decode an arbitrary precision non negative integer using | ||||
|  * 				a sequence of octets. The most significant bit of the last | ||||
|  * 				octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       sizeT			Unsigned Integer Value (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeUnsignedIntegerSizeT(bitstream_t* stream, size_t* sizeT); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode unsigned integer | ||||
|  * | ||||
|  * 				Decode an arbitrary precision non negative integer using | ||||
|  * 				a sequence of octets. The most significant bit of the last | ||||
|  * 				octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       uint64		   	Unsigned Integer Value 64 bits (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64); | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode unsigned integer | ||||
|  * | ||||
|  * 				Decode an arbitrary precision non negative integer using | ||||
|  * 				a sequence of octets. The most significant bit of the last | ||||
|  * 				octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       size		   	size array | ||||
|  * \param       data		   	data array | ||||
|  * \param       len		   		length array | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeUnsignedIntegerBig(bitstream_t* stream, size_t size, uint8_t* data, size_t* len); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode integer | ||||
|  * | ||||
|  * 				Decode an arbitrary precision integer using a sign bit | ||||
|  * 				followed by a sequence of octets. The most significant bit | ||||
|  * 				of the last octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       iv		   		Integer Value 64 bits (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeInteger(bitstream_t* stream, exi_integer_t* iv); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode integer | ||||
|  * | ||||
|  * 				Decode an arbitrary precision integer using a sign bit | ||||
|  * 				followed by a sequence of octets. The most significant bit | ||||
|  * 				of the last octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       int16		   	Integer Value 16 bits (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeInteger16(bitstream_t* stream, int16_t* int16); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode integer | ||||
|  * | ||||
|  * 				Decode an arbitrary precision integer using a sign bit | ||||
|  * 				followed by a sequence of octets. The most significant bit | ||||
|  * 				of the last octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       int32		   	Integer Value 32 bits (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeInteger32(bitstream_t* stream, int32_t* int32); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode integer | ||||
|  * | ||||
|  * 				Decode an arbitrary precision integer using a sign bit | ||||
|  * 				followed by a sequence of octets. The most significant bit | ||||
|  * 				of the last octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       int64		   	Integer Value 64 bits (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeInteger64(bitstream_t* stream, int64_t* int64); | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode integer | ||||
|  * | ||||
|  * 				Decode an arbitrary precision integer using a sign bit | ||||
|  * 				followed by a sequence of octets. The most significant bit | ||||
|  * 				of the last octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       negative		negative integer | ||||
|  * \param       size		   	size array | ||||
|  * \param       data		   	data array | ||||
|  * \param       len		   		length array | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeIntegerBig(bitstream_t* stream, int* negative, size_t size, uint8_t* data, size_t* len); | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode float | ||||
|  * | ||||
|  * 				Decode a Float datatype as two consecutive Integers. The | ||||
|  * 				first Integer represents the mantissa of the floating point | ||||
|  * 				number and the second Integer represents the base-10 exponent | ||||
|  * 				of the floating point number. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       f			   	Float Value (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeFloat(bitstream_t* stream, exi_float_me_t* f); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode decimal | ||||
|  * | ||||
|  * 				Decode a decimal represented as a Boolean sign followed by two | ||||
|  * 				Unsigned Integers. A sign value of zero (0) is used to represent | ||||
|  * 				positive Decimal values and a sign value of one (1) is used to | ||||
|  * 				represent negative Decimal values The first Integer represents | ||||
|  * 				the integral portion of the Decimal value. The second positive | ||||
|  * 				integer represents the fractional portion of the decimal with | ||||
|  * 				the digits in reverse order to preserve leading zeros. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       d			   	Decimal Value (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeDecimal(bitstream_t* stream, exi_decimal_t* d); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode String (no length prefix) | ||||
|  * | ||||
|  * 				Decode a sequence of characters for a given length. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       len			   	Characters length | ||||
|  * \param       s			   	String Value (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeStringOnly(bitstream_t* stream, size_t len, exi_string_t* s); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode String | ||||
|  * | ||||
|  * 				Decode a length prefixed sequence of characters. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       s			   	String Value (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeString(bitstream_t* stream, exi_string_t* s); | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode String value | ||||
|  * | ||||
|  * 				Decode a length prefixed sequence of characters in the sense of string tables. | ||||
|  * 				length == 0: local value partition hit. | ||||
|  * 				length == 1: global value partition hit. | ||||
|  * 				length > 1: string literal is encoded as a String with the length incremented by two | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       stringTable   	String Table | ||||
|  * \param       qnameID   		Qualified Name ID | ||||
|  * \param       namespaceUriID  Qualified Namespace ID | ||||
|  * \param       localNameID  	Qualified LocalName ID | ||||
|  * \param       s			   	String Value (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeStringValue(bitstream_t* stream, exi_value_string_table_t* stringTable, size_t namespaceUriID, size_t localNameID, exi_string_value_t* s); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode Restricted characters set string value | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       stringTable   	StringTable | ||||
|  * \param       namespaceUriID  qualified namespace ID | ||||
|  * \param       localNameID   	qualified localName ID | ||||
|  * \param       rcs		   		Restricted character set | ||||
|  * \param       s			   	String Value (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeRCSStringValue(bitstream_t* stream, exi_value_string_table_t* stringTable, size_t namespaceUriID, size_t localNameID, exi_rcs_t* rcs, exi_string_value_t* s); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode characters | ||||
|  * | ||||
|  * 				Decode a sequence of characters according to a given length. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       len		   		Length | ||||
|  * \param       chars   		Characters (out) | ||||
|  * \param       charsSize		Size of possible characters | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeCharacters(bitstream_t* stream, size_t len, exi_string_character_t* chars, size_t charsSize); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode restricted character set characters | ||||
|  * | ||||
|  * 				Decode a sequence of characters according to a given length and rcs code-length, size and set. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       len		   		Length | ||||
|  * \param       chars   		Characters (out) | ||||
|  * \param       charsSize		Size of possible characters | ||||
|  * \param       rcsCodeLength   RCS code-length | ||||
|  * \param       rcsCodeLength   RCS size | ||||
|  * \param       rcsCodeLength   RCS set | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeRCSCharacters(bitstream_t* stream, size_t len, exi_string_character_t* chars, size_t charsSize, size_t rcsCodeLength, size_t rcsSize, const exi_string_character_t rcsSet[]); | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode Binary | ||||
|  * | ||||
|  * 				Decode a binary value as a length-prefixed sequence of octets. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       bytes   		Bytes (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeBinary(bitstream_t* stream, exi_bytes_t* bytes); | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode Binary data | ||||
|  * | ||||
|  * 				Decode a sequence of octets. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       len		   		Length | ||||
|  * \param       data	   		Bytes (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeBytes(bitstream_t* stream, size_t len, uint8_t* data); | ||||
|  | ||||
| /** | ||||
|  * \brief 		Decode DateTime | ||||
|  * | ||||
|  * 				Decode Date-Time as sequence of values representing the | ||||
|  * 				individual components of the Date-Time. | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \param       type   			Datetime type | ||||
|  * \param       datetime   		Datetime (out) | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int decodeDateTime(bitstream_t* stream, exi_datetime_type_t type, exi_datetime_t* datetime); | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										106
									
								
								src/codec/EXIConfig.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								src/codec/EXIConfig.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-23 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EXIConfig.h | ||||
|  * \brief 	EXI Configurations for the EXI Codec | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_CONFIG_H | ||||
| #define EXI_CONFIG_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /** EXI stream - Option Byte Array */ | ||||
| #define BYTE_ARRAY 1 | ||||
| /** EXI stream - Option File */ | ||||
| #define FILE_STREAM 2 | ||||
| /** \brief 	EXI stream | ||||
|  * | ||||
|  * 			Byte array or file | ||||
|  * */ | ||||
| #define EXI_STREAM BYTE_ARRAY | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| /** Memory allocation - static */ | ||||
| #define STATIC_ALLOCATION 1 | ||||
| /** Memory allocation - dynamic */ | ||||
| #define DYNAMIC_ALLOCATION  2 | ||||
| /** */ | ||||
| /** \brief 	Memory allocation mode | ||||
|  * | ||||
|  * 			static or dynamic memory allocation | ||||
|  * */ | ||||
| #define MEMORY_ALLOCATION STATIC_ALLOCATION | ||||
|  | ||||
|  | ||||
|  | ||||
| /** String representation ASCII */ | ||||
| #define STRING_REPRESENTATION_ASCII 1 | ||||
| /** String representation Universal Character Set (UCS) */ | ||||
| #define STRING_REPRESENTATION_UCS 2 | ||||
| /** */ | ||||
| /** \brief 	String representation mode | ||||
|  * | ||||
|  * 			ASCII or UCS | ||||
|  * */ | ||||
| #define STRING_REPRESENTATION STRING_REPRESENTATION_UCS | ||||
|  | ||||
|  | ||||
| /* in the case of ASCII an extra char (null terminator) for printf and other functions is useful */ | ||||
| #if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII | ||||
| #define EXTRA_CHAR 1 | ||||
| #endif /* STRING_REPRESENTATION_ASCII */ | ||||
| #if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS | ||||
| #define EXTRA_CHAR 0 | ||||
| #endif /* STRING_REPRESENTATION_UCS */ | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| /** Maximum number of cascading elements, XML tree depth */ | ||||
| #define EXI_ELEMENT_STACK_SIZE 24 | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* EXI_CONFIG_H */ | ||||
|  | ||||
							
								
								
									
										68
									
								
								src/codec/EXIHeaderDecoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								src/codec/EXIHeaderDecoder.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| #include "EXIHeaderDecoder.h" | ||||
| #include "BitInputStream.h" | ||||
| #include "DecoderChannel.h" | ||||
| #include "ErrorCodes.h" | ||||
|  | ||||
| #ifndef EXI_HEADER_DECODER_C | ||||
| #define EXI_HEADER_DECODER_C | ||||
|  | ||||
| int readEXIHeader(bitstream_t* stream) { | ||||
| 	int errn; | ||||
| 	uint32_t header = 0; | ||||
|  | ||||
| 	/* init stream */ | ||||
| 	stream->buffer = 0; | ||||
| 	stream->capacity = 0; | ||||
|  | ||||
| 	errn = readBits(stream, 8, &header); | ||||
| 	if (errn == 0) { | ||||
| 		if(header == '$') { | ||||
| 			/*	we do not support "EXI Cookie" */ | ||||
| 			errn = EXI_UNSUPPORTED_HEADER_COOKIE; | ||||
| 		} else if ( header & 0x20 ) { | ||||
| 			/* we do not support "Presence Bit for EXI Options" */ | ||||
| 			errn = EXI_UNSUPPORTED_HEADER_OPTIONS; | ||||
| 		} else { | ||||
| 			/* Yes, a *simple* header */ | ||||
| 			errn = 0; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
| #endif | ||||
|  | ||||
|  | ||||
							
								
								
									
										60
									
								
								src/codec/EXIHeaderDecoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								src/codec/EXIHeaderDecoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EXIHeaderDecoder.h | ||||
|  * \brief 	EXI Header Decoder | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_HEADER_DECODER_H | ||||
| #define EXI_HEADER_DECODER_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
| /** | ||||
|  * \brief 		Reads EXI header | ||||
|  * | ||||
|  * \param       stream   		Input Stream | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int readEXIHeader(bitstream_t* stream); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										50
									
								
								src/codec/EXIHeaderEncoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								src/codec/EXIHeaderEncoder.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| #include "EXIHeaderEncoder.h" | ||||
| #include "BitOutputStream.h" | ||||
| #include "EncoderChannel.h" | ||||
|  | ||||
| #ifndef EXI_HEADER_ENCODER_C | ||||
| #define EXI_HEADER_ENCODER_C | ||||
|  | ||||
| int writeEXIHeader(bitstream_t* stream) { | ||||
| 	/* init stream */ | ||||
| 	stream->buffer = 0; | ||||
| 	stream->capacity = 8; | ||||
|  | ||||
| 	return writeBits(stream, 8, 128); | ||||
| } | ||||
|  | ||||
|  | ||||
| #endif | ||||
|  | ||||
|  | ||||
							
								
								
									
										61
									
								
								src/codec/EXIHeaderEncoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								src/codec/EXIHeaderEncoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EXIHeaderEncoder.h | ||||
|  * \brief 	EXI Header Encoder | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_HEADER_ENCODER_H | ||||
| #define EXI_HEADER_ENCODER_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Writes EXI header | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int writeEXIHeader(bitstream_t* stream); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										93
									
								
								src/codec/EXIOptions.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								src/codec/EXIOptions.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,93 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EXIOptions.h | ||||
|  * \brief 	EXI Options for the EXI Codec | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_OPTIONS_H | ||||
| #define EXI_OPTIONS_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /** EXI alignment - Option bit-packed */ | ||||
| #define BIT_PACKED 1 | ||||
| /** EXI alignment - Option byte-packed */ | ||||
| #define BYTE_ALIGNMENT  2 | ||||
| /** EXI alignment */ | ||||
| /** | ||||
|  * \brief 		EXI Option 'alignment' | ||||
|  * | ||||
|  *				The alignment option is used to control the alignment of event codes and content items. | ||||
|  *				Default Value: bit-packed | ||||
|  */ | ||||
| #define EXI_OPTION_ALIGNMENT BIT_PACKED | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		EXI Option 'strict' | ||||
|  * | ||||
|  *				Strict interpretation of schemas is used to achieve better compactness. | ||||
|  *				Default Value: false | ||||
|  */ | ||||
| #define EXI_OPTION_STRICT 0 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		EXI Option 'valueMaxLength' | ||||
|  * | ||||
|  *				Specifies the maximum string length of value content items to be | ||||
|  *				considered for addition to the string table. | ||||
|  *				Default Value: unbounded (-1) | ||||
|  */ | ||||
| #define EXI_OPTION_VALUE_MAX_LENGTH -1 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		EXI Option 'valuePartitionCapacity' | ||||
|  * | ||||
|  *				Specifies the total capacity of value partitions in a string table. | ||||
|  *				Default Value: unbounded (-1) | ||||
|  */ | ||||
| #define EXI_OPTION_VALUE_PARTITION_CAPACITY 0 | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* EXI_OPTIONS_H */ | ||||
							
								
								
									
										591
									
								
								src/codec/EXITypes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										591
									
								
								src/codec/EXITypes.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,591 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EXITypes.h | ||||
|  * \brief 	Basic type definitions and structs | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_TYPES_H | ||||
| #define EXI_TYPES_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include <stdint.h> | ||||
| #include <stdio.h> | ||||
| #include "EXIConfig.h" | ||||
| #if EXI_STREAM == FILE_STREAM | ||||
| #include <stdio.h> | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /** Number of bits for each byte */ | ||||
| #define BITS_IN_BYTE 8 | ||||
|  | ||||
| /** EXI Date-Time offset for year */ | ||||
| #define DATETIME_YEAR_OFFSET 2000 | ||||
| /** EXI Date-Time number of bits for monthDay */ | ||||
| #define DATETIME_NUMBER_BITS_MONTHDAY 9 | ||||
| /** EXI Date-Time number of bits for time */ | ||||
| #define DATETIME_NUMBER_BITS_TIME 17 | ||||
| /** EXI Date-Time number of bits for timezone */ | ||||
| #define DATETIME_NUMBER_BITS_TIMEZONE 11 | ||||
| /** EXI Date-Time month multiplicator */ | ||||
| #define DATETIME_MONTH_MULTIPLICATOR 32 | ||||
| /** EXI Date-Time offset for timzone minutes */ | ||||
| #define DATETIME_TIMEZONE_OFFSET_IN_MINUTES 896 | ||||
|  | ||||
| /** Maximum integer value for uint */ | ||||
| #define UINT_MAX_VALUE 65535 | ||||
|  | ||||
|  | ||||
| /** EXI Float exponent special values */ | ||||
| #define FLOAT_EXPONENT_SPECIAL_VALUES -16384 | ||||
| /** EXI Float mantissa infinity */ | ||||
| #define FLOAT_MANTISSA_INFINITY 1 | ||||
| /** EXI Float minus mantissa infinity */ | ||||
| #define FLOAT_MANTISSA_MINUS_INFINITY -1 | ||||
| /** EXI Float not a number */ | ||||
| #define FLOAT_MANTISSA_NOT_A_NUMBER 0 | ||||
|  | ||||
| /** \brief EXI Events */ | ||||
| typedef enum { | ||||
| 	/** Start Document SD */ | ||||
| 	EXI_EVENT_START_DOCUMENT, | ||||
| 	/** End Document ED */ | ||||
| 	EXI_EVENT_END_DOCUMENT, | ||||
| 	/** Start Element SE(qname) */ | ||||
| 	EXI_EVENT_START_ELEMENT, | ||||
| 	/** Start Element SE(uri:*) */ | ||||
| 	EXI_EVENT_START_ELEMENT_NS, | ||||
| 	/** Start Element SE(*) generic */ | ||||
| 	EXI_EVENT_START_ELEMENT_GENERIC, | ||||
| 	/** Start Element SE(*) generic undeclared */ | ||||
| 	EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED, | ||||
| 	/** End Element EE */ | ||||
| 	EXI_EVENT_END_ELEMENT, | ||||
| 	/** End Element EE undeclared*/ | ||||
| 	EXI_EVENT_END_ELEMENT_UNDECLARED, | ||||
| 	/** Characters CH */ | ||||
| 	EXI_EVENT_CHARACTERS, | ||||
| 	/** Characters CH generic */ | ||||
| 	EXI_EVENT_CHARACTERS_GENERIC, | ||||
| 	/** Characters CH generic undeclared */ | ||||
| 	EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED, | ||||
| 	/** Attribute AT(xsi:type) */ | ||||
| 	EXI_EVENT_ATTRIBUTE_XSI_TYPE, | ||||
| 	/** Attribute AT(xsi:nil) */ | ||||
| 	EXI_EVENT_ATTRIBUTE_XSI_NIL, | ||||
| 	/** Attribute AT(qname) */ | ||||
| 	EXI_EVENT_ATTRIBUTE, | ||||
| 	/** Attribute AT(uri:*) */ | ||||
| 	EXI_EVENT_ATTRIBUTE_NS, | ||||
| 	/** Attribute AT(*) generic */ | ||||
| 	EXI_EVENT_ATTRIBUTE_GENERIC, | ||||
| 	/** Attribute AT(*) invalid value */ | ||||
| 	EXI_EVENT_ATTRIBUTE_INVALID_VALUE, | ||||
| 	/** Attribute AT(*) any invalid value */ | ||||
| 	EXI_EVENT_ATTRIBUTE_ANY_INVALID_VALUE, | ||||
| 	/** Attribute AT(*) generic undeclared */ | ||||
| 	EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED, | ||||
| 	/* error state */ | ||||
| 	EXI_EVENT_ERROR | ||||
| } exi_event_t; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 	Bit stream container | ||||
|  * | ||||
|  *	Structure for byteArray/file stream. | ||||
|  * | ||||
|  *	# General | ||||
|  *	.size defines the maximum size of the byte array (see .data) | ||||
|  * | ||||
|  *	.data points to the input/output array of bytes (unsigned char*). | ||||
|  * | ||||
|  *	.pos has to be set to an pointer to an 32 bit long unsigned integer (uint32_t *) | ||||
|  *	 as this variable is read/write. | ||||
|  *	 Therefore it is best practice to declare the variable itself and use the &-operator | ||||
|  *	 to assign the address. The value of that variable points to the position inside the | ||||
|  *	 buffer where the stream begins. Which is usually the first (0th) byte but can also be | ||||
|  *	 another value if there more information transferred in that stream. | ||||
|  *	 After processing .pos points to the next "available" byte (if any left). | ||||
|  * | ||||
|  *	.buffer has to be set to 0 for internal use only (single byte buffer) | ||||
|  * | ||||
|  *	# Receiving data (input) | ||||
|  *	.capacity is used for addressing single bits in the actual byte (see .buffer) | ||||
|  *	 and has to be set to 0, which means there are 0 bits read so far and a new | ||||
|  *	 byte needs to be read from the input stream/data-array to the current byte buffer. | ||||
|  * | ||||
|  *	# Sending data (output) | ||||
|  *	.capacity is used for addressing single bits in the actual byte (see .buffer) | ||||
|  *	 and has to be set to 8, which means there are still 8 bits left to fill up | ||||
|  *	 the current byte buffer before writing the final byte to the output stream/data-array. | ||||
|  * | ||||
|  */ | ||||
| typedef struct { | ||||
| #if EXI_STREAM == BYTE_ARRAY | ||||
| 	/**	byte array size */ | ||||
| 	size_t size; | ||||
| 	/**	byte array data */ | ||||
| 	uint8_t* data; | ||||
| 	/**	byte array next position in array */ | ||||
| 	size_t* pos; | ||||
| #endif | ||||
| #if EXI_STREAM == FILE_STREAM | ||||
| 	/** file pointer */ | ||||
| 	FILE *file; | ||||
| #endif | ||||
| 	/** Current byte buffer*/ | ||||
| 	uint8_t buffer; | ||||
| 	/** Remaining bit capacity in current byte buffer*/ | ||||
| 	uint8_t capacity; | ||||
| } bitstream_t; | ||||
|  | ||||
|  | ||||
| /** \brief EXI Value Datatypes */ | ||||
| typedef enum { | ||||
| 	/** Binary Base64 */ | ||||
| 	EXI_DATATYPE_BINARY_BASE64, | ||||
| 	/** Binary Hex */ | ||||
| 	EXI_DATATYPE_BINARY_HEX, | ||||
| 	/** Boolean */ | ||||
| 	EXI_DATATYPE_BOOLEAN, | ||||
| 	/** Boolean with Facets */ | ||||
| 	EXI_DATATYPE_BOOLEAN_FACET, | ||||
| 	/** Decimal */ | ||||
| 	EXI_DATATYPE_DECIMAL, | ||||
| 	/** Float & Double */ | ||||
| 	EXI_DATATYPE_FLOAT, | ||||
| 	/** N-Bit Unsigned Integer */ | ||||
| 	EXI_DATATYPE_NBIT_UNSIGNED_INTEGER, | ||||
| 	/** Unsigned Integer */ | ||||
| 	EXI_DATATYPE_UNSIGNED_INTEGER, | ||||
| 	/** (Signed) Integer */ | ||||
| 	EXI_DATATYPE_INTEGER, | ||||
| 	/** Datetime */ | ||||
| 	EXI_DATATYPE_DATETIME, | ||||
| 	/** String */ | ||||
| 	EXI_DATATYPE_STRING, | ||||
| 	/** Restricted Character Set String */ | ||||
| 	EXI_DATATYPE_RCS_STRING, | ||||
| 	/** Enumeration */ | ||||
| 	EXI_DATATYPE_ENUMERATION, | ||||
| 	/** List */ | ||||
| 	EXI_DATATYPE_LIST, | ||||
| 	/** QName (e.g. xsi:type) */ | ||||
| 	EXI_DATATYPE_QNAME | ||||
| } exi_datatype_t; | ||||
|  | ||||
|  | ||||
| /** \brief EXI Integer Value types */ | ||||
| typedef enum { | ||||
| 	/** Unsigned Integer 8 bits */ | ||||
| 	EXI_UNSIGNED_INTEGER_8, | ||||
| 	/** Unsigned Integer 16 bits */ | ||||
| 	EXI_UNSIGNED_INTEGER_16, | ||||
| 	/** Unsigned Integer 32 bits */ | ||||
| 	EXI_UNSIGNED_INTEGER_32, | ||||
| 	/** Unsigned Integer 64 bits */ | ||||
| 	EXI_UNSIGNED_INTEGER_64, | ||||
| 	/** (Signed) Integer 8 bits */ | ||||
| 	EXI_INTEGER_8, | ||||
| 	/** (Signed) Integer 16 bits */ | ||||
| 	EXI_INTEGER_16, | ||||
| 	/** (Signed) Integer 32 bits */ | ||||
| 	EXI_INTEGER_32, | ||||
| 	/** (Signed) Integer 64 bits */ | ||||
| 	EXI_INTEGER_64 | ||||
| } exi_integer_type_t; | ||||
|  | ||||
|  | ||||
| /** \brief EXI Datetime types */ | ||||
| typedef enum { | ||||
| 	/** gYear */ | ||||
| 	EXI_DATETIME_GYEAR, | ||||
| 	/** gYearMonth */ | ||||
| 	EXI_DATETIME_GYEARMONTH, | ||||
| 	/** date */ | ||||
| 	EXI_DATETIME_DATE, | ||||
| 	/** datetime */ | ||||
| 	EXI_DATETIME_DATETIME, | ||||
| 	/** gMonth */ | ||||
| 	EXI_DATETIME_GMONTH, | ||||
| 	/** gMonthDay */ | ||||
| 	EXI_DATETIME_GMONTHDAY, | ||||
| 	/** gDay */ | ||||
| 	EXI_DATETIME_GDAY, | ||||
| 	/** time */ | ||||
| 	EXI_DATETIME_TIME | ||||
| } exi_datetime_type_t; | ||||
|  | ||||
|  | ||||
| /** \brief String value type */ | ||||
| typedef enum { | ||||
| 	/** value miss */ | ||||
| 	EXI_STRING_VALUE_MISS, | ||||
| 	/** value local-hit */ | ||||
| 	EXI_STRING_VALUE_LOCAL_HIT, | ||||
| 	/** value global-hit */ | ||||
| 	EXI_STRING_VALUE_GLOBAL_HIT | ||||
| } exi_string_value_type_t; | ||||
|  | ||||
| /** \brief EXI string character */ | ||||
| /* Note: define whether you wan't to support ASCII only or UCS */ | ||||
| #if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII | ||||
| typedef char exi_string_character_t; | ||||
| #endif /* STRING_REPRESENTATION_ASCII */ | ||||
| #if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS | ||||
| typedef uint32_t exi_string_character_t; | ||||
| #endif /* STRING_REPRESENTATION_UCS */ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** \brief Universal Character Set (UCS) strings */ | ||||
| typedef struct { | ||||
| 	/** container size  */ | ||||
| 	size_t size; | ||||
| 	/** string character container */ | ||||
| 	exi_string_character_t* characters; | ||||
| 	/** current string length == number of code-points, (len <= size) */ | ||||
| 	size_t len; | ||||
| } exi_string_t; | ||||
|  | ||||
|  | ||||
| /** \brief String value */ | ||||
| typedef struct { | ||||
| 	/** value type (e.g., miss, local-hit, global-hit) */ | ||||
| 	exi_string_value_type_t type; | ||||
| 	/** miss entry */ | ||||
| 	exi_string_t miss; | ||||
| 	/** (local) hit entry */ | ||||
| 	size_t localID; | ||||
| 	/** (global) hit entry */ | ||||
| 	size_t globalID; | ||||
| } exi_string_value_t; | ||||
|  | ||||
|  | ||||
| /** \brief Restricted Characeter Set */ | ||||
| typedef struct { | ||||
| 	/** size */ | ||||
| 	size_t size; | ||||
| 	/** rcs codepoints */ | ||||
| 	exi_string_character_t* characters; | ||||
| 	/** character coding length (less than 256 characters) */ | ||||
| 	uint8_t codingLength; | ||||
| } exi_rcs_t; | ||||
|  | ||||
|  | ||||
| /** \brief Byte value container */ | ||||
| typedef struct { | ||||
| 	/** bytes array size */ | ||||
| 	size_t size; | ||||
| 	/** bytes array data container */ | ||||
| 	uint8_t* data; | ||||
| 	/** bytes array length (len <= size) */ | ||||
| 	size_t len; | ||||
| } exi_bytes_t; | ||||
|  | ||||
|  | ||||
| /** \brief Integer value container */ | ||||
| typedef struct { | ||||
| 	/** type */ | ||||
| 	exi_integer_type_t type; | ||||
| 	union { | ||||
| 		/* (signed) values */ | ||||
| 		/** (signed) int 8 bits */ | ||||
| 		int8_t int8; | ||||
| 		/** (signed) int 16 bits */ | ||||
| 		int16_t int16; | ||||
| 		/** (signed) int 32 bits */ | ||||
| 		int32_t int32; | ||||
| 		/** (signed) int 64 bits */ | ||||
| 		int64_t int64; | ||||
| 		/* unsigned values */ | ||||
| 		/** unsigned int 8 bits */ | ||||
| 		uint8_t uint8; | ||||
| 		/** unsigned int 16 bits */ | ||||
| 		uint16_t uint16; | ||||
| 		/** unsigned int 32 bits */ | ||||
| 		uint32_t uint32; | ||||
| 		/** unsigned int 64 bits */ | ||||
| 		uint64_t uint64; | ||||
| 	} val; | ||||
| } exi_integer_t; | ||||
|  | ||||
|  | ||||
| /** \brief Float value container */ | ||||
| typedef struct { | ||||
| 	/** range of the mantissa is -(2^63) to 2^63-1 */ | ||||
| 	int64_t mantissa; | ||||
| 	/** range of the exponent is - (2^14-1) to 2^14-1 */ | ||||
| 	int16_t exponent; /* base-10 */ | ||||
| } exi_float_me_t; | ||||
|  | ||||
|  | ||||
| /** \brief Decimal value container */ | ||||
| typedef struct { | ||||
| 	/** a sign value */ | ||||
| 	int negative; | ||||
| 	/** represents the integral portion of the Decimal */ | ||||
| 	exi_integer_t integral; | ||||
| 	/** represents the fractional portion of the Decimal with the digits in reverse order to preserve leading zeros */ | ||||
| 	exi_integer_t reverseFraction; | ||||
| } exi_decimal_t; | ||||
|  | ||||
|  | ||||
| /** \brief Datetime value container */ | ||||
| typedef struct { | ||||
| 	/** datetime type */ | ||||
| 	exi_datetime_type_t type; | ||||
| 	/** Datetime value for year */ | ||||
| 	int32_t year; | ||||
| 	/** Datetime value for monthDay */ | ||||
| 	uint32_t monthDay; | ||||
| 	/** Datetime value for time */ | ||||
| 	uint32_t time; | ||||
| 	/** Datetime value for presenceFractionalSecs */ | ||||
| 	int presenceFractionalSecs; | ||||
| 	/** Datetime value for fractionalSecs */ | ||||
| 	uint32_t fractionalSecs; | ||||
| 	/** Datetime value for presenceTimezone */ | ||||
| 	int presenceTimezone; | ||||
| 	/** Datetime value for timezone */ | ||||
| 	uint32_t timezone; | ||||
| } exi_datetime_t; | ||||
|  | ||||
|  | ||||
| /** \brief List value container */ | ||||
| typedef struct { | ||||
| 	/** list item type */ | ||||
| 	exi_datatype_t type; | ||||
| 	/** number of items */ | ||||
| 	size_t len; | ||||
| 	/* Special datatype: integer */ | ||||
| 	/* exi_integer_type_t intType;*/ | ||||
| 	/** Special datatype: datetime */ | ||||
| 	exi_datetime_type_t datetimeType; | ||||
| } exi_list_t; | ||||
|  | ||||
|  | ||||
| /** \brief Efficient qname */ | ||||
| typedef struct { | ||||
| 	/** namespace URI ID*/ | ||||
| 	size_t namespaceURI; | ||||
| 	/** local name ID*/ | ||||
| 	size_t localPart; | ||||
| } exi_eqname_t; | ||||
|  | ||||
|  | ||||
| /** \brief Name entry type */ | ||||
| typedef enum { | ||||
| 	/** As known IDs */ | ||||
| 	EXI_NAME_ENTRY_TYPE_ID, | ||||
| 	/** As String */ | ||||
| 	EXI_NAME_ENTRY_TYPE_STRING_AND_ID | ||||
| } exi_name_entry_type_t; | ||||
|  | ||||
|  | ||||
| /** \brief Name entry */ | ||||
| typedef struct { | ||||
| 	/** type */ | ||||
| 	exi_name_entry_type_t type; | ||||
| 	/** entry ID */ | ||||
| 	size_t id; | ||||
| 	/** entry string */ | ||||
| 	exi_string_t str; | ||||
| } exi_name_entry_t; | ||||
|  | ||||
|  | ||||
| /** \brief Qualified name */ | ||||
| typedef struct { | ||||
| 	/** Uri */ | ||||
| 	exi_name_entry_t uri; | ||||
| 	/** LocalName */ | ||||
| 	exi_name_entry_t localName; | ||||
| } exi_qname_t; | ||||
|  | ||||
| /*TODO Doxygen Documentation */ | ||||
|  | ||||
|  | ||||
| /* ==================================== */ | ||||
| /* URI and LocalName Entries */ | ||||
| typedef struct exiNameTablePrepopulated { | ||||
| 	/* number of namespaces AND length name-partitions array */ | ||||
| 	size_t len; | ||||
| 	/* number of localName entries divided by URI */ | ||||
| 	size_t* localNames; | ||||
| } exi_name_table_prepopulated_t; | ||||
|  | ||||
| #define EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES 25 | ||||
|  | ||||
| typedef enum { | ||||
| 	EXI_NAME_PARTITION_URI, EXI_NAME_PARTITION_LOCALNAME | ||||
| } exi_name_partition_type_t; | ||||
|  | ||||
| typedef struct { | ||||
| 	char* uri; | ||||
| 	size_t uriID; | ||||
| } exi_uri_partition_t; | ||||
|  | ||||
| typedef struct { | ||||
| 	char* localName; | ||||
| 	size_t localNameID; | ||||
| 	size_t uriID; | ||||
| } exi_localname_partition_t; | ||||
|  | ||||
| typedef struct { | ||||
| 	exi_name_partition_type_t namePartitionType; | ||||
| 	struct { | ||||
| 		exi_uri_partition_t uriPartition; | ||||
| 		exi_localname_partition_t localNamePartition; | ||||
| 	} entry; | ||||
| } exi_name_partition_t; | ||||
|  | ||||
| typedef struct exiNameTableRuntime { | ||||
| 	/* maximum number of characters in the name partitions entries PLUS null terminators */ | ||||
| 	/* char characters[EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_CHARACTERS + EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES]; */ | ||||
| 	/* uint16_t numberOfUsedCharacters; *//* initially zero <= EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_CHARACTERS */ | ||||
| 	/* maximum number of name partitions entries. Name partitions entries consist in all uri, and local-name partition entries */ | ||||
| 	exi_name_partition_t | ||||
| 			namePartitionsEntries[EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES]; | ||||
| 	/* uint16_t numberOfUsedNamePartitions; *//* initially zero */ | ||||
| 	/* added entries */ | ||||
| 	size_t addedUriEntries; /* initially zero */ | ||||
| 	size_t addedLocalNameEntries; /* initially zero */ | ||||
| } exi_name_table_runtime_t; | ||||
|  | ||||
|  | ||||
| /* StartTagContent grammar initially empty */ | ||||
| /* ElementContent grammar has EE per default */ | ||||
| typedef struct { | ||||
| 	size_t namespaceUriID; | ||||
| 	size_t localNameID; | ||||
| 	size_t numberOfProductions; | ||||
| 	int hasXsiType; /* StartTagContent only */ | ||||
| 	int hasEE; /* ElementContentper default TRUE */ | ||||
| } exi_runtime_element_t; | ||||
|  | ||||
| /* Note: We do have twice as many runtime grammars (StartTagContent and ElementContent)*/ | ||||
| #define MAX_NUMBER_OF_RUNTIME_ELEMENTS 80 | ||||
|  | ||||
|  | ||||
|  | ||||
| /* ==================================== */ | ||||
| /* Value string table */ | ||||
| typedef struct exiValueStringTableEntry { | ||||
| 	/** Qualified namespace URI */ | ||||
| 	size_t namespaceUriID; | ||||
| 	/** Qualified localName */ | ||||
| 	size_t localNameID; | ||||
| 	/** Local Value ID */ | ||||
| 	size_t localValueID; | ||||
| 	/** String */ | ||||
| 	exi_string_t str; | ||||
| } exi_value_string_table_entry_t; | ||||
|  | ||||
| typedef struct exiValueStringTable { | ||||
| 	/** maximum number of global string table entry size */ | ||||
| 	size_t size; | ||||
| 	/** string table entry array container */ | ||||
| 	exi_value_string_table_entry_t* strs; | ||||
| 	/** current number of string table entries (len <= size) */ | ||||
| 	size_t len; | ||||
| } exi_value_string_table_t; | ||||
|  | ||||
| /* typedef struct { */ | ||||
| 	/** number of global strings */ | ||||
| 	/* uint16_t numberOfGlobalStrings; */ | ||||
| 	/** size of local-names container */ | ||||
| 	/* uint16_t sizeLocalStrings; */ | ||||
| 	/** number of local strings container */ | ||||
| 	/* uint16_t* numberOfLocalStrings; */ | ||||
| 	/** string values */ | ||||
| /*	exi_value_string_table_t* valueStringTable; | ||||
| } exi_value_table_t;*/ | ||||
|  | ||||
| typedef struct { | ||||
| 	/** stack of grammar states */ | ||||
| 	int16_t grammarStack[EXI_ELEMENT_STACK_SIZE]; | ||||
| 	/** stack of grammar elements / qnameIDs */ | ||||
| 	exi_eqname_t elementStack[EXI_ELEMENT_STACK_SIZE]; | ||||
| 	/** stack index for both stacks */ | ||||
| 	size_t stackIndex; | ||||
|  | ||||
| 	/** event-code */ | ||||
| 	uint32_t eventCode; | ||||
|  | ||||
| 	/** name table entries, pre-populated */ | ||||
| 	exi_name_table_prepopulated_t* nameTablePrepopulated; | ||||
| 	/** name table entries, at runtime */ | ||||
| 	exi_name_table_runtime_t* nameTableRuntime; | ||||
|  | ||||
| 	/** next qname ID */ | ||||
| 	size_t nextQNameID; | ||||
|  | ||||
| 	/** string table entries */ | ||||
| 	exi_value_string_table_t* stringTable; | ||||
|  | ||||
| 	/** runtime built-in element grammars - numbers */ | ||||
| 	size_t numberOfRuntimeGrammars; | ||||
| 	/** runtime built-in element grammars */ | ||||
| 	exi_runtime_element_t runtimeGrammars[MAX_NUMBER_OF_RUNTIME_ELEMENTS * 2]; | ||||
| } exi_state_t; | ||||
|  | ||||
| typedef struct { | ||||
| 	/* type of value */ | ||||
| 	exi_datatype_t type; | ||||
|  | ||||
| 	/* base types */ | ||||
| 	int boolean; | ||||
| 	uint32_t enumeration; | ||||
|  | ||||
| 	/* complex types: Integers, Bytes, Strings and Lists are not native types anymore */ | ||||
| 	exi_integer_t integer; | ||||
| 	exi_bytes_t binary; | ||||
| 	exi_string_value_t str; | ||||
| 	exi_float_me_t float_me; | ||||
| 	exi_decimal_t decimal; | ||||
| 	exi_datetime_t datetime; | ||||
| 	exi_list_t list; | ||||
| 	exi_eqname_t eqname; | ||||
| } exi_value_t; | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										704
									
								
								src/codec/EncoderChannel.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										704
									
								
								src/codec/EncoderChannel.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,704 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| #include "EncoderChannel.h" | ||||
| #include "EXIOptions.h" | ||||
| #include "BitOutputStream.h" | ||||
| #include "EXITypes.h" | ||||
| #include "ErrorCodes.h" | ||||
| #include "MethodsBag.h" | ||||
| /*#include "v2gEXICoder.h"*/ | ||||
|  | ||||
| #ifndef ENCODER_CHANNEL_C | ||||
| #define ENCODER_CHANNEL_C | ||||
|  | ||||
| int encodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv) { | ||||
| 	int errn = 0; | ||||
| 	switch (iv->type) { | ||||
| 	/* Unsigned Integer */ | ||||
| 	case EXI_UNSIGNED_INTEGER_8: | ||||
| 		errn = encodeUnsignedInteger32(stream, iv->val.uint8); | ||||
| 		break; | ||||
| 	case EXI_UNSIGNED_INTEGER_16: | ||||
| 		errn = encodeUnsignedInteger32(stream, iv->val.uint16); | ||||
| 		break; | ||||
| 	case EXI_UNSIGNED_INTEGER_32: | ||||
| 		errn = encodeUnsignedInteger32(stream, iv->val.uint32); | ||||
| 		break; | ||||
| 	case EXI_UNSIGNED_INTEGER_64: | ||||
| 		errn = encodeUnsignedInteger64(stream, iv->val.uint64); | ||||
| 		break; | ||||
| 		/* (Signed) Integer */ | ||||
| 	case EXI_INTEGER_8: | ||||
| 		if (iv->val.int8 < 0) { | ||||
| 			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE; | ||||
| 		} | ||||
| 		errn = encodeUnsignedInteger32(stream, (uint32_t)(iv->val.int8)); | ||||
| 		break; | ||||
| 	case EXI_INTEGER_16: | ||||
| 		if (iv->val.int16 < 0) { | ||||
| 			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE; | ||||
| 		} | ||||
| 		errn = encodeUnsignedInteger32(stream, (uint32_t)(iv->val.int16)); | ||||
| 		break; | ||||
| 	case EXI_INTEGER_32: | ||||
| 		if (iv->val.int32 < 0) { | ||||
| 			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE; | ||||
| 		} | ||||
| 		errn = encodeUnsignedInteger32(stream, (uint32_t)(iv->val.int32)); | ||||
| 		break; | ||||
| 	case EXI_INTEGER_64: | ||||
| 		if (iv->val.int64 < 0) { | ||||
| 			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE; | ||||
| 		} | ||||
| 		errn = encodeUnsignedInteger64(stream, (uint64_t)(iv->val.int64)); | ||||
| 		break; | ||||
| 	default: | ||||
| 		errn = EXI_UNSUPPORTED_INTEGER_VALUE_TYPE; | ||||
| 		break; | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode an arbitrary precision non negative integer using a sequence of | ||||
|  * octets. The most significant bit of the last octet is set to zero to | ||||
|  * indicate sequence termination. Only seven bits per octet are used to | ||||
|  * store the integer's value. | ||||
|  */ | ||||
| int encodeUnsignedInteger16(bitstream_t* stream, uint16_t n) { | ||||
| 	int errn = 0; | ||||
| 	if (n < 128) { | ||||
| 		/* write byte as is */ | ||||
| 		errn = encode(stream, (uint8_t) n); | ||||
| 	} else { | ||||
| 		uint8_t n7BitBlocks = numberOf7BitBlocksToRepresent(n); | ||||
|  | ||||
| 		switch (n7BitBlocks) { | ||||
| 		case 3: | ||||
| 			errn = encode(stream, (uint8_t) (128 | n)); | ||||
| 			n = n >> 7; | ||||
| 			if (errn != 0) { | ||||
| 				break; | ||||
| 			} | ||||
| 			/* no break */ | ||||
| 		case 2: | ||||
| 			errn = encode(stream, (uint8_t) (128 | n)); | ||||
| 			n = n >> 7; | ||||
| 			if (errn != 0) { | ||||
| 				break; | ||||
| 			} | ||||
| 			/* no break */ | ||||
| 		case 1: | ||||
| 			/* 0 .. 7 (last byte) */ | ||||
| 			errn = encode(stream, (uint8_t) (0 | n)); | ||||
| 			/* no break */ | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode an arbitrary precision non negative integer using a sequence of | ||||
|  * octets. The most significant bit of the last octet is set to zero to | ||||
|  * indicate sequence termination. Only seven bits per octet are used to | ||||
|  * store the integer's value. | ||||
|  */ | ||||
| int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n) { | ||||
| 	int errn = 0; | ||||
| 	if (n < 128) { | ||||
| 		/* write byte as is */ | ||||
| 		errn = encode(stream, (uint8_t) n); | ||||
| 	} else { | ||||
| 		uint8_t n7BitBlocks = numberOf7BitBlocksToRepresent(n); | ||||
|  | ||||
| 		switch (n7BitBlocks) { | ||||
| 		case 5: | ||||
| 			errn = encode(stream, (uint8_t) (128 | n)); | ||||
| 			n = n >> 7; | ||||
| 			if (errn != 0) { | ||||
| 				break; | ||||
| 			} | ||||
| 			/* no break */ | ||||
| 		case 4: | ||||
| 			errn = encode(stream, (uint8_t) (128 | n)); | ||||
| 			n = n >> 7; | ||||
| 			if (errn != 0) { | ||||
| 				break; | ||||
| 			} | ||||
| 			/* no break */ | ||||
| 		case 3: | ||||
| 			errn = encode(stream, (uint8_t) (128 | n)); | ||||
| 			n = n >> 7; | ||||
| 			if (errn != 0) { | ||||
| 				break; | ||||
| 			} | ||||
| 			/* no break */ | ||||
| 		case 2: | ||||
| 			errn = encode(stream, (uint8_t) (128 | n)); | ||||
| 			n = n >> 7; | ||||
| 			if (errn != 0) { | ||||
| 				break; | ||||
| 			} | ||||
| 			/* no break */ | ||||
| 		case 1: | ||||
| 			/* 0 .. 7 (last byte) */ | ||||
| 			errn = encode(stream, (uint8_t) (0 | n)); | ||||
| 			/* no break */ | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode an arbitrary precision non negative integer using a sequence of | ||||
|  * octets. The most significant bit of the last octet is set to zero to | ||||
|  * indicate sequence termination. Only seven bits per octet are used to | ||||
|  * store the integer's value. | ||||
|  */ | ||||
| int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n) { | ||||
| 	int errn = 0; | ||||
| 	uint8_t lastEncode = (uint8_t) n; | ||||
| 	n >>= 7; | ||||
|  | ||||
| 	while (n != 0 && errn == 0) { | ||||
| 		errn = encode(stream, lastEncode | 128); | ||||
| 		lastEncode = (uint8_t) n; | ||||
| 		n >>= 7; | ||||
| 	} | ||||
|  | ||||
| 	if (errn == 0) { | ||||
| 		errn = encode(stream, lastEncode); | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| void _shiftRight7(uint8_t* buf, int len) { | ||||
| 	const int shift = 7; | ||||
|     unsigned char tmp = 0x00, tmp2 = 0x00; | ||||
|     for (int k = 0; k <= len; k++) { | ||||
|         if (k == 0) { | ||||
|             tmp = buf[k]; | ||||
|             buf[k] >>= shift; | ||||
|         } else { | ||||
|             tmp2 = buf[k]; | ||||
|             buf[k] >>= shift; | ||||
|             buf[k] |= ((tmp & 0x7F) << (8 - shift)); | ||||
|  | ||||
|             if (k != len) { | ||||
|                 tmp = tmp2; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode an arbitrary precision non negative integer using a sequence of | ||||
|  * octets. The most significant bit of the last octet is set to zero to | ||||
|  * indicate sequence termination. Only seven bits per octet are used to | ||||
|  * store the integer's value. | ||||
|  */ | ||||
| int encodeUnsignedIntegerBig(bitstream_t* stream, size_t size, uint8_t* data, size_t len) { | ||||
| 	int errn = 0; | ||||
| 	int i; | ||||
| 	int lenM1 = len - 1; | ||||
| 	const int MAX_BIGINT_ARRAY = 25; | ||||
| 	uint8_t lastEncode = 0; | ||||
| 	uint8_t bytesToShift[MAX_BIGINT_ARRAY]; // MAXIMUM | ||||
| 	size_t bitsToEncode = len * 8; | ||||
|  | ||||
| 	if(MAX_BIGINT_ARRAY <= len) { | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| 	/* init */ | ||||
| 	for(i=0; i<MAX_BIGINT_ARRAY; i++) { | ||||
| 		bytesToShift[i] = 0; | ||||
| 	} | ||||
|  | ||||
| 	/* copy bytes first in same order for shifting */ | ||||
| 	for(i=0; i < len; i++) { | ||||
| 		bytesToShift[i] = data[i]; | ||||
| 	} | ||||
|  | ||||
| 	while(bitsToEncode > 7) { | ||||
| 		lastEncode = bytesToShift[lenM1]; | ||||
| 		lastEncode = lastEncode | 128; | ||||
| 		errn = encode(stream, lastEncode); | ||||
| 		_shiftRight7(bytesToShift, len); | ||||
| 		bitsToEncode -= 7; | ||||
| 	} | ||||
|  | ||||
| 	if (errn == 0) { | ||||
| 		errn = encode(stream, bytesToShift[lenM1]); | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| int encodeInteger(bitstream_t* stream, exi_integer_t* iv) { | ||||
| 	int errn = 0; | ||||
| 	switch (iv->type) { | ||||
| 	/* Unsigned Integer */ | ||||
| 	case EXI_UNSIGNED_INTEGER_8: | ||||
| 		errn = encodeInteger32(stream, iv->val.uint8); | ||||
| 		break; | ||||
| 	case EXI_UNSIGNED_INTEGER_16: | ||||
| 		errn = encodeInteger32(stream, iv->val.uint16); | ||||
| 		break; | ||||
| 	case EXI_UNSIGNED_INTEGER_32: | ||||
| 		errn = encodeInteger64(stream, iv->val.uint32); | ||||
| 		break; | ||||
| 	case EXI_UNSIGNED_INTEGER_64: | ||||
| 		errn = encodeInteger64(stream, (int64_t)(iv->val.uint64)); | ||||
| 		break; | ||||
| 		/* (Signed) Integer */ | ||||
| 	case EXI_INTEGER_8: | ||||
| 		errn = encodeInteger32(stream, iv->val.int8); | ||||
| 		break; | ||||
| 	case EXI_INTEGER_16: | ||||
| 		errn = encodeInteger32(stream, iv->val.int16); | ||||
| 		break; | ||||
| 	case EXI_INTEGER_32: | ||||
| 		errn = encodeInteger32(stream, iv->val.int32); | ||||
| 		break; | ||||
| 	case EXI_INTEGER_64: | ||||
| 		errn = encodeInteger64(stream, iv->val.int64); | ||||
| 		break; | ||||
| 	default: | ||||
| 		errn = EXI_UNSUPPORTED_INTEGER_VALUE_TYPE; | ||||
| 		break; | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Encode an arbitrary precision integer using a sign bit followed by a | ||||
|  * sequence of octets. The most significant bit of the last octet is set to | ||||
|  * zero to indicate sequence termination. Only seven bits per octet are used | ||||
|  * to store the integer's value. | ||||
|  */ | ||||
| int encodeInteger16(bitstream_t* stream, int16_t n) { | ||||
| 	int errn; | ||||
| 	/* signalize sign */ | ||||
| 	if (n < 0) { | ||||
| 		errn = encodeBoolean(stream, 1); | ||||
| 		/* For negative values, the Unsigned Integer holds the | ||||
| 		 * magnitude of the value minus 1 */ | ||||
| 		n = (int16_t)((-n) - 1); | ||||
| 	} else { | ||||
| 		errn = encodeBoolean(stream, 0); | ||||
| 	} | ||||
| 	if (errn == 0) { | ||||
| 		errn = encodeUnsignedInteger16(stream, (uint16_t)n); | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Encode an arbitrary precision integer using a sign bit followed by a | ||||
|  * sequence of octets. The most significant bit of the last octet is set to | ||||
|  * zero to indicate sequence termination. Only seven bits per octet are used | ||||
|  * to store the integer's value. | ||||
|  */ | ||||
| int encodeInteger32(bitstream_t* stream, int32_t n) { | ||||
| 	int errn; | ||||
| 	/* signalize sign */ | ||||
| 	if (n < 0) { | ||||
| 		errn = encodeBoolean(stream, 1); | ||||
| 		/* For negative values, the Unsigned Integer holds the | ||||
| 		 * magnitude of the value minus 1 */ | ||||
| 		n = (-n) - 1; | ||||
| 	} else { | ||||
| 		errn = encodeBoolean(stream, 0); | ||||
| 	} | ||||
| 	if (errn == 0) { | ||||
| 		errn = encodeUnsignedInteger32(stream, (uint32_t)n); | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode an arbitrary precision integer using a sign bit followed by a | ||||
|  * sequence of octets. The most significant bit of the last octet is set to | ||||
|  * zero to indicate sequence termination. Only seven bits per octet are used | ||||
|  * to store the integer's value. | ||||
|  */ | ||||
| int encodeInteger64(bitstream_t* stream, int64_t n) { | ||||
| 	int errn; | ||||
| 	/* signalize sign */ | ||||
| 	if (n < 0) { | ||||
| 		errn = encodeBoolean(stream, 1); | ||||
| 		/* For negative values, the Unsigned Integer holds the | ||||
| 		 * magnitude of the value minus 1 */ | ||||
| 		n = (-n) - 1; | ||||
| 	} else { | ||||
| 		errn = encodeBoolean(stream, 0); | ||||
| 	} | ||||
| 	if (errn == 0) { | ||||
| 		errn = encodeUnsignedInteger64(stream, (uint64_t)n); | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Encode an arbitrary precision integer using a sign bit followed by a | ||||
|  * sequence of octets. The most significant bit of the last octet is set to | ||||
|  * zero to indicate sequence termination. Only seven bits per octet are used | ||||
|  * to store the integer's value. | ||||
|  */ | ||||
| int encodeIntegerBig(bitstream_t* stream, int negative, size_t size, uint8_t* data, size_t len) { | ||||
| 	int errn; | ||||
| 	/* signalize sign */ | ||||
| 	if (negative) { | ||||
| 		errn = encodeBoolean(stream, 1); | ||||
| 		/* For negative values, the Unsigned Integer holds the | ||||
| 		 * magnitude of the value minus 1 */ | ||||
| 		/* n = (-n) - 1; */ | ||||
| 	} else { | ||||
| 		errn = encodeBoolean(stream, 0); | ||||
| 	} | ||||
| 	if (errn == 0) { | ||||
| 		errn = encodeUnsignedIntegerBig(stream, size, data, len); | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * The Float datatype representation is two consecutive Integers. | ||||
|  * The first Integer represents the mantissa of the floating point | ||||
|  * number and the second Integer represents the base-10 exponent | ||||
|  * of the floating point number. | ||||
|  */ | ||||
| int encodeFloat(bitstream_t* stream, exi_float_me_t* f) { | ||||
| 	int errn = encodeInteger64(stream, f->mantissa); | ||||
| 	if (errn == 0) { | ||||
| 		errn = encodeInteger32(stream, f->exponent); | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode a decimal represented as a Boolean sign followed by two Unsigned | ||||
|  * Integers. A sign value of zero (0) is used to represent positive Decimal | ||||
|  * values and a sign value of one (1) is used to represent negative Decimal | ||||
|  * values The first Integer represents the integral portion of the Decimal | ||||
|  * value. The second positive integer represents the fractional portion of | ||||
|  * the decimal with the digits in reverse order to preserve leading zeros. | ||||
|  */ | ||||
| int encodeDecimal(bitstream_t* stream, exi_decimal_t* d) { | ||||
| 	/* sign, integral, reverse fractional */ | ||||
| 	int errn = encodeBoolean(stream, d->negative); | ||||
| 	if (errn == 0) { | ||||
| 		errn = encodeUnsignedInteger(stream, &d->integral); | ||||
| 		if (errn == 0) { | ||||
| 			errn = encodeUnsignedInteger(stream, &d->reverseFraction); | ||||
| 		} | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode a length prefixed sequence of characters. | ||||
|  */ | ||||
| int encodeString(bitstream_t* stream, exi_string_t* string) { | ||||
| 	int errn = encodeUnsignedInteger32(stream, string->len); | ||||
| 	if (errn == 0) { | ||||
| 		errn = encodeCharacters(stream, string->characters, string->len); | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode a sequence of characters according to a given length. | ||||
|  * Each character is represented by its UCS [ISO/IEC 10646] | ||||
|  * code point encoded as an Unsigned Integer | ||||
|  */ | ||||
| int encodeCharacters(bitstream_t* stream, exi_string_character_t* chars, size_t len) { | ||||
| 	unsigned int i; | ||||
| 	int errn = 0; | ||||
| 	for (i = 0; i < len && errn == 0; i++) { | ||||
| #if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII | ||||
| 		errn = encode(stream, (uint8_t)chars[i]); | ||||
| #endif /* STRING_REPRESENTATION_ASCII */ | ||||
| #if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS | ||||
| 		errn = encodeUnsignedInteger32(stream, chars[i]); | ||||
| #endif /* STRING_REPRESENTATION_UCS */ | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
| int encodeRCSCharacters(bitstream_t* stream, exi_string_character_t* chars, size_t len, size_t rcsCodeLength, size_t rcsSize, const exi_string_character_t rcsSet[]) { | ||||
| 	unsigned int i; | ||||
| 	unsigned int k; | ||||
| 	int errn = 0; | ||||
| 	size_t rcsCode = SIZE_MAX; | ||||
|  | ||||
| 	for (i = 0; i < len && errn == 0; i++) { | ||||
| 		/* try to find short code */ | ||||
| 		rcsCode = SIZE_MAX; | ||||
| 		for(k=0; k<rcsSize && rcsCode == SIZE_MAX; k++) { | ||||
| 			if(rcsSet[k] == chars[i]) { | ||||
| 				rcsCode = k; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		if( rcsCode == SIZE_MAX) { | ||||
| 			/* RCS mis-match */ | ||||
| 			errn = encodeNBitUnsignedInteger(stream, rcsCodeLength, rcsSize); | ||||
| #if STRING_REPRESENTATION == STRING_REPRESENTATION_ASCII | ||||
| 			errn = encode(stream, (uint8_t)chars[i]); | ||||
| #endif /* STRING_REPRESENTATION_ASCII */ | ||||
| #if STRING_REPRESENTATION == STRING_REPRESENTATION_UCS | ||||
| 			errn = encodeUnsignedInteger32(stream, chars[i]); | ||||
| #endif /* STRING_REPRESENTATION_UCS */ | ||||
|  | ||||
| 		} else { | ||||
| 			/* RCS match */ | ||||
| 			errn = encodeNBitUnsignedInteger(stream, rcsCodeLength, (uint32_t)rcsCode); | ||||
| 		} | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode a binary value as a length-prefixed sequence of octets. | ||||
|  */ | ||||
| int encodeBinary(bitstream_t* stream, exi_bytes_t* bytes) { | ||||
| 	int errn = encodeUnsignedInteger32(stream, bytes->len); | ||||
|  | ||||
| 	if(errn == 0) { | ||||
| 		errn = encodeBytes(stream, bytes->data, bytes->len); | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| int encodeBytes(bitstream_t* stream, uint8_t* data, size_t len) { | ||||
| 	unsigned int i; | ||||
| 	int errn = 0; | ||||
|  | ||||
| 	for (i = 0; i < len && errn == 0; i++) { | ||||
| 		errn = encode(stream, data[i]); | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode a datetime representation which is a sequence of values | ||||
|  * representing the individual components of the Date-Time | ||||
|  */ | ||||
| int encodeDateTime(bitstream_t* stream, exi_datetime_t* datetime) { | ||||
| 	int errn = 0; | ||||
| 	switch (datetime->type) { | ||||
| 	case EXI_DATETIME_GYEAR: /* Year, [Time-Zone] */ | ||||
| 		errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET); | ||||
| 		break; | ||||
| 	case EXI_DATETIME_GYEARMONTH: /* Year, MonthDay, [TimeZone] */ | ||||
| 	case EXI_DATETIME_DATE: /* Year, MonthDay, [TimeZone] */ | ||||
| 		errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET); | ||||
| 		if (errn == 0) { | ||||
| 			errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, | ||||
| 					datetime->monthDay); | ||||
| 		} | ||||
| 		break; | ||||
| 	case EXI_DATETIME_DATETIME: /* Year, MonthDay, Time, [FractionalSecs], [TimeZone] */ | ||||
| 		errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET); | ||||
| 		if (errn == 0) { | ||||
| 			errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, | ||||
| 					datetime->monthDay); | ||||
| 			if (errn != 0) { | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		/* no break */ | ||||
| 	case EXI_DATETIME_TIME: /* Time, [FractionalSecs], [TimeZone] */ | ||||
| 		errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIME, | ||||
| 				datetime->time); | ||||
| 		if (errn == 0) { | ||||
| 			if (datetime->presenceFractionalSecs) { | ||||
| 				errn = encodeBoolean(stream, 1); | ||||
| 				if (errn == 0) { | ||||
| 					errn = encodeUnsignedInteger32(stream, datetime->fractionalSecs); | ||||
| 				} | ||||
| 			} else { | ||||
| 				errn = encodeBoolean(stream, 0); | ||||
| 			} | ||||
| 		} | ||||
| 		break; | ||||
| 	case EXI_DATETIME_GMONTH: /* MonthDay, [TimeZone] */ | ||||
| 	case EXI_DATETIME_GMONTHDAY: /* MonthDay, [TimeZone] */ | ||||
| 	case EXI_DATETIME_GDAY: /* MonthDay, [TimeZone] */ | ||||
| 		errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, | ||||
| 				datetime->monthDay); | ||||
| 		break; | ||||
| 	default: | ||||
| 		errn = EXI_UNSUPPORTED_DATETIME_TYPE; | ||||
| 		break; | ||||
| 	} | ||||
| 	if (errn == 0) { | ||||
| 		/* [TimeZone] */ | ||||
| 		if (datetime->presenceTimezone) { | ||||
| 			errn = encodeBoolean(stream, 1); | ||||
| 			if (errn == 0) { | ||||
| 				errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIMEZONE, | ||||
| 						datetime->timezone + DATETIME_TIMEZONE_OFFSET_IN_MINUTES); | ||||
| 			} | ||||
| 		} else { | ||||
| 			errn = encodeBoolean(stream, 0); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| int encode(bitstream_t* stream, uint8_t b) { | ||||
| #if EXI_OPTION_ALIGNMENT == BIT_PACKED | ||||
| 	return writeBits(stream, 8, b); | ||||
| #endif /* EXI_OPTION_ALIGNMENT == BIT_PACKED */ | ||||
| #if EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT | ||||
| 	int errn = 0; | ||||
| #if EXI_STREAM == BYTE_ARRAY | ||||
| 	if ( (*stream->pos) < stream->size ) { | ||||
| 		stream->data[(*stream->pos)++] = b; | ||||
| 	} else { | ||||
| 		errn = EXI_ERROR_OUTPUT_STREAM_EOF; | ||||
| 	} | ||||
| #endif /* EXI_STREAM == BYTE_ARRAY */ | ||||
| #if EXI_STREAM == FILE_STREAM | ||||
| 	if ( putc(b, stream->file) == EOF ) { | ||||
| 		errn = EXI_ERROR_OUTPUT_STREAM_EOF; | ||||
| 	} | ||||
| #endif /* EXI_STREAM == FILE_STREAM */ | ||||
| 	return errn; | ||||
| #endif /* EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode a single boolean value. A false value is encoded as bit 0 and true | ||||
|  * value is encode as bit 1. | ||||
|  */ | ||||
| int encodeBoolean(bitstream_t* stream, int b) { | ||||
| #if EXI_OPTION_ALIGNMENT == BIT_PACKED | ||||
| 	uint8_t val = b ? 1 : 0; | ||||
| 	return writeBits(stream, 1, val); | ||||
| #endif /* EXI_OPTION_ALIGNMENT == BIT_PACKED */ | ||||
| #if EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT | ||||
| 	uint8_t val = b ? 1 : 0; | ||||
| 	return encode(stream, val); | ||||
| #endif /* EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT */ | ||||
| } | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Encode n-bit unsigned integer. The n least significant bits of parameter | ||||
|  * b starting with the most significant, i.e. from left to right. | ||||
|  */ | ||||
| int encodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint32_t val)  { | ||||
| #if EXI_OPTION_ALIGNMENT == BIT_PACKED | ||||
| 	int errn = 0; | ||||
| 	if (nbits > 0) { | ||||
| 		errn = writeBits(stream, nbits, val); | ||||
| 	} | ||||
| 	return errn; | ||||
| #endif /* EXI_OPTION_ALIGNMENT == BIT_PACKED */ | ||||
| #if EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT | ||||
| 	int errn = 0; | ||||
| 	if (nbits > 0) { | ||||
| 		if (nbits < 9) { | ||||
| 			/* 1 byte */ | ||||
| 			errn = encode(stream, val & 0xff); | ||||
| 		} else if (nbits < 17) { | ||||
| 			/* 2 bytes */ | ||||
| 			errn = encode(stream, val & 0x00ff); | ||||
| 			if(errn == 0) { | ||||
| 				errn = encode(stream, (uint8_t)((val & 0xff00) >> 8)); | ||||
| 			} | ||||
| 		} else if (nbits < 25) { | ||||
| 			/* 3 bytes */ | ||||
| 			errn = encode(stream, val & 0x0000ff); | ||||
| 			if(errn == 0) { | ||||
| 				errn = encode(stream, (uint8_t)((val & 0x00ff00) >> 8)); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode(stream, (uint8_t)((val & 0xff0000) >> 16)); | ||||
| 				} | ||||
| 			} | ||||
| 		} else if (nbits < 33) { | ||||
| 			/* 4 bytes */ | ||||
| 			errn = encode(stream, val & 0x000000ff); | ||||
| 			if(errn == 0) { | ||||
| 				errn = encode(stream, (uint8_t)((val & 0x0000ff00) >> 8)); | ||||
| 				if(errn == 0) { | ||||
| 					errn = encode(stream, (uint8_t)((val & 0x00ff0000) >> 16)); | ||||
| 					if(errn == 0) { | ||||
| 						errn = encode(stream, (uint8_t)((val & 0xff000000) >> 24)); | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} else { | ||||
| 			/* TODO Currently not more than 4 Bytes allowed for NBitUnsignedInteger */ | ||||
| 			errn = EXI_UNSUPPORTED_NBIT_INTEGER_LENGTH; | ||||
| 		} | ||||
| 	} | ||||
| 	return errn; | ||||
| #endif /* EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Flush underlying output stream. | ||||
|  */ | ||||
| int encodeFinish(bitstream_t* stream) { | ||||
| #if EXI_OPTION_ALIGNMENT == BIT_PACKED | ||||
| #endif /* EXI_OPTION_ALIGNMENT == BIT_PACKED */ | ||||
| 	return flush(stream); | ||||
| #if EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT | ||||
| 	/* no pending bits in byte-aligned mode */ | ||||
| 	return 0; | ||||
| #endif /* EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT */ | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										423
									
								
								src/codec/EncoderChannel.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										423
									
								
								src/codec/EncoderChannel.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,423 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EncoderChannel.h | ||||
|  * \brief 	EXI Encoder Channel | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef ENCODER_CHANNEL_H | ||||
| #define ENCODER_CHANNEL_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode byte value | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       b		   		byte | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encode(bitstream_t* stream, uint8_t b); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode a single boolean value | ||||
|  * | ||||
|  * 				A false value is encoded as 0 and true value is encode as 1. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       b		   		boolean | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeBoolean(bitstream_t* stream, int b); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode n-bit unsigned integer | ||||
|  * | ||||
|  * 				The n least significant bits of parameter b starting with the | ||||
|  * 				most significant, i.e. from left to right. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       nbits		   	number of bits | ||||
|  * \param       val		   		value | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint32_t val); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode unsigned integer | ||||
|  * | ||||
|  * 				Encode an arbitrary precision non negative integer using | ||||
|  * 				a sequence of octets. The most significant bit of the last | ||||
|  * 				octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       iv		   		Unsigned integer value | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode unsigned integer | ||||
|  * | ||||
|  * 				Encode an arbitrary precision non negative integer using | ||||
|  * 				a sequence of octets. The most significant bit of the last | ||||
|  * 				octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       n		   		Unsigned integer value 16 bits | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeUnsignedInteger16(bitstream_t* stream, uint16_t n); | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode unsigned integer | ||||
|  * | ||||
|  * 				Encode an arbitrary precision non negative integer using | ||||
|  * 				a sequence of octets. The most significant bit of the last | ||||
|  * 				octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       n		   		Unsigned integer value 32 bits | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode unsigned integer | ||||
|  * | ||||
|  * 				Encode an arbitrary precision non negative integer using | ||||
|  * 				a sequence of octets. The most significant bit of the last | ||||
|  * 				octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       n		   		Unsigned integer value 64 bits | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n); | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode unsigned integer | ||||
|  * | ||||
|  * 				Encode an arbitrary precision non negative integer using | ||||
|  * 				a sequence of octets. The most significant bit of the last | ||||
|  * 				octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       size		   	size array | ||||
|  * \param       data		   	data array | ||||
|  * \param       len		   		length array | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeUnsignedIntegerBig(bitstream_t* stream, size_t size, uint8_t* data, size_t len); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode integer | ||||
|  * | ||||
|  * 				Encode an arbitrary precision integer using a sign boolean | ||||
|  * 				followed by a sequence of octets. The most significant bit | ||||
|  * 				of the last octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       iv		   		Integer value | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeInteger(bitstream_t* stream, exi_integer_t* iv); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode integer | ||||
|  * | ||||
|  * 				Encode an arbitrary precision integer using a sign boolean | ||||
|  * 				followed by a sequence of octets. The most significant bit | ||||
|  * 				of the last octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       n		   		Integer value 16 bits | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeInteger16(bitstream_t* stream, int16_t n); | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode integer | ||||
|  * | ||||
|  * 				Encode an arbitrary precision integer using a sign boolean | ||||
|  * 				followed by a sequence of octets. The most significant bit | ||||
|  * 				of the last octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       n		   		Integer value 32 bits | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeInteger32(bitstream_t* stream, int32_t n); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode integer | ||||
|  * | ||||
|  * 				Encode an arbitrary precision integer using a sign boolean | ||||
|  * 				followed by a sequence of octets. The most significant bit | ||||
|  * 				of the last octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       n		   		Integer value 64 bits | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeInteger64(bitstream_t* stream, int64_t n); | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode integer | ||||
|  * | ||||
|  * 				Encode an arbitrary precision integer using a sign boolean | ||||
|  * 				followed by a sequence of octets. The most significant bit | ||||
|  * 				of the last octet is set to zero to indicate sequence termination. | ||||
|  * 				Only seven bits per octet are used to store the integer's value. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       negative		negative integer | ||||
|  * \param       size		   	size array | ||||
|  * \param       data		   	data array | ||||
|  * \param       len		   		length array | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeIntegerBig(bitstream_t* stream, int negative, size_t size, uint8_t* data, size_t len); | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode float | ||||
|  * | ||||
|  * 				Encode a Float datatype as two consecutive Integers. The first | ||||
|  * 				Integer represents the mantissa of the floating point number | ||||
|  * 				and the second Integer represents the base-10 exponent of the | ||||
|  * 				floating point number. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       f		   		Float value | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeFloat(bitstream_t* stream, exi_float_me_t* f); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode decimal | ||||
|  * | ||||
|  * 				Encode a decimal represented as a Boolean sign followed by two | ||||
|  * 				Unsigned Integers. A sign value of zero (0) is used to represent | ||||
|  * 				positive Decimal values and a sign value of one (1) is used to | ||||
|  * 				represent negative Decimal values The first Integer represents | ||||
|  * 				the integral portion of the Decimal value. The second positive | ||||
|  * 				integer represents the fractional portion of the decimal with | ||||
|  * 				the digits in reverse order to preserve leading zeros. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       d		   		Decimal value | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeDecimal(bitstream_t* stream, exi_decimal_t* d); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode string | ||||
|  * | ||||
|  * 				Encode a length prefixed sequence of characters. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       string		   	String | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeString(bitstream_t* stream, exi_string_t* string); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode string value | ||||
|  * | ||||
|  * 				 Encode a length prefixed sequence of characters | ||||
|  * 				 in the sense of string tables | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       stringTable   	String Table | ||||
|  * \param       namespaceUriID  Qualified Namespace ID | ||||
|  * \param       localNameID  	Qualified LocalName ID | ||||
|  * \param       string		   	String value | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeStringValue(bitstream_t* stream, exi_value_string_table_t* stringTable, size_t namespaceUriID, size_t localNameID, | ||||
| 		exi_string_value_t* string); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode restricted character set value | ||||
|  * | ||||
|  * 				 Encode a length prefixed sequence of characters | ||||
|  * 				 in the sense of string tables | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       StringTable   	StringTable | ||||
|  * \param       namespaceUriID  Qualified Namespace ID | ||||
|  * \param       localNameID  	Qualified LocalName ID | ||||
|  * \param       rcs   			Restricted character set | ||||
|  * \param       string		   	String value | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeRCSStringValue(bitstream_t* stream, exi_value_string_table_t* stringTable, | ||||
| 		size_t namespaceUriID, size_t localNameID, exi_rcs_t* rcs, exi_string_value_t* string); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode characters | ||||
|  * | ||||
|  * 				Encode a sequence of characters according to a given length. | ||||
|  * 				Each character is represented by its UCS [ISO/IEC 10646] | ||||
|  * 				code point encoded as an Unsigned Integer. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       chars   		Characters | ||||
|  * \param       len				Numbr of characters | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeCharacters(bitstream_t* stream, exi_string_character_t* chars, size_t len); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode characters | ||||
|  * | ||||
|  * 				Encode a sequence of characters according to a given length. | ||||
|  * 				Each character is represented by its UCS [ISO/IEC 10646] | ||||
|  * 				code point encoded as an Unsigned Integer. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       chars   		Characters | ||||
|  * \param       len				Numbr of characters | ||||
|  *  \param       rcsCodeLength   RCS code-length | ||||
|  * \param       rcsCodeLength   RCS size | ||||
|  * \param       rcsCodeLength   RCS set | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeRCSCharacters(bitstream_t* stream, exi_string_character_t* chars, size_t len, size_t rcsCodeLength, size_t rcsSize, const exi_string_character_t rcsSet[]); | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode binary | ||||
|  * | ||||
|  * 				Encode a binary value as a length-prefixed sequence of octets. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       bytes   		Byte values | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeBinary(bitstream_t* stream, exi_bytes_t* bytes); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode binary data | ||||
|  * | ||||
|  * 				Encode a sequence of octets. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       data	   		Byte values | ||||
|  * \param       len		   		Length | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeBytes(bitstream_t* stream, uint8_t* data, size_t len); | ||||
|  | ||||
| /** | ||||
|  * \brief 		Encode datetime | ||||
|  * | ||||
|  * 				Encode a datetime representation which is a sequence of values | ||||
|  * 				representing the individual components of the Date-Time. | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \param       datetime   		Datetime values | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeDateTime(bitstream_t* stream, exi_datetime_t* datetime); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief 		Flush underlying bit output stream | ||||
|  * | ||||
|  * \param       stream   		Output Stream | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int encodeFinish(bitstream_t* stream); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										120
									
								
								src/codec/ErrorCodes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								src/codec/ErrorCodes.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,120 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	ErrorCodes.h | ||||
|  * \brief 	Error Codes descriptions | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_ERROR_CODES_H | ||||
| #define EXI_ERROR_CODES_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #define EXI_ERROR_INPUT_STREAM_EOF -10 | ||||
| #define EXI_ERROR_OUTPUT_STREAM_EOF -11 | ||||
| #define EXI_ERROR_INPUT_FILE_HANDLE -12 | ||||
| #define EXI_ERROR_OUTPUT_FILE -13 | ||||
|  | ||||
| #define EXI_ERROR_OUT_OF_BOUNDS -100 | ||||
| #define EXI_ERROR_OUT_OF_STRING_BUFFER -101 | ||||
| /*#define EXI_ERROR_OUT_OF_ASCII_BUFFER -102 */ | ||||
| #define EXI_ERROR_OUT_OF_BYTE_BUFFER -103 | ||||
| #define EXI_ERROR_OUT_OF_GRAMMAR_STACK -104 | ||||
| #define EXI_ERROR_OUT_OF_RUNTIME_GRAMMAR_STACK -105 | ||||
| #define EXI_ERROR_OUT_OF_QNAMES -106 | ||||
|  | ||||
| #define EXI_ERROR_UNKOWN_GRAMMAR_ID -108 | ||||
| #define EXI_ERROR_UNKOWN_EVENT -109 | ||||
| #define EXI_ERROR_UNKOWN_EVENT_CODE -110 | ||||
| #define EXI_ERROR_UNEXPECTED_EVENT_LEVEL1 -111 | ||||
| #define EXI_ERROR_UNEXPECTED_EVENT_LEVEL2 -112 | ||||
|  | ||||
| #define EXI_ERROR_UNEXPECTED_START_DOCUMENT -113 | ||||
| #define EXI_ERROR_UNEXPECTED_END_DOCUMENT -114 | ||||
| #define EXI_ERROR_UNEXPECTED_START_ELEMENT -115 | ||||
| #define EXI_ERROR_UNEXPECTED_START_ELEMENT_NS -116 | ||||
| #define EXI_ERROR_UNEXPECTED_START_ELEMENT_GENERIC -117 | ||||
| #define EXI_ERROR_UNEXPECTED_START_ELEMENT_GENERIC_UNDECLARED -118 | ||||
| #define EXI_ERROR_UNEXPECTED_END_ELEMENT -119 | ||||
| #define EXI_ERROR_UNEXPECTED_CHARACTERS -120 | ||||
| #define EXI_ERROR_UNEXPECTED_ATTRIBUTE -121 | ||||
| #define EXI_ERROR_UNEXPECTED_ATTRIBUTE_NS -122 | ||||
| #define EXI_ERROR_UNEXPECTED_ATTRIBUTE_GENERIC -123 | ||||
| #define EXI_ERROR_UNEXPECTED_ATTRIBUTE_GENERIC_UNDECLARED -124 | ||||
| #define EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_TYPE -125 | ||||
| #define EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_NIL -126 | ||||
| #define EXI_ERROR_UNEXPECTED_GRAMMAR_ID -127 | ||||
| #define EXI_ERROR_UNEXPECTED_ATTRIBUTE_MOVE_TO_CONTENT_RULE -128 | ||||
|  | ||||
| #define EXI_UNSUPPORTED_NBIT_INTEGER_LENGTH -132 | ||||
| #define EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS -133 | ||||
| #define EXI_UNSUPPORTED_INTEGER_VALUE -134 | ||||
| #define EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE -135 | ||||
| #define EXI_UNSUPPORTED_LIST_VALUE_TYPE -136 | ||||
| #define EXI_UNSUPPORTED_HEADER_COOKIE -137 | ||||
| #define EXI_UNSUPPORTED_HEADER_OPTIONS -138 | ||||
|  | ||||
| #define EXI_UNSUPPORTED_GLOBAL_ATTRIBUTE_VALUE_TYPE -139 | ||||
| #define EXI_UNSUPPORTED_DATATYPE -140 | ||||
| #define EXI_UNSUPPORTED_STRING_VALUE_TYPE -141 | ||||
| #define EXI_UNSUPPORTED_INTEGER_VALUE_TYPE -142 | ||||
| #define EXI_UNSUPPORTED_DATETIME_TYPE -143 | ||||
| #define EXI_UNSUPPORTED_FRAGMENT_ELEMENT -144 | ||||
|  | ||||
| #define EXI_UNSUPPORTED_GRAMMAR_LEARNING_CH -150 | ||||
|  | ||||
| /* string values */ | ||||
| #define EXI_ERROR_STRINGVALUES_NOT_SUPPORTED -160 | ||||
| #define EXI_ERROR_STRINGVALUES_OUT_OF_ENTRIES -161 | ||||
| #define EXI_ERROR_STRINGVALUES_OUT_OF_MEMORY -162 | ||||
| #define EXI_ERROR_STRINGVALUES_OUT_OF_BOUND -163 | ||||
| #define EXI_ERROR_STRINGVALUES_CHARACTER -164 | ||||
|  | ||||
| #define EXI_ERROR_UNEXPECTED_BYTE_VALUE -200 | ||||
|  | ||||
|  | ||||
| #define EXI_ERROR_CONVERSION_NO_ASCII_CHARACTERS -300 | ||||
| #define EXI_ERROR_CONVERSION_TYPE_TO_STRING -301 | ||||
|  | ||||
|  | ||||
| #define EXI_DEVIANT_SUPPORT_NOT_DEPLOYED -500 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #endif /* EXI_ERROR_CODES_H */ | ||||
|  | ||||
							
								
								
									
										117
									
								
								src/codec/MethodsBag.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								src/codec/MethodsBag.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,117 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| #ifndef METHODS_BAG_C | ||||
| #define METHODS_BAG_C | ||||
|  | ||||
| #include "MethodsBag.h" | ||||
| #include "ErrorCodes.h" | ||||
|  | ||||
| static const uint16_t smallLengths[] = { 0, 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, | ||||
| 		4, 4, 4 }; | ||||
|  | ||||
| int exiGetCodingLength(size_t characteristics, size_t* codingLength) { | ||||
| 	/* Note: we could use range expressions in switch statements but those are non-standard */ | ||||
| 	/* e.g., case 1 ... 5: */ | ||||
| 	int errn = 0; | ||||
| 	if (characteristics < 17) { | ||||
| 		*codingLength = smallLengths[characteristics]; | ||||
| 	} else if (characteristics < 33) { | ||||
| 		/* 17 .. 32 */ | ||||
| 		*codingLength = 5; | ||||
| 	} else if (characteristics < 65) { | ||||
| 		/* 33 .. 64 */ | ||||
| 		*codingLength = 6; | ||||
| 	} else if (characteristics < 129) { | ||||
| 		/* 65 .. 128 */ | ||||
| 		*codingLength = 7; | ||||
| 	} else if (characteristics < 257) { | ||||
| 		/* 129 .. 256 */ | ||||
| 		*codingLength = 8; | ||||
| 	} else if (characteristics < 513) { | ||||
| 		/* 257 .. 512 */ | ||||
| 		*codingLength = 9; | ||||
| 	} else if (characteristics < 1025) { | ||||
| 		/* 513 .. 1024 */ | ||||
| 		*codingLength = 10; | ||||
| 	} else if (characteristics < 2049) { | ||||
| 		/* 1025 .. 2048 */ | ||||
| 		*codingLength = 11; | ||||
| 	} else if (characteristics < 4097) { | ||||
| 		/* 2049 .. 4096 */ | ||||
| 		*codingLength = 12; | ||||
| 	} else if (characteristics < 8193) { | ||||
| 		/* 4097 .. 8192 */ | ||||
| 		*codingLength = 13; | ||||
| 	} else if (characteristics < 16385) { | ||||
| 		/* 8193 .. 16384 */ | ||||
| 		*codingLength = 14; | ||||
| 	} else if (characteristics < 32769) { | ||||
| 		/* 16385 .. 32768 */ | ||||
| 		*codingLength = 15; | ||||
| 	} else { | ||||
| 		/* 32769 .. 65536 */ | ||||
| 		*codingLength = 16; | ||||
| 	} | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
| uint8_t numberOf7BitBlocksToRepresent(uint32_t n) { | ||||
| 	/* assert (n >= 0); */ | ||||
|  | ||||
| 	/* 7 bits */ | ||||
| 	if (n < 128) { | ||||
| 		return 1; | ||||
| 	} | ||||
| 	/* 14 bits */ | ||||
| 	else if (n < 16384) { | ||||
| 		return 2; | ||||
| 	} | ||||
| 	/* 21 bits */ | ||||
| 	else if (n < 2097152) { | ||||
| 		return 3; | ||||
| 	} | ||||
| 	/* 28 bits */ | ||||
| 	else if (n < 268435456) { | ||||
| 		return 4; | ||||
| 	} | ||||
| 	/* 35 bits */ | ||||
| 	else { | ||||
| 		/* int, 32 bits */ | ||||
| 		return 5; | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										70
									
								
								src/codec/MethodsBag.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								src/codec/MethodsBag.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 2017-03-02  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
| * \file 	MethodsBag.h | ||||
| * \brief 	Method bag for bit and octet functions | ||||
| * | ||||
| */ | ||||
|  | ||||
| #ifndef METHODS_BAG_H | ||||
| #define METHODS_BAG_H | ||||
|  | ||||
|  | ||||
|  | ||||
| #include <stdint.h> | ||||
| #include <stddef.h> | ||||
|  | ||||
| /** | ||||
|  * \brief  	Returns the number of bits to identify the characteristics. | ||||
|  * | ||||
|  * \param       characteristics	number of characteristics | ||||
|  * \param       codingLength   	number of bits | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| int exiGetCodingLength(size_t characteristics, size_t* codingLength); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \brief  	Returns the least number of 7 bit-blocks that is needed to represent the passed integer value | ||||
|  * | ||||
|  *			Note: Returns 1 if passed parameter is 0. | ||||
|  * | ||||
|  * \param       n				integer value | ||||
|  * \return                  	Error-Code <> 0 | ||||
|  * | ||||
|  */ | ||||
| uint8_t numberOf7BitBlocksToRepresent(uint32_t n); | ||||
|  | ||||
|  | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										969
									
								
								src/din/dinEXIDatatypes.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										969
									
								
								src/din/dinEXIDatatypes.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,969 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@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; | ||||
| } | ||||
|  | ||||
|  | ||||
| #if DEPLOY_DIN_CODEC_FRAGMENT == SUPPORT_YES | ||||
| void init_dinEXIFragment(struct dinEXIFragment* exiFrag) { | ||||
| 	exiFrag->Unit_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumCurrentLimit_isUsed = 0u; | ||||
| 	exiFrag->EVPowerDeliveryParameter_isUsed = 0u; | ||||
| 	exiFrag->ChargingProfileEntryMaxPower_isUsed = 0u; | ||||
| 	exiFrag->TMeter_isUsed = 0u; | ||||
| 	exiFrag->EVSEPowerLimitAchieved_isUsed = 0u; | ||||
| 	exiFrag->duration_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumCurrentLimit_isUsed = 0u; | ||||
| 	exiFrag->Parameter_isUsed = 0u; | ||||
| 	exiFrag->EVSEProcessing_isUsed = 0u; | ||||
| 	exiFrag->AC_EVChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->EVSEProcessing_isUsed = 0u; | ||||
| 	exiFrag->PMaxScheduleEntry_isUsed = 0u; | ||||
| 	exiFrag->EVSEProcessing_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumVoltageLimit_isUsed = 0u; | ||||
| 	exiFrag->SelectedService_isUsed = 0u; | ||||
| 	exiFrag->Certificate_isUsed = 0u; | ||||
| 	exiFrag->Certificate_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumPowerLimit_isUsed = 0u; | ||||
| 	exiFrag->EVReady_isUsed = 0u; | ||||
| 	exiFrag->X509SerialNumber_isUsed = 0u; | ||||
| 	exiFrag->RetrievalMethod_isUsed = 0u; | ||||
| 	exiFrag->RetryCounter_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->MeteringReceiptReq_isUsed = 0u; | ||||
| 	exiFrag->ReadyToChargeState_isUsed = 0u; | ||||
| 	exiFrag->Multiplier_isUsed = 0u; | ||||
| 	exiFrag->EPriceLevel_isUsed = 0u; | ||||
| 	exiFrag->stringValue_isUsed = 0u; | ||||
| 	exiFrag->ServiceDiscoveryReq_isUsed = 0u; | ||||
| 	exiFrag->Transforms_isUsed = 0u; | ||||
| 	exiFrag->MeteringReceiptRes_isUsed = 0u; | ||||
| 	exiFrag->PreChargeReq_isUsed = 0u; | ||||
| 	exiFrag->OEMProvisioningCert_isUsed = 0u; | ||||
| 	exiFrag->ServiceDiscoveryRes_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ContractAuthenticationReq_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureCertChain_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureCertChain_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureCertChain_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureCertChain_isUsed = 0u; | ||||
| 	exiFrag->ContractAuthenticationRes_isUsed = 0u; | ||||
| 	exiFrag->HMACOutputLength_isUsed = 0u; | ||||
| 	exiFrag->BulkChargingComplete_isUsed = 0u; | ||||
| 	exiFrag->Exponent_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleTuple_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->DepartureTime_isUsed = 0u; | ||||
| 	exiFrag->X509IssuerSerial_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleTupleID_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleTupleID_isUsed = 0u; | ||||
| 	exiFrag->SPKIData_isUsed = 0u; | ||||
| 	exiFrag->RelativeTimeInterval_isUsed = 0u; | ||||
| 	exiFrag->EVEnergyRequest_isUsed = 0u; | ||||
| 	exiFrag->PreChargeRes_isUsed = 0u; | ||||
| 	exiFrag->SessionID_isUsed = 0u; | ||||
| 	exiFrag->PMaxSchedule_isUsed = 0u; | ||||
| 	exiFrag->ServiceCharge_isUsed = 0u; | ||||
| 	exiFrag->PgenCounter_isUsed = 0u; | ||||
| 	exiFrag->ChargingStatusReq_isUsed = 0u; | ||||
| 	exiFrag->X509Data_isUsed = 0u; | ||||
| 	exiFrag->SalesTariffEntry_isUsed = 0u; | ||||
| 	exiFrag->KeyValue_isUsed = 0u; | ||||
| 	exiFrag->ChargingStatusRes_isUsed = 0u; | ||||
| 	exiFrag->V2G_Message_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->ServicePaymentSelectionReq_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->EVSEIsolationStatus_isUsed = 0u; | ||||
| 	exiFrag->ServicePaymentSelectionRes_isUsed = 0u; | ||||
| 	exiFrag->EVSEPresentVoltage_isUsed = 0u; | ||||
| 	exiFrag->EVSEPresentVoltage_isUsed = 0u; | ||||
| 	exiFrag->EVSEPresentVoltage_isUsed = 0u; | ||||
| 	exiFrag->BodyElement_isUsed = 0u; | ||||
| 	exiFrag->EVCCID_isUsed = 0u; | ||||
| 	exiFrag->PGPData_isUsed = 0u; | ||||
| 	exiFrag->RootCertificateID_isUsed = 0u; | ||||
| 	exiFrag->FaultCode_isUsed = 0u; | ||||
| 	exiFrag->CableCheckReq_isUsed = 0u; | ||||
| 	exiFrag->EVSEVoltageLimitAchieved_isUsed = 0u; | ||||
| 	exiFrag->EVRESSConditioning_isUsed = 0u; | ||||
| 	exiFrag->MeterInfo_isUsed = 0u; | ||||
| 	exiFrag->MeterInfo_isUsed = 0u; | ||||
| 	exiFrag->CableCheckRes_isUsed = 0u; | ||||
| 	exiFrag->ChargingProfileEntryStart_isUsed = 0u; | ||||
| 	exiFrag->SignatureProperty_isUsed = 0u; | ||||
| 	exiFrag->EVMaxCurrent_isUsed = 0u; | ||||
| 	exiFrag->PGPKeyPacket_isUsed = 0u; | ||||
| 	exiFrag->PGPKeyPacket_isUsed = 0u; | ||||
| 	exiFrag->Seed_isUsed = 0u; | ||||
| 	exiFrag->RSAKeyValue_isUsed = 0u; | ||||
| 	exiFrag->costKind_isUsed = 0u; | ||||
| 	exiFrag->EAmount_isUsed = 0u; | ||||
| 	exiFrag->EVSEPresentCurrent_isUsed = 0u; | ||||
| 	exiFrag->PowerDeliveryRes_isUsed = 0u; | ||||
| 	exiFrag->NumEPriceLevels_isUsed = 0u; | ||||
| 	exiFrag->SessionStopRes_isUsed = 0u; | ||||
| 	exiFrag->PowerDeliveryReq_isUsed = 0u; | ||||
| 	exiFrag->SessionStopReq_isUsed = 0u; | ||||
| 	exiFrag->XPath_isUsed = 0u; | ||||
| 	exiFrag->BulkSOC_isUsed = 0u; | ||||
| 	exiFrag->PMax_isUsed = 0u; | ||||
| 	exiFrag->ParameterSetID_isUsed = 0u; | ||||
| 	exiFrag->ParameterSetID_isUsed = 0u; | ||||
| 	exiFrag->ContractID_isUsed = 0u; | ||||
| 	exiFrag->ContractID_isUsed = 0u; | ||||
| 	exiFrag->ContractID_isUsed = 0u; | ||||
| 	exiFrag->ContractID_isUsed = 0u; | ||||
| 	exiFrag->Signature_isUsed = 0u; | ||||
| 	exiFrag->EVMaxVoltage_isUsed = 0u; | ||||
| 	exiFrag->ReceiptRequired_isUsed = 0u; | ||||
| 	exiFrag->ChargingComplete_isUsed = 0u; | ||||
| 	exiFrag->ChargingProfile_isUsed = 0u; | ||||
| 	exiFrag->PaymentOptions_isUsed = 0u; | ||||
| 	exiFrag->SessionSetupRes_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumVoltageLimit_isUsed = 0u; | ||||
| 	exiFrag->ServiceDetailRes_isUsed = 0u; | ||||
| 	exiFrag->DC_EVPowerDeliveryParameter_isUsed = 0u; | ||||
| 	exiFrag->PaymentDetailsRes_isUsed = 0u; | ||||
| 	exiFrag->PaymentDetailsReq_isUsed = 0u; | ||||
| 	exiFrag->MgmtData_isUsed = 0u; | ||||
| 	exiFrag->Value_isUsed = 0u; | ||||
| 	exiFrag->EVSENotification_isUsed = 0u; | ||||
| 	exiFrag->EVSENotification_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumPowerLimit_isUsed = 0u; | ||||
| 	exiFrag->EVTargetCurrent_isUsed = 0u; | ||||
| 	exiFrag->RemainingTimeToBulkSoC_isUsed = 0u; | ||||
| 	exiFrag->EVTargetCurrent_isUsed = 0u; | ||||
| 	exiFrag->SessionSetupReq_isUsed = 0u; | ||||
| 	exiFrag->EVSECurrentLimitAchieved_isUsed = 0u; | ||||
| 	exiFrag->ServiceDetailReq_isUsed = 0u; | ||||
| 	exiFrag->byteValue_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumPowerLimit_isUsed = 0u; | ||||
| 	exiFrag->PowerSwitchClosed_isUsed = 0u; | ||||
| 	exiFrag->Manifest_isUsed = 0u; | ||||
| 	exiFrag->P_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleList_isUsed = 0u; | ||||
| 	exiFrag->Q_isUsed = 0u; | ||||
| 	exiFrag->X509SubjectName_isUsed = 0u; | ||||
| 	exiFrag->G_isUsed = 0u; | ||||
| 	exiFrag->SessionID_isUsed = 0u; | ||||
| 	exiFrag->J_isUsed = 0u; | ||||
| 	exiFrag->CertificateInstallationRes_isUsed = 0u; | ||||
| 	exiFrag->CertificateInstallationReq_isUsed = 0u; | ||||
| 	exiFrag->SalesTariff_isUsed = 0u; | ||||
| 	exiFrag->Header_isUsed = 0u; | ||||
| 	exiFrag->EVSEMinimumCurrentLimit_isUsed = 0u; | ||||
| 	exiFrag->X509CRL_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumCurrentLimit_isUsed = 0u; | ||||
| 	exiFrag->Y_isUsed = 0u; | ||||
| 	exiFrag->DigestValue_isUsed = 0u; | ||||
| 	exiFrag->DC_EVChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureEncryptedPrivateKey_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureEncryptedPrivateKey_isUsed = 0u; | ||||
| 	exiFrag->DigestMethod_isUsed = 0u; | ||||
| 	exiFrag->SPKISexp_isUsed = 0u; | ||||
| 	exiFrag->ChargeService_isUsed = 0u; | ||||
| 	exiFrag->EVSEEnergyToBeDelivered_isUsed = 0u; | ||||
| 	exiFrag->SignatureProperties_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaxCurrent_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumPowerLimit_isUsed = 0u; | ||||
| 	exiFrag->EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->Service_isUsed = 0u; | ||||
| 	exiFrag->DHParams_isUsed = 0u; | ||||
| 	exiFrag->DHParams_isUsed = 0u; | ||||
| 	exiFrag->DHParams_isUsed = 0u; | ||||
| 	exiFrag->DHParams_isUsed = 0u; | ||||
| 	exiFrag->PGPKeyID_isUsed = 0u; | ||||
| 	exiFrag->DSAKeyValue_isUsed = 0u; | ||||
| 	exiFrag->EnergyTransferType_isUsed = 0u; | ||||
| 	exiFrag->WeldingDetectionRes_isUsed = 0u; | ||||
| 	exiFrag->FreeService_isUsed = 0u; | ||||
| 	exiFrag->SelectedServiceList_isUsed = 0u; | ||||
| 	exiFrag->WeldingDetectionReq_isUsed = 0u; | ||||
| 	exiFrag->EVTargetVoltage_isUsed = 0u; | ||||
| 	exiFrag->EVTargetVoltage_isUsed = 0u; | ||||
| 	exiFrag->CanonicalizationMethod_isUsed = 0u; | ||||
| 	exiFrag->X509Certificate_isUsed = 0u; | ||||
| 	exiFrag->CertificateUpdateRes_isUsed = 0u; | ||||
| 	exiFrag->CertificateUpdateReq_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaxVoltage_isUsed = 0u; | ||||
| 	exiFrag->SignedInfo_isUsed = 0u; | ||||
| 	exiFrag->AC_EVSEChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->EVEnergyCapacity_isUsed = 0u; | ||||
| 	exiFrag->ServiceID_isUsed = 0u; | ||||
| 	exiFrag->ServiceID_isUsed = 0u; | ||||
| 	exiFrag->EVSECurrentRegulationTolerance_isUsed = 0u; | ||||
| 	exiFrag->ServiceParameterList_isUsed = 0u; | ||||
| 	exiFrag->ListOfRootCertificateIDs_isUsed = 0u; | ||||
| 	exiFrag->ListOfRootCertificateIDs_isUsed = 0u; | ||||
| 	exiFrag->ProfileEntry_isUsed = 0u; | ||||
| 	exiFrag->EVSEMinimumVoltageLimit_isUsed = 0u; | ||||
| 	exiFrag->CurrentDemandRes_isUsed = 0u; | ||||
| 	exiFrag->EVRESSSOC_isUsed = 0u; | ||||
| 	exiFrag->MeterReading_isUsed = 0u; | ||||
| 	exiFrag->CurrentDemandReq_isUsed = 0u; | ||||
| 	exiFrag->physicalValue_isUsed = 0u; | ||||
| 	exiFrag->ChargingComplete_isUsed = 0u; | ||||
| 	exiFrag->TimeInterval_isUsed = 0u; | ||||
| 	exiFrag->AC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->AC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumVoltageLimit_isUsed = 0u; | ||||
| 	exiFrag->SignatureValue_isUsed = 0u; | ||||
| 	exiFrag->DateTimeNow_isUsed = 0u; | ||||
| 	exiFrag->DateTimeNow_isUsed = 0u; | ||||
| 	exiFrag->ServiceTag_isUsed = 0u; | ||||
| 	exiFrag->intValue_isUsed = 0u; | ||||
| 	exiFrag->SelectedPaymentOption_isUsed = 0u; | ||||
| 	exiFrag->ServiceName_isUsed = 0u; | ||||
| 	exiFrag->EVCabinConditioning_isUsed = 0u; | ||||
| 	exiFrag->EVSEID_isUsed = 0u; | ||||
| 	exiFrag->ServiceScope_isUsed = 0u; | ||||
| 	exiFrag->EVSEID_isUsed = 0u; | ||||
| 	exiFrag->MeterStatus_isUsed = 0u; | ||||
| 	exiFrag->EVRequestedEnergyTransferType_isUsed = 0u; | ||||
| 	exiFrag->ServiceCategory_isUsed = 0u; | ||||
| 	exiFrag->GenChallenge_isUsed = 0u; | ||||
| 	exiFrag->GenChallenge_isUsed = 0u; | ||||
| 	exiFrag->SalesTariffDescription_isUsed = 0u; | ||||
| 	exiFrag->NotificationMaxDelay_isUsed = 0u; | ||||
| 	exiFrag->NotificationMaxDelay_isUsed = 0u; | ||||
| 	exiFrag->boolValue_isUsed = 0u; | ||||
| 	exiFrag->EVSEStatusCode_isUsed = 0u; | ||||
| 	exiFrag->ServiceScope_isUsed = 0u; | ||||
| 	exiFrag->FaultMsg_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleTupleID_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleTupleID_isUsed = 0u; | ||||
| 	exiFrag->BulkChargingComplete_isUsed = 0u; | ||||
| 	exiFrag->KeyName_isUsed = 0u; | ||||
| 	exiFrag->ParameterSet_isUsed = 0u; | ||||
| 	exiFrag->SigMeterReading_isUsed = 0u; | ||||
| 	exiFrag->EVSEChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->Body_isUsed = 0u; | ||||
| 	exiFrag->SASchedules_isUsed = 0u; | ||||
| 	exiFrag->ServiceCategory_isUsed = 0u; | ||||
| 	exiFrag->KeyInfo_isUsed = 0u; | ||||
| 	exiFrag->PMaxScheduleID_isUsed = 0u; | ||||
| 	exiFrag->RemainingTimeToFullSoC_isUsed = 0u; | ||||
| 	exiFrag->EVStatus_isUsed = 0u; | ||||
| 	exiFrag->SubCertificates_isUsed = 0u; | ||||
| 	exiFrag->PaymentOption_isUsed = 0u; | ||||
| 	exiFrag->X509SKI_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumVoltageLimit_isUsed = 0u; | ||||
| 	exiFrag->ServiceList_isUsed = 0u; | ||||
| 	exiFrag->Cost_isUsed = 0u; | ||||
| 	exiFrag->AC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->AC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->SignatureMethod_isUsed = 0u; | ||||
| 	exiFrag->EVSEMinCurrent_isUsed = 0u; | ||||
| 	exiFrag->ConsumptionCost_isUsed = 0u; | ||||
| 	exiFrag->EVSEPeakCurrentRipple_isUsed = 0u; | ||||
| 	exiFrag->EVErrorCode_isUsed = 0u; | ||||
| 	exiFrag->EVChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->start_isUsed = 0u; | ||||
| 	exiFrag->X509IssuerName_isUsed = 0u; | ||||
| 	exiFrag->Reference_isUsed = 0u; | ||||
| 	exiFrag->EVMinCurrent_isUsed = 0u; | ||||
| 	exiFrag->FullSOC_isUsed = 0u; | ||||
| 	exiFrag->amount_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->shortValue_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->Entry_isUsed = 0u; | ||||
| 	exiFrag->ServiceID_isUsed = 0u; | ||||
| 	exiFrag->ServiceID_isUsed = 0u; | ||||
| 	exiFrag->SalesTariffID_isUsed = 0u; | ||||
| 	exiFrag->MeterID_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumCurrentLimit_isUsed = 0u; | ||||
| 	exiFrag->ChargeParameterDiscoveryReq_isUsed = 0u; | ||||
| 	exiFrag->amountMultiplier_isUsed = 0u; | ||||
| 	exiFrag->ChargeParameterDiscoveryRes_isUsed = 0u; | ||||
| 	exiFrag->Transform_isUsed = 0u; | ||||
| 	exiFrag->Object_isUsed = 0u; | ||||
| 	exiFrag->RCD_isUsed = 0u; | ||||
| 	exiFrag->Notification_isUsed = 0u; | ||||
| 	exiFrag->startValue_isUsed = 0u; | ||||
| 	exiFrag->Modulus_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaxCurrent_isUsed = 0u; | ||||
| } | ||||
| #endif /* DEPLOY_DIN_CODEC_FRAGMENT */ | ||||
|  | ||||
| void init_dinMeteringReceiptReqType(struct dinMeteringReceiptReqType* dinMeteringReceiptReqType) { | ||||
| 	dinMeteringReceiptReqType->Id_isUsed = 0u; | ||||
| 	dinMeteringReceiptReqType->SAScheduleTupleID_isUsed = 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_dinSessionSetupReqType(struct dinSessionSetupReqType* dinSessionSetupReqType) { | ||||
| 	(void)dinSessionSetupReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinPowerDeliveryResType(struct dinPowerDeliveryResType* dinPowerDeliveryResType) { | ||||
| 	dinPowerDeliveryResType->EVSEStatus_isUsed = 0u; | ||||
| 	dinPowerDeliveryResType->AC_EVSEStatus_isUsed = 0u; | ||||
| 	dinPowerDeliveryResType->DC_EVSEStatus_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinServiceDetailResType(struct dinServiceDetailResType* dinServiceDetailResType) { | ||||
| 	dinServiceDetailResType->ServiceParameterList_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinWeldingDetectionResType(struct dinWeldingDetectionResType* dinWeldingDetectionResType) { | ||||
| 	(void)dinWeldingDetectionResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinContractAuthenticationResType(struct dinContractAuthenticationResType* dinContractAuthenticationResType) { | ||||
| 	(void)dinContractAuthenticationResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinCanonicalizationMethodType(struct dinCanonicalizationMethodType* dinCanonicalizationMethodType) { | ||||
| 	dinCanonicalizationMethodType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinSPKIDataType(struct dinSPKIDataType* dinSPKIDataType) { | ||||
| 	dinSPKIDataType->SPKISexp.arrayLen = 0u; | ||||
| 	dinSPKIDataType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinListOfRootCertificateIDsType(struct dinListOfRootCertificateIDsType* dinListOfRootCertificateIDsType) { | ||||
| 	dinListOfRootCertificateIDsType->RootCertificateID.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinSelectedServiceListType(struct dinSelectedServiceListType* dinSelectedServiceListType) { | ||||
| 	dinSelectedServiceListType->SelectedService.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinCurrentDemandResType(struct dinCurrentDemandResType* dinCurrentDemandResType) { | ||||
| 	dinCurrentDemandResType->EVSEMaximumVoltageLimit_isUsed = 0u; | ||||
| 	dinCurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 0u; | ||||
| 	dinCurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinTransformType(struct dinTransformType* dinTransformType) { | ||||
| 	dinTransformType->ANY_isUsed = 0u; | ||||
| 	dinTransformType->XPath.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinAC_EVChargeParameterType(struct dinAC_EVChargeParameterType* dinAC_EVChargeParameterType) { | ||||
| 	(void)dinAC_EVChargeParameterType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| 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; | ||||
| 	dinX509DataType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinChargingStatusResType(struct dinChargingStatusResType* dinChargingStatusResType) { | ||||
| 	dinChargingStatusResType->EVSEMaxCurrent_isUsed = 0u; | ||||
| 	dinChargingStatusResType->MeterInfo_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinWeldingDetectionReqType(struct dinWeldingDetectionReqType* dinWeldingDetectionReqType) { | ||||
| 	(void)dinWeldingDetectionReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinSignaturePropertiesType(struct dinSignaturePropertiesType* dinSignaturePropertiesType) { | ||||
| 	dinSignaturePropertiesType->Id_isUsed = 0u; | ||||
| 	dinSignaturePropertiesType->SignatureProperty.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinContractAuthenticationReqType(struct dinContractAuthenticationReqType* dinContractAuthenticationReqType) { | ||||
| 	dinContractAuthenticationReqType->Id_isUsed = 0u; | ||||
| 	dinContractAuthenticationReqType->GenChallenge_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinDC_EVPowerDeliveryParameterType(struct dinDC_EVPowerDeliveryParameterType* dinDC_EVPowerDeliveryParameterType) { | ||||
| 	dinDC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinEVSEChargeParameterType(struct dinEVSEChargeParameterType* dinEVSEChargeParameterType) { | ||||
| 	(void)dinEVSEChargeParameterType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinCableCheckReqType(struct dinCableCheckReqType* dinCableCheckReqType) { | ||||
| 	(void)dinCableCheckReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| 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_dinSAScheduleListType(struct dinSAScheduleListType* dinSAScheduleListType) { | ||||
| 	dinSAScheduleListType->SAScheduleTuple.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinPMaxScheduleType(struct dinPMaxScheduleType* dinPMaxScheduleType) { | ||||
| 	dinPMaxScheduleType->PMaxScheduleEntry.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinServicePaymentSelectionReqType(struct dinServicePaymentSelectionReqType* dinServicePaymentSelectionReqType) { | ||||
| 	(void)dinServicePaymentSelectionReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinRelativeTimeIntervalType(struct dinRelativeTimeIntervalType* dinRelativeTimeIntervalType) { | ||||
| 	dinRelativeTimeIntervalType->duration_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinEVStatusType(struct dinEVStatusType* dinEVStatusType) { | ||||
| 	(void)dinEVStatusType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinPreChargeResType(struct dinPreChargeResType* dinPreChargeResType) { | ||||
| 	(void)dinPreChargeResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| 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_dinPaymentDetailsResType(struct dinPaymentDetailsResType* dinPaymentDetailsResType) { | ||||
| 	(void)dinPaymentDetailsResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| 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_dinSASchedulesType(struct dinSASchedulesType* dinSASchedulesType) { | ||||
| 	(void)dinSASchedulesType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinCertificateUpdateResType(struct dinCertificateUpdateResType* dinCertificateUpdateResType) { | ||||
| 	(void)dinCertificateUpdateResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinEVChargeParameterType(struct dinEVChargeParameterType* dinEVChargeParameterType) { | ||||
| 	(void)dinEVChargeParameterType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinMessageHeaderType(struct dinMessageHeaderType* dinMessageHeaderType) { | ||||
| 	dinMessageHeaderType->Notification_isUsed = 0u; | ||||
| 	dinMessageHeaderType->Signature_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinBodyBaseType(struct dinBodyBaseType* dinBodyBaseType) { | ||||
| 	(void)dinBodyBaseType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinKeyValueType(struct dinKeyValueType* dinKeyValueType) { | ||||
| 	dinKeyValueType->DSAKeyValue_isUsed = 0u; | ||||
| 	dinKeyValueType->RSAKeyValue_isUsed = 0u; | ||||
| 	dinKeyValueType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinIntervalType(struct dinIntervalType* dinIntervalType) { | ||||
| 	(void)dinIntervalType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| 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_dinPowerDeliveryReqType(struct dinPowerDeliveryReqType* dinPowerDeliveryReqType) { | ||||
| 	dinPowerDeliveryReqType->ChargingProfile_isUsed = 0u; | ||||
| 	dinPowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 0u; | ||||
| 	dinPowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinCertificateChainType(struct dinCertificateChainType* dinCertificateChainType) { | ||||
| 	dinCertificateChainType->SubCertificates_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinTransformsType(struct dinTransformsType* dinTransformsType) { | ||||
| 	dinTransformsType->Transform.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinEntryType(struct dinEntryType* dinEntryType) { | ||||
| 	dinEntryType->TimeInterval_isUsed = 0u; | ||||
| 	dinEntryType->RelativeTimeInterval_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinSessionStopType(struct dinSessionStopType* dinSessionStopType) { | ||||
| 	(void)dinSessionStopType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinServiceDetailReqType(struct dinServiceDetailReqType* dinServiceDetailReqType) { | ||||
| 	(void)dinServiceDetailReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinDigestMethodType(struct dinDigestMethodType* dinDigestMethodType) { | ||||
| 	dinDigestMethodType->ANY_isUsed = 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_dinChargingStatusReqType(struct dinChargingStatusReqType* dinChargingStatusReqType) { | ||||
| 	(void)dinChargingStatusReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinSignatureMethodType(struct dinSignatureMethodType* dinSignatureMethodType) { | ||||
| 	dinSignatureMethodType->HMACOutputLength_isUsed = 0u; | ||||
| 	dinSignatureMethodType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinCertificateInstallationReqType(struct dinCertificateInstallationReqType* dinCertificateInstallationReqType) { | ||||
| 	dinCertificateInstallationReqType->Id_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinSalesTariffEntryType(struct dinSalesTariffEntryType* dinSalesTariffEntryType) { | ||||
| 	dinSalesTariffEntryType->TimeInterval_isUsed = 0u; | ||||
| 	dinSalesTariffEntryType->RelativeTimeInterval_isUsed = 0u; | ||||
| 	dinSalesTariffEntryType->ConsumptionCost.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinServiceDiscoveryResType(struct dinServiceDiscoveryResType* dinServiceDiscoveryResType) { | ||||
| 	dinServiceDiscoveryResType->ServiceList_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinParameterSetType(struct dinParameterSetType* dinParameterSetType) { | ||||
| 	dinParameterSetType->Parameter.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| 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_dinPreChargeReqType(struct dinPreChargeReqType* dinPreChargeReqType) { | ||||
| 	(void)dinPreChargeReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinSignatureType(struct dinSignatureType* dinSignatureType) { | ||||
| 	dinSignatureType->Id_isUsed = 0u; | ||||
| 	dinSignatureType->KeyInfo_isUsed = 0u; | ||||
| 	dinSignatureType->Object.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinReferenceType(struct dinReferenceType* dinReferenceType) { | ||||
| 	dinReferenceType->Id_isUsed = 0u; | ||||
| 	dinReferenceType->URI_isUsed = 0u; | ||||
| 	dinReferenceType->Type_isUsed = 0u; | ||||
| 	dinReferenceType->Transforms_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinProfileEntryType(struct dinProfileEntryType* dinProfileEntryType) { | ||||
| 	(void)dinProfileEntryType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinAnonType_V2G_Message(struct dinAnonType_V2G_Message* dinAnonType_V2G_Message) { | ||||
| 	(void)dinAnonType_V2G_Message; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinChargeParameterDiscoveryReqType(struct dinChargeParameterDiscoveryReqType* dinChargeParameterDiscoveryReqType) { | ||||
| 	dinChargeParameterDiscoveryReqType->EVChargeParameter_isUsed = 0u; | ||||
| 	dinChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 0u; | ||||
| 	dinChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinConsumptionCostType(struct dinConsumptionCostType* dinConsumptionCostType) { | ||||
| 	dinConsumptionCostType->Cost.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinRSAKeyValueType(struct dinRSAKeyValueType* dinRSAKeyValueType) { | ||||
| 	(void)dinRSAKeyValueType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinServiceType(struct dinServiceType* dinServiceType) { | ||||
| 	(void)dinServiceType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinServiceTagListType(struct dinServiceTagListType* dinServiceTagListType) { | ||||
| 	dinServiceTagListType->Service.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinEVSEStatusType(struct dinEVSEStatusType* dinEVSEStatusType) { | ||||
| 	(void)dinEVSEStatusType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinSessionSetupResType(struct dinSessionSetupResType* dinSessionSetupResType) { | ||||
| 	dinSessionSetupResType->DateTimeNow_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinEVPowerDeliveryParameterType(struct dinEVPowerDeliveryParameterType* dinEVPowerDeliveryParameterType) { | ||||
| 	(void)dinEVPowerDeliveryParameterType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinX509IssuerSerialType(struct dinX509IssuerSerialType* dinX509IssuerSerialType) { | ||||
| 	(void)dinX509IssuerSerialType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinSelectedServiceType(struct dinSelectedServiceType* dinSelectedServiceType) { | ||||
| 	dinSelectedServiceType->ParameterSetID_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinMeteringReceiptResType(struct dinMeteringReceiptResType* dinMeteringReceiptResType) { | ||||
| 	(void)dinMeteringReceiptResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinDC_EVStatusType(struct dinDC_EVStatusType* dinDC_EVStatusType) { | ||||
| 	dinDC_EVStatusType->EVCabinConditioning_isUsed = 0u; | ||||
| 	dinDC_EVStatusType->EVRESSConditioning_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinPhysicalValueType(struct dinPhysicalValueType* dinPhysicalValueType) { | ||||
| 	dinPhysicalValueType->Unit_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinManifestType(struct dinManifestType* dinManifestType) { | ||||
| 	dinManifestType->Id_isUsed = 0u; | ||||
| 	dinManifestType->Reference.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinPMaxScheduleEntryType(struct dinPMaxScheduleEntryType* dinPMaxScheduleEntryType) { | ||||
| 	dinPMaxScheduleEntryType->TimeInterval_isUsed = 0u; | ||||
| 	dinPMaxScheduleEntryType->RelativeTimeInterval_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinServiceParameterListType(struct dinServiceParameterListType* dinServiceParameterListType) { | ||||
| 	dinServiceParameterListType->ParameterSet.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinSignatureValueType(struct dinSignatureValueType* dinSignatureValueType) { | ||||
| 	dinSignatureValueType->Id_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinPaymentOptionsType(struct dinPaymentOptionsType* dinPaymentOptionsType) { | ||||
| 	dinPaymentOptionsType->PaymentOption.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinServiceTagType(struct dinServiceTagType* dinServiceTagType) { | ||||
| 	dinServiceTagType->ServiceName_isUsed = 0u; | ||||
| 	dinServiceTagType->ServiceScope_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinAC_EVSEStatusType(struct dinAC_EVSEStatusType* dinAC_EVSEStatusType) { | ||||
| 	(void)dinAC_EVSEStatusType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinCertificateUpdateReqType(struct dinCertificateUpdateReqType* dinCertificateUpdateReqType) { | ||||
| 	dinCertificateUpdateReqType->Id_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinServicePaymentSelectionResType(struct dinServicePaymentSelectionResType* dinServicePaymentSelectionResType) { | ||||
| 	(void)dinServicePaymentSelectionResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinSAScheduleTupleType(struct dinSAScheduleTupleType* dinSAScheduleTupleType) { | ||||
| 	dinSAScheduleTupleType->SalesTariff_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinChargingProfileType(struct dinChargingProfileType* dinChargingProfileType) { | ||||
| 	dinChargingProfileType->ProfileEntry.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinServiceDiscoveryReqType(struct dinServiceDiscoveryReqType* dinServiceDiscoveryReqType) { | ||||
| 	dinServiceDiscoveryReqType->ServiceScope_isUsed = 0u; | ||||
| 	dinServiceDiscoveryReqType->ServiceCategory_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinAC_EVSEChargeParameterType(struct dinAC_EVSEChargeParameterType* dinAC_EVSEChargeParameterType) { | ||||
| 	(void)dinAC_EVSEChargeParameterType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| 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; | ||||
| 	dinKeyInfoType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinPaymentDetailsReqType(struct dinPaymentDetailsReqType* dinPaymentDetailsReqType) { | ||||
| 	(void)dinPaymentDetailsReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinCableCheckResType(struct dinCableCheckResType* dinCableCheckResType) { | ||||
| 	(void)dinCableCheckResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinObjectType(struct dinObjectType* dinObjectType) { | ||||
| 	dinObjectType->Id_isUsed = 0u; | ||||
| 	dinObjectType->MimeType_isUsed = 0u; | ||||
| 	dinObjectType->Encoding_isUsed = 0u; | ||||
| 	dinObjectType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinSessionStopResType(struct dinSessionStopResType* dinSessionStopResType) { | ||||
| 	(void)dinSessionStopResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinSignedInfoType(struct dinSignedInfoType* dinSignedInfoType) { | ||||
| 	dinSignedInfoType->Id_isUsed = 0u; | ||||
| 	dinSignedInfoType->Reference.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinSalesTariffType(struct dinSalesTariffType* dinSalesTariffType) { | ||||
| 	dinSalesTariffType->SalesTariffDescription_isUsed = 0u; | ||||
| 	dinSalesTariffType->SalesTariffEntry.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinCostType(struct dinCostType* dinCostType) { | ||||
| 	dinCostType->amountMultiplier_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinServiceChargeType(struct dinServiceChargeType* dinServiceChargeType) { | ||||
| 	(void)dinServiceChargeType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinDC_EVSEStatusType(struct dinDC_EVSEStatusType* dinDC_EVSEStatusType) { | ||||
| 	dinDC_EVSEStatusType->EVSEIsolationStatus_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinRetrievalMethodType(struct dinRetrievalMethodType* dinRetrievalMethodType) { | ||||
| 	dinRetrievalMethodType->URI_isUsed = 0u; | ||||
| 	dinRetrievalMethodType->Type_isUsed = 0u; | ||||
| 	dinRetrievalMethodType->Transforms_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinNotificationType(struct dinNotificationType* dinNotificationType) { | ||||
| 	dinNotificationType->FaultMsg_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinPGPDataType(struct dinPGPDataType* dinPGPDataType) { | ||||
| 	dinPGPDataType->PGPKeyID_isUsed = 0u; | ||||
| 	dinPGPDataType->PGPKeyPacket_isUsed = 0u; | ||||
| 	dinPGPDataType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinCertificateInstallationResType(struct dinCertificateInstallationResType* dinCertificateInstallationResType) { | ||||
| 	(void)dinCertificateInstallationResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_dinSignaturePropertyType(struct dinSignaturePropertyType* dinSignaturePropertyType) { | ||||
| 	dinSignaturePropertyType->Id_isUsed = 0u; | ||||
| 	dinSignaturePropertyType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinMeterInfoType(struct dinMeterInfoType* dinMeterInfoType) { | ||||
| 	dinMeterInfoType->MeterReading_isUsed = 0u; | ||||
| 	dinMeterInfoType->SigMeterReading_isUsed = 0u; | ||||
| 	dinMeterInfoType->MeterStatus_isUsed = 0u; | ||||
| 	dinMeterInfoType->TMeter_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_dinSubCertificatesType(struct dinSubCertificatesType* dinSubCertificatesType) { | ||||
| 	dinSubCertificatesType->Certificate.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| #endif /* DEPLOY_DIN_CODEC */ | ||||
|  | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										2934
									
								
								src/din/dinEXIDatatypes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2934
									
								
								src/din/dinEXIDatatypes.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										17065
									
								
								src/din/dinEXIDatatypesDecoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17065
									
								
								src/din/dinEXIDatatypesDecoder.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										65
									
								
								src/din/dinEXIDatatypesDecoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/din/dinEXIDatatypesDecoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@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); | ||||
|  | ||||
| #if DEPLOY_DIN_CODEC_FRAGMENT == SUPPORT_YES | ||||
| int decode_dinExiFragment(bitstream_t* stream, struct dinEXIFragment* exiFrag); | ||||
| #endif /* DEPLOY_DIN_CODEC_FRAGMENT */ | ||||
|  | ||||
| #endif /* DEPLOY_DIN_CODEC */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										12826
									
								
								src/din/dinEXIDatatypesEncoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12826
									
								
								src/din/dinEXIDatatypesEncoder.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										68
									
								
								src/din/dinEXIDatatypesEncoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								src/din/dinEXIDatatypesEncoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@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); | ||||
|  | ||||
| #if DEPLOY_DIN_CODEC_FRAGMENT == SUPPORT_YES | ||||
| int encode_dinExiFragment(bitstream_t* stream, struct dinEXIFragment* exiFrag); | ||||
| #endif /* DEPLOY_DIN_CODEC_FRAGMENT */ | ||||
|  | ||||
|  | ||||
| #endif /* DEPLOY_DIN_CODEC */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										992
									
								
								src/iso1/iso1EXIDatatypes.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										992
									
								
								src/iso1/iso1EXIDatatypes.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,992 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "iso1EXIDatatypes.h" | ||||
| #include "EXITypes.h" | ||||
|  | ||||
|  | ||||
| #ifndef EXI_iso1_DATATYPES_C | ||||
| #define EXI_iso1_DATATYPES_C | ||||
|  | ||||
| #if DEPLOY_ISO1_CODEC == SUPPORT_YES | ||||
|  | ||||
|  | ||||
| void init_iso1EXIDocument(struct iso1EXIDocument* exiDoc) { | ||||
| 	exiDoc->V2G_Message_isUsed = 0u; | ||||
| 	exiDoc->ServiceDiscoveryReq_isUsed = 0u; | ||||
| 	exiDoc->ServiceDiscoveryRes_isUsed = 0u; | ||||
| 	exiDoc->MeteringReceiptReq_isUsed = 0u; | ||||
| 	exiDoc->PaymentDetailsReq_isUsed = 0u; | ||||
| 	exiDoc->MeteringReceiptRes_isUsed = 0u; | ||||
| 	exiDoc->PaymentDetailsRes_isUsed = 0u; | ||||
| 	exiDoc->SessionSetupReq_isUsed = 0u; | ||||
| 	exiDoc->SessionSetupRes_isUsed = 0u; | ||||
| 	exiDoc->CableCheckReq_isUsed = 0u; | ||||
| 	exiDoc->CableCheckRes_isUsed = 0u; | ||||
| 	exiDoc->CertificateInstallationReq_isUsed = 0u; | ||||
| 	exiDoc->CertificateInstallationRes_isUsed = 0u; | ||||
| 	exiDoc->WeldingDetectionReq_isUsed = 0u; | ||||
| 	exiDoc->WeldingDetectionRes_isUsed = 0u; | ||||
| 	exiDoc->CertificateUpdateReq_isUsed = 0u; | ||||
| 	exiDoc->CertificateUpdateRes_isUsed = 0u; | ||||
| 	exiDoc->PaymentServiceSelectionReq_isUsed = 0u; | ||||
| 	exiDoc->PowerDeliveryReq_isUsed = 0u; | ||||
| 	exiDoc->PaymentServiceSelectionRes_isUsed = 0u; | ||||
| 	exiDoc->PowerDeliveryRes_isUsed = 0u; | ||||
| 	exiDoc->ChargingStatusReq_isUsed = 0u; | ||||
| 	exiDoc->ChargingStatusRes_isUsed = 0u; | ||||
| 	exiDoc->BodyElement_isUsed = 0u; | ||||
| 	exiDoc->CurrentDemandReq_isUsed = 0u; | ||||
| 	exiDoc->PreChargeReq_isUsed = 0u; | ||||
| 	exiDoc->CurrentDemandRes_isUsed = 0u; | ||||
| 	exiDoc->PreChargeRes_isUsed = 0u; | ||||
| 	exiDoc->SessionStopReq_isUsed = 0u; | ||||
| 	exiDoc->AuthorizationReq_isUsed = 0u; | ||||
| 	exiDoc->SessionStopRes_isUsed = 0u; | ||||
| 	exiDoc->AuthorizationRes_isUsed = 0u; | ||||
| 	exiDoc->ChargeParameterDiscoveryReq_isUsed = 0u; | ||||
| 	exiDoc->ChargeParameterDiscoveryRes_isUsed = 0u; | ||||
| 	exiDoc->ServiceDetailReq_isUsed = 0u; | ||||
| 	exiDoc->ServiceDetailRes_isUsed = 0u; | ||||
| 	exiDoc->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiDoc->RelativeTimeInterval_isUsed = 0u; | ||||
| 	exiDoc->SalesTariffEntry_isUsed = 0u; | ||||
| 	exiDoc->DC_EVPowerDeliveryParameter_isUsed = 0u; | ||||
| 	exiDoc->SASchedules_isUsed = 0u; | ||||
| 	exiDoc->AC_EVChargeParameter_isUsed = 0u; | ||||
| 	exiDoc->SAScheduleList_isUsed = 0u; | ||||
| 	exiDoc->DC_EVStatus_isUsed = 0u; | ||||
| 	exiDoc->EVStatus_isUsed = 0u; | ||||
| 	exiDoc->DC_EVChargeParameter_isUsed = 0u; | ||||
| 	exiDoc->DC_EVSEChargeParameter_isUsed = 0u; | ||||
| 	exiDoc->EVSEStatus_isUsed = 0u; | ||||
| 	exiDoc->TimeInterval_isUsed = 0u; | ||||
| 	exiDoc->EVPowerDeliveryParameter_isUsed = 0u; | ||||
| 	exiDoc->EVSEChargeParameter_isUsed = 0u; | ||||
| 	exiDoc->AC_EVSEStatus_isUsed = 0u; | ||||
| 	exiDoc->Entry_isUsed = 0u; | ||||
| 	exiDoc->AC_EVSEChargeParameter_isUsed = 0u; | ||||
| 	exiDoc->PMaxScheduleEntry_isUsed = 0u; | ||||
| 	exiDoc->EVChargeParameter_isUsed = 0u; | ||||
| 	exiDoc->SignatureProperty_isUsed = 0u; | ||||
| 	exiDoc->DSAKeyValue_isUsed = 0u; | ||||
| 	exiDoc->SignatureProperties_isUsed = 0u; | ||||
| 	exiDoc->KeyValue_isUsed = 0u; | ||||
| 	exiDoc->Transforms_isUsed = 0u; | ||||
| 	exiDoc->DigestMethod_isUsed = 0u; | ||||
| 	exiDoc->Signature_isUsed = 0u; | ||||
| 	exiDoc->RetrievalMethod_isUsed = 0u; | ||||
| 	exiDoc->Manifest_isUsed = 0u; | ||||
| 	exiDoc->Reference_isUsed = 0u; | ||||
| 	exiDoc->CanonicalizationMethod_isUsed = 0u; | ||||
| 	exiDoc->RSAKeyValue_isUsed = 0u; | ||||
| 	exiDoc->Transform_isUsed = 0u; | ||||
| 	exiDoc->PGPData_isUsed = 0u; | ||||
| 	exiDoc->MgmtData_isUsed = 0u; | ||||
| 	exiDoc->SignatureMethod_isUsed = 0u; | ||||
| 	exiDoc->KeyInfo_isUsed = 0u; | ||||
| 	exiDoc->SPKIData_isUsed = 0u; | ||||
| 	exiDoc->X509Data_isUsed = 0u; | ||||
| 	exiDoc->SignatureValue_isUsed = 0u; | ||||
| 	exiDoc->KeyName_isUsed = 0u; | ||||
| 	exiDoc->DigestValue_isUsed = 0u; | ||||
| 	exiDoc->SignedInfo_isUsed = 0u; | ||||
| 	exiDoc->Object_isUsed = 0u; | ||||
| } | ||||
|  | ||||
|  | ||||
| #if DEPLOY_ISO1_CODEC_FRAGMENT == SUPPORT_YES | ||||
| void init_iso1EXIFragment(struct iso1EXIFragment* exiFrag) { | ||||
| 	exiFrag->ChargingComplete_isUsed = 0u; | ||||
| 	exiFrag->EVMaxVoltage_isUsed = 0u; | ||||
| 	exiFrag->ServiceID_isUsed = 0u; | ||||
| 	exiFrag->ServiceID_isUsed = 0u; | ||||
| 	exiFrag->EVRESSSOC_isUsed = 0u; | ||||
| 	exiFrag->MeterReading_isUsed = 0u; | ||||
| 	exiFrag->physicalValue_isUsed = 0u; | ||||
| 	exiFrag->TimeInterval_isUsed = 0u; | ||||
| 	exiFrag->AC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->AC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->EVMaxCurrent_isUsed = 0u; | ||||
| 	exiFrag->ChargingProfileEntryStart_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaxCurrent_isUsed = 0u; | ||||
| 	exiFrag->costKind_isUsed = 0u; | ||||
| 	exiFrag->EAmount_isUsed = 0u; | ||||
| 	exiFrag->EnergyTransferMode_isUsed = 0u; | ||||
| 	exiFrag->X509SerialNumber_isUsed = 0u; | ||||
| 	exiFrag->NumEPriceLevels_isUsed = 0u; | ||||
| 	exiFrag->RetrievalMethod_isUsed = 0u; | ||||
| 	exiFrag->PMax_isUsed = 0u; | ||||
| 	exiFrag->ParameterSetID_isUsed = 0u; | ||||
| 	exiFrag->ParameterSetID_isUsed = 0u; | ||||
| 	exiFrag->BulkSOC_isUsed = 0u; | ||||
| 	exiFrag->EVSEMinimumCurrentLimit_isUsed = 0u; | ||||
| 	exiFrag->EVSEPowerLimitAchieved_isUsed = 0u; | ||||
| 	exiFrag->SalesTariffEntry_isUsed = 0u; | ||||
| 	exiFrag->Transforms_isUsed = 0u; | ||||
| 	exiFrag->EVSEProcessing_isUsed = 0u; | ||||
| 	exiFrag->EVSEProcessing_isUsed = 0u; | ||||
| 	exiFrag->EVSEProcessing_isUsed = 0u; | ||||
| 	exiFrag->EVSEIsolationStatus_isUsed = 0u; | ||||
| 	exiFrag->BulkChargingComplete_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleTupleID_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleTupleID_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleTupleID_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleTupleID_isUsed = 0u; | ||||
| 	exiFrag->FaultCode_isUsed = 0u; | ||||
| 	exiFrag->RootCertificateID_isUsed = 0u; | ||||
| 	exiFrag->HMACOutputLength_isUsed = 0u; | ||||
| 	exiFrag->Exponent_isUsed = 0u; | ||||
| 	exiFrag->X509IssuerSerial_isUsed = 0u; | ||||
| 	exiFrag->byteValue_isUsed = 0u; | ||||
| 	exiFrag->SPKIData_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleList_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumPowerLimit_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->RetryCounter_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumCurrentLimit_isUsed = 0u; | ||||
| 	exiFrag->SalesTariff_isUsed = 0u; | ||||
| 	exiFrag->PgenCounter_isUsed = 0u; | ||||
| 	exiFrag->X509Data_isUsed = 0u; | ||||
| 	exiFrag->EVSECurrentRegulationTolerance_isUsed = 0u; | ||||
| 	exiFrag->KeyValue_isUsed = 0u; | ||||
| 	exiFrag->V2G_Message_isUsed = 0u; | ||||
| 	exiFrag->EVSEMinimumVoltageLimit_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ProfileEntry_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->ResponseCode_isUsed = 0u; | ||||
| 	exiFrag->start_isUsed = 0u; | ||||
| 	exiFrag->EVErrorCode_isUsed = 0u; | ||||
| 	exiFrag->EVChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureCertChain_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureCertChain_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureCertChain_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureCertChain_isUsed = 0u; | ||||
| 	exiFrag->EVSEPresentCurrent_isUsed = 0u; | ||||
| 	exiFrag->PGPData_isUsed = 0u; | ||||
| 	exiFrag->EVMinCurrent_isUsed = 0u; | ||||
| 	exiFrag->FullSOC_isUsed = 0u; | ||||
| 	exiFrag->amount_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->Entry_isUsed = 0u; | ||||
| 	exiFrag->SessionStopRes_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->shortValue_isUsed = 0u; | ||||
| 	exiFrag->SAProvisioningCertificateChain_isUsed = 0u; | ||||
| 	exiFrag->SAProvisioningCertificateChain_isUsed = 0u; | ||||
| 	exiFrag->PowerDeliveryReq_isUsed = 0u; | ||||
| 	exiFrag->PowerDeliveryRes_isUsed = 0u; | ||||
| 	exiFrag->SessionStopReq_isUsed = 0u; | ||||
| 	exiFrag->SignatureProperty_isUsed = 0u; | ||||
| 	exiFrag->SessionID_isUsed = 0u; | ||||
| 	exiFrag->PGPKeyPacket_isUsed = 0u; | ||||
| 	exiFrag->PGPKeyPacket_isUsed = 0u; | ||||
| 	exiFrag->Header_isUsed = 0u; | ||||
| 	exiFrag->Seed_isUsed = 0u; | ||||
| 	exiFrag->RSAKeyValue_isUsed = 0u; | ||||
| 	exiFrag->FreeService_isUsed = 0u; | ||||
| 	exiFrag->EVSENominalVoltage_isUsed = 0u; | ||||
| 	exiFrag->XPath_isUsed = 0u; | ||||
| 	exiFrag->MeteringReceiptRes_isUsed = 0u; | ||||
| 	exiFrag->ServiceDiscoveryReq_isUsed = 0u; | ||||
| 	exiFrag->MeteringReceiptReq_isUsed = 0u; | ||||
| 	exiFrag->PreChargeRes_isUsed = 0u; | ||||
| 	exiFrag->OEMProvisioningCert_isUsed = 0u; | ||||
| 	exiFrag->EVEnergyCapacity_isUsed = 0u; | ||||
| 	exiFrag->Signature_isUsed = 0u; | ||||
| 	exiFrag->AC_EVSEChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->ServiceDiscoveryRes_isUsed = 0u; | ||||
| 	exiFrag->ServiceID_isUsed = 0u; | ||||
| 	exiFrag->PreChargeReq_isUsed = 0u; | ||||
| 	exiFrag->ServiceID_isUsed = 0u; | ||||
| 	exiFrag->NotificationMaxDelay_isUsed = 0u; | ||||
| 	exiFrag->CableCheckReq_isUsed = 0u; | ||||
| 	exiFrag->SalesTariffDescription_isUsed = 0u; | ||||
| 	exiFrag->EVSEVoltageLimitAchieved_isUsed = 0u; | ||||
| 	exiFrag->boolValue_isUsed = 0u; | ||||
| 	exiFrag->EVCCID_isUsed = 0u; | ||||
| 	exiFrag->DC_EVChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->ChargingStatusReq_isUsed = 0u; | ||||
| 	exiFrag->CableCheckRes_isUsed = 0u; | ||||
| 	exiFrag->MgmtData_isUsed = 0u; | ||||
| 	exiFrag->MeterInfo_isUsed = 0u; | ||||
| 	exiFrag->MeterInfo_isUsed = 0u; | ||||
| 	exiFrag->MeterInfo_isUsed = 0u; | ||||
| 	exiFrag->EVSEEnergyToBeDelivered_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaxCurrent_isUsed = 0u; | ||||
| 	exiFrag->EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->Service_isUsed = 0u; | ||||
| 	exiFrag->Manifest_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumVoltageLimit_isUsed = 0u; | ||||
| 	exiFrag->P_isUsed = 0u; | ||||
| 	exiFrag->Q_isUsed = 0u; | ||||
| 	exiFrag->X509SubjectName_isUsed = 0u; | ||||
| 	exiFrag->intValue_isUsed = 0u; | ||||
| 	exiFrag->ChargingProfile_isUsed = 0u; | ||||
| 	exiFrag->G_isUsed = 0u; | ||||
| 	exiFrag->J_isUsed = 0u; | ||||
| 	exiFrag->ServiceScope_isUsed = 0u; | ||||
| 	exiFrag->ReceiptRequired_isUsed = 0u; | ||||
| 	exiFrag->ReceiptRequired_isUsed = 0u; | ||||
| 	exiFrag->ServiceName_isUsed = 0u; | ||||
| 	exiFrag->MeterStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->ChargingStatusRes_isUsed = 0u; | ||||
| 	exiFrag->ServiceCategory_isUsed = 0u; | ||||
| 	exiFrag->Notification_isUsed = 0u; | ||||
| 	exiFrag->X509CRL_isUsed = 0u; | ||||
| 	exiFrag->Y_isUsed = 0u; | ||||
| 	exiFrag->EVSEPresentVoltage_isUsed = 0u; | ||||
| 	exiFrag->EVSEPresentVoltage_isUsed = 0u; | ||||
| 	exiFrag->EVSEPresentVoltage_isUsed = 0u; | ||||
| 	exiFrag->DigestValue_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumPowerLimit_isUsed = 0u; | ||||
| 	exiFrag->EVSETimeStamp_isUsed = 0u; | ||||
| 	exiFrag->EVSETimeStamp_isUsed = 0u; | ||||
| 	exiFrag->Cost_isUsed = 0u; | ||||
| 	exiFrag->EVSEPeakCurrentRipple_isUsed = 0u; | ||||
| 	exiFrag->ConsumptionCost_isUsed = 0u; | ||||
| 	exiFrag->DigestMethod_isUsed = 0u; | ||||
| 	exiFrag->SPKISexp_isUsed = 0u; | ||||
| 	exiFrag->SessionSetupRes_isUsed = 0u; | ||||
| 	exiFrag->EVSECurrentLimitAchieved_isUsed = 0u; | ||||
| 	exiFrag->ServiceDetailReq_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumVoltageLimit_isUsed = 0u; | ||||
| 	exiFrag->ServiceDetailRes_isUsed = 0u; | ||||
| 	exiFrag->SignatureProperties_isUsed = 0u; | ||||
| 	exiFrag->EPriceLevel_isUsed = 0u; | ||||
| 	exiFrag->EVTargetCurrent_isUsed = 0u; | ||||
| 	exiFrag->RemainingTimeToBulkSoC_isUsed = 0u; | ||||
| 	exiFrag->EVTargetCurrent_isUsed = 0u; | ||||
| 	exiFrag->stringValue_isUsed = 0u; | ||||
| 	exiFrag->SessionSetupReq_isUsed = 0u; | ||||
| 	exiFrag->Multiplier_isUsed = 0u; | ||||
| 	exiFrag->CertificateUpdateRes_isUsed = 0u; | ||||
| 	exiFrag->PGPKeyID_isUsed = 0u; | ||||
| 	exiFrag->EVTargetVoltage_isUsed = 0u; | ||||
| 	exiFrag->EVTargetVoltage_isUsed = 0u; | ||||
| 	exiFrag->DSAKeyValue_isUsed = 0u; | ||||
| 	exiFrag->CertificateUpdateReq_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumCurrentLimit_isUsed = 0u; | ||||
| 	exiFrag->CanonicalizationMethod_isUsed = 0u; | ||||
| 	exiFrag->X509Certificate_isUsed = 0u; | ||||
| 	exiFrag->CertificateInstallationReq_isUsed = 0u; | ||||
| 	exiFrag->CertificateInstallationRes_isUsed = 0u; | ||||
| 	exiFrag->EVStatus_isUsed = 0u; | ||||
| 	exiFrag->SupportedEnergyTransferMode_isUsed = 0u; | ||||
| 	exiFrag->SignedInfo_isUsed = 0u; | ||||
| 	exiFrag->eMAID_isUsed = 0u; | ||||
| 	exiFrag->eMAID_isUsed = 0u; | ||||
| 	exiFrag->eMAID_isUsed = 0u; | ||||
| 	exiFrag->eMAID_isUsed = 0u; | ||||
| 	exiFrag->MaxEntriesSAScheduleTuple_isUsed = 0u; | ||||
| 	exiFrag->PaymentOption_isUsed = 0u; | ||||
| 	exiFrag->SubCertificates_isUsed = 0u; | ||||
| 	exiFrag->PaymentDetailsReq_isUsed = 0u; | ||||
| 	exiFrag->AuthorizationReq_isUsed = 0u; | ||||
| 	exiFrag->PaymentDetailsRes_isUsed = 0u; | ||||
| 	exiFrag->AuthorizationRes_isUsed = 0u; | ||||
| 	exiFrag->EVSEStatusCode_isUsed = 0u; | ||||
| 	exiFrag->PaymentOptionList_isUsed = 0u; | ||||
| 	exiFrag->SelectedServiceList_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureEncryptedPrivateKey_isUsed = 0u; | ||||
| 	exiFrag->ContractSignatureEncryptedPrivateKey_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleTupleID_isUsed = 0u; | ||||
| 	exiFrag->WeldingDetectionReq_isUsed = 0u; | ||||
| 	exiFrag->FaultMsg_isUsed = 0u; | ||||
| 	exiFrag->WeldingDetectionRes_isUsed = 0u; | ||||
| 	exiFrag->ChargeProgress_isUsed = 0u; | ||||
| 	exiFrag->SelectedPaymentOption_isUsed = 0u; | ||||
| 	exiFrag->BulkChargingComplete_isUsed = 0u; | ||||
| 	exiFrag->EVSEID_isUsed = 0u; | ||||
| 	exiFrag->EVSEID_isUsed = 0u; | ||||
| 	exiFrag->ParameterSet_isUsed = 0u; | ||||
| 	exiFrag->EVSEID_isUsed = 0u; | ||||
| 	exiFrag->EVSEChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->SigMeterReading_isUsed = 0u; | ||||
| 	exiFrag->SignatureValue_isUsed = 0u; | ||||
| 	exiFrag->SASchedules_isUsed = 0u; | ||||
| 	exiFrag->SalesTariffID_isUsed = 0u; | ||||
| 	exiFrag->DHpublickey_isUsed = 0u; | ||||
| 	exiFrag->DHpublickey_isUsed = 0u; | ||||
| 	exiFrag->ServiceParameterList_isUsed = 0u; | ||||
| 	exiFrag->ListOfRootCertificateIDs_isUsed = 0u; | ||||
| 	exiFrag->ListOfRootCertificateIDs_isUsed = 0u; | ||||
| 	exiFrag->MeterID_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumCurrentLimit_isUsed = 0u; | ||||
| 	exiFrag->ChargeService_isUsed = 0u; | ||||
| 	exiFrag->amountMultiplier_isUsed = 0u; | ||||
| 	exiFrag->RCD_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumPowerLimit_isUsed = 0u; | ||||
| 	exiFrag->startValue_isUsed = 0u; | ||||
| 	exiFrag->CurrentDemandReq_isUsed = 0u; | ||||
| 	exiFrag->KeyName_isUsed = 0u; | ||||
| 	exiFrag->DC_EVPowerDeliveryParameter_isUsed = 0u; | ||||
| 	exiFrag->Body_isUsed = 0u; | ||||
| 	exiFrag->ChargingComplete_isUsed = 0u; | ||||
| 	exiFrag->EVSENotification_isUsed = 0u; | ||||
| 	exiFrag->Value_isUsed = 0u; | ||||
| 	exiFrag->KeyInfo_isUsed = 0u; | ||||
| 	exiFrag->GenChallenge_isUsed = 0u; | ||||
| 	exiFrag->GenChallenge_isUsed = 0u; | ||||
| 	exiFrag->AC_EVChargeParameter_isUsed = 0u; | ||||
| 	exiFrag->PMaxScheduleEntry_isUsed = 0u; | ||||
| 	exiFrag->Parameter_isUsed = 0u; | ||||
| 	exiFrag->X509SKI_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumVoltageLimit_isUsed = 0u; | ||||
| 	exiFrag->SelectedService_isUsed = 0u; | ||||
| 	exiFrag->PaymentServiceSelectionReq_isUsed = 0u; | ||||
| 	exiFrag->PaymentServiceSelectionRes_isUsed = 0u; | ||||
| 	exiFrag->Certificate_isUsed = 0u; | ||||
| 	exiFrag->Certificate_isUsed = 0u; | ||||
| 	exiFrag->CurrentDemandRes_isUsed = 0u; | ||||
| 	exiFrag->EVReady_isUsed = 0u; | ||||
| 	exiFrag->EVSEMaximumPowerLimit_isUsed = 0u; | ||||
| 	exiFrag->SignatureMethod_isUsed = 0u; | ||||
| 	exiFrag->PMaxSchedule_isUsed = 0u; | ||||
| 	exiFrag->ServiceCategory_isUsed = 0u; | ||||
| 	exiFrag->Unit_isUsed = 0u; | ||||
| 	exiFrag->X509IssuerName_isUsed = 0u; | ||||
| 	exiFrag->Reference_isUsed = 0u; | ||||
| 	exiFrag->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed = 0u; | ||||
| 	exiFrag->EVPowerDeliveryParameter_isUsed = 0u; | ||||
| 	exiFrag->ChargingProfileEntryMaxPower_isUsed = 0u; | ||||
| 	exiFrag->ChargeParameterDiscoveryReq_isUsed = 0u; | ||||
| 	exiFrag->duration_isUsed = 0u; | ||||
| 	exiFrag->TMeter_isUsed = 0u; | ||||
| 	exiFrag->ChargeParameterDiscoveryRes_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumCurrentLimit_isUsed = 0u; | ||||
| 	exiFrag->ServiceList_isUsed = 0u; | ||||
| 	exiFrag->AC_EVSEStatus_isUsed = 0u; | ||||
| 	exiFrag->EVMaximumVoltageLimit_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->SAScheduleTuple_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->DC_EVStatus_isUsed = 0u; | ||||
| 	exiFrag->BodyElement_isUsed = 0u; | ||||
| 	exiFrag->RemainingTimeToFullSoC_isUsed = 0u; | ||||
| 	exiFrag->RelativeTimeInterval_isUsed = 0u; | ||||
| 	exiFrag->Transform_isUsed = 0u; | ||||
| 	exiFrag->DepartureTime_isUsed = 0u; | ||||
| 	exiFrag->Object_isUsed = 0u; | ||||
| 	exiFrag->EVEnergyRequest_isUsed = 0u; | ||||
| 	exiFrag->ServiceScope_isUsed = 0u; | ||||
| 	exiFrag->Modulus_isUsed = 0u; | ||||
| 	exiFrag->ChargingSession_isUsed = 0u; | ||||
| 	exiFrag->RequestedEnergyTransferMode_isUsed = 0u; | ||||
| 	exiFrag->SessionID_isUsed = 0u; | ||||
| } | ||||
| void init_iso1EXISchemaInformedElementFragmentGrammar(struct iso1EXISchemaInformedElementFragmentGrammar* exiFrag) { | ||||
| 	exiFrag->Id_isUsed = 0u; | ||||
| 	exiFrag->CHARACTERS_GENERIC_isUsed = 0u; | ||||
| } | ||||
| #endif /* DEPLOY_ISO1_CODEC_FRAGMENT */ | ||||
|  | ||||
| void init_iso1MessageHeaderType(struct iso1MessageHeaderType* iso1MessageHeaderType) { | ||||
| 	iso1MessageHeaderType->Notification_isUsed = 0u; | ||||
| 	iso1MessageHeaderType->Signature_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SignatureType(struct iso1SignatureType* iso1SignatureType) { | ||||
| 	iso1SignatureType->Id_isUsed = 0u; | ||||
| 	iso1SignatureType->KeyInfo_isUsed = 0u; | ||||
| 	iso1SignatureType->Object.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1PowerDeliveryReqType(struct iso1PowerDeliveryReqType* iso1PowerDeliveryReqType) { | ||||
| 	iso1PowerDeliveryReqType->ChargingProfile_isUsed = 0u; | ||||
| 	iso1PowerDeliveryReqType->EVPowerDeliveryParameter_isUsed = 0u; | ||||
| 	iso1PowerDeliveryReqType->DC_EVPowerDeliveryParameter_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ParameterType(struct iso1ParameterType* iso1ParameterType) { | ||||
| 	iso1ParameterType->boolValue_isUsed = 0u; | ||||
| 	iso1ParameterType->byteValue_isUsed = 0u; | ||||
| 	iso1ParameterType->shortValue_isUsed = 0u; | ||||
| 	iso1ParameterType->intValue_isUsed = 0u; | ||||
| 	iso1ParameterType->physicalValue_isUsed = 0u; | ||||
| 	iso1ParameterType->stringValue_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1CertificateInstallationReqType(struct iso1CertificateInstallationReqType* iso1CertificateInstallationReqType) { | ||||
| 	(void)iso1CertificateInstallationReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1SessionSetupResType(struct iso1SessionSetupResType* iso1SessionSetupResType) { | ||||
| 	iso1SessionSetupResType->EVSETimeStamp_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1EVChargeParameterType(struct iso1EVChargeParameterType* iso1EVChargeParameterType) { | ||||
| 	iso1EVChargeParameterType->DepartureTime_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1DiffieHellmanPublickeyType(struct iso1DiffieHellmanPublickeyType* iso1DiffieHellmanPublickeyType) { | ||||
| 	(void)iso1DiffieHellmanPublickeyType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1ServiceDiscoveryResType(struct iso1ServiceDiscoveryResType* iso1ServiceDiscoveryResType) { | ||||
| 	iso1ServiceDiscoveryResType->ServiceList_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ServiceParameterListType(struct iso1ServiceParameterListType* iso1ServiceParameterListType) { | ||||
| 	iso1ServiceParameterListType->ParameterSet.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1CertificateChainType(struct iso1CertificateChainType* iso1CertificateChainType) { | ||||
| 	iso1CertificateChainType->Id_isUsed = 0u; | ||||
| 	iso1CertificateChainType->SubCertificates_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SASchedulesType(struct iso1SASchedulesType* iso1SASchedulesType) { | ||||
| 	(void)iso1SASchedulesType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1DC_EVSEStatusType(struct iso1DC_EVSEStatusType* iso1DC_EVSEStatusType) { | ||||
| 	iso1DC_EVSEStatusType->EVSEIsolationStatus_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1PreChargeResType(struct iso1PreChargeResType* iso1PreChargeResType) { | ||||
| 	(void)iso1PreChargeResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1ParameterSetType(struct iso1ParameterSetType* iso1ParameterSetType) { | ||||
| 	iso1ParameterSetType->Parameter.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ServiceDetailReqType(struct iso1ServiceDetailReqType* iso1ServiceDetailReqType) { | ||||
| 	(void)iso1ServiceDetailReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1RelativeTimeIntervalType(struct iso1RelativeTimeIntervalType* iso1RelativeTimeIntervalType) { | ||||
| 	iso1RelativeTimeIntervalType->duration_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SignedInfoType(struct iso1SignedInfoType* iso1SignedInfoType) { | ||||
| 	iso1SignedInfoType->Id_isUsed = 0u; | ||||
| 	iso1SignedInfoType->Reference.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1EMAIDType(struct iso1EMAIDType* iso1EMAIDType) { | ||||
| 	(void)iso1EMAIDType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1EVStatusType(struct iso1EVStatusType* iso1EVStatusType) { | ||||
| 	(void)iso1EVStatusType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1ServiceListType(struct iso1ServiceListType* iso1ServiceListType) { | ||||
| 	iso1ServiceListType->Service.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1EVSEChargeParameterType(struct iso1EVSEChargeParameterType* iso1EVSEChargeParameterType) { | ||||
| 	(void)iso1EVSEChargeParameterType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1EVPowerDeliveryParameterType(struct iso1EVPowerDeliveryParameterType* iso1EVPowerDeliveryParameterType) { | ||||
| 	(void)iso1EVPowerDeliveryParameterType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1ProfileEntryType(struct iso1ProfileEntryType* iso1ProfileEntryType) { | ||||
| 	iso1ProfileEntryType->ChargingProfileEntryMaxNumberOfPhasesInUse_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1AuthorizationReqType(struct iso1AuthorizationReqType* iso1AuthorizationReqType) { | ||||
| 	iso1AuthorizationReqType->Id_isUsed = 0u; | ||||
| 	iso1AuthorizationReqType->GenChallenge_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1MeterInfoType(struct iso1MeterInfoType* iso1MeterInfoType) { | ||||
| 	iso1MeterInfoType->MeterReading_isUsed = 0u; | ||||
| 	iso1MeterInfoType->SigMeterReading_isUsed = 0u; | ||||
| 	iso1MeterInfoType->MeterStatus_isUsed = 0u; | ||||
| 	iso1MeterInfoType->TMeter_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ManifestType(struct iso1ManifestType* iso1ManifestType) { | ||||
| 	iso1ManifestType->Id_isUsed = 0u; | ||||
| 	iso1ManifestType->Reference.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ChargeParameterDiscoveryResType(struct iso1ChargeParameterDiscoveryResType* iso1ChargeParameterDiscoveryResType) { | ||||
| 	iso1ChargeParameterDiscoveryResType->SASchedules_isUsed = 0u; | ||||
| 	iso1ChargeParameterDiscoveryResType->SAScheduleList_isUsed = 0u; | ||||
| 	iso1ChargeParameterDiscoveryResType->EVSEChargeParameter_isUsed = 0u; | ||||
| 	iso1ChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 0u; | ||||
| 	iso1ChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1PowerDeliveryResType(struct iso1PowerDeliveryResType* iso1PowerDeliveryResType) { | ||||
| 	iso1PowerDeliveryResType->EVSEStatus_isUsed = 0u; | ||||
| 	iso1PowerDeliveryResType->AC_EVSEStatus_isUsed = 0u; | ||||
| 	iso1PowerDeliveryResType->DC_EVSEStatus_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1DC_EVChargeParameterType(struct iso1DC_EVChargeParameterType* iso1DC_EVChargeParameterType) { | ||||
| 	iso1DC_EVChargeParameterType->DepartureTime_isUsed = 0u; | ||||
| 	iso1DC_EVChargeParameterType->EVMaximumPowerLimit_isUsed = 0u; | ||||
| 	iso1DC_EVChargeParameterType->EVEnergyCapacity_isUsed = 0u; | ||||
| 	iso1DC_EVChargeParameterType->EVEnergyRequest_isUsed = 0u; | ||||
| 	iso1DC_EVChargeParameterType->FullSOC_isUsed = 0u; | ||||
| 	iso1DC_EVChargeParameterType->BulkSOC_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ConsumptionCostType(struct iso1ConsumptionCostType* iso1ConsumptionCostType) { | ||||
| 	iso1ConsumptionCostType->Cost.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1PMaxScheduleType(struct iso1PMaxScheduleType* iso1PMaxScheduleType) { | ||||
| 	iso1PMaxScheduleType->PMaxScheduleEntry.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1PaymentOptionListType(struct iso1PaymentOptionListType* iso1PaymentOptionListType) { | ||||
| 	iso1PaymentOptionListType->PaymentOption.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ObjectType(struct iso1ObjectType* iso1ObjectType) { | ||||
| 	iso1ObjectType->Id_isUsed = 0u; | ||||
| 	iso1ObjectType->MimeType_isUsed = 0u; | ||||
| 	iso1ObjectType->Encoding_isUsed = 0u; | ||||
| 	iso1ObjectType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1PhysicalValueType(struct iso1PhysicalValueType* iso1PhysicalValueType) { | ||||
| 	(void)iso1PhysicalValueType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1RSAKeyValueType(struct iso1RSAKeyValueType* iso1RSAKeyValueType) { | ||||
| 	(void)iso1RSAKeyValueType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1SessionStopResType(struct iso1SessionStopResType* iso1SessionStopResType) { | ||||
| 	(void)iso1SessionStopResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1CertificateUpdateReqType(struct iso1CertificateUpdateReqType* iso1CertificateUpdateReqType) { | ||||
| 	(void)iso1CertificateUpdateReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1SignatureValueType(struct iso1SignatureValueType* iso1SignatureValueType) { | ||||
| 	iso1SignatureValueType->Id_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1PaymentDetailsReqType(struct iso1PaymentDetailsReqType* iso1PaymentDetailsReqType) { | ||||
| 	(void)iso1PaymentDetailsReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1AuthorizationResType(struct iso1AuthorizationResType* iso1AuthorizationResType) { | ||||
| 	(void)iso1AuthorizationResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1DC_EVSEChargeParameterType(struct iso1DC_EVSEChargeParameterType* iso1DC_EVSEChargeParameterType) { | ||||
| 	iso1DC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed = 0u; | ||||
| 	iso1DC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SubCertificatesType(struct iso1SubCertificatesType* iso1SubCertificatesType) { | ||||
| 	iso1SubCertificatesType->Certificate.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ChargingStatusResType(struct iso1ChargingStatusResType* iso1ChargingStatusResType) { | ||||
| 	iso1ChargingStatusResType->EVSEMaxCurrent_isUsed = 0u; | ||||
| 	iso1ChargingStatusResType->MeterInfo_isUsed = 0u; | ||||
| 	iso1ChargingStatusResType->ReceiptRequired_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1DSAKeyValueType(struct iso1DSAKeyValueType* iso1DSAKeyValueType) { | ||||
| 	iso1DSAKeyValueType->P_isUsed = 0u; | ||||
| 	iso1DSAKeyValueType->Q_isUsed = 0u; | ||||
| 	iso1DSAKeyValueType->G_isUsed = 0u; | ||||
| 	iso1DSAKeyValueType->J_isUsed = 0u; | ||||
| 	iso1DSAKeyValueType->Seed_isUsed = 0u; | ||||
| 	iso1DSAKeyValueType->PgenCounter_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ListOfRootCertificateIDsType(struct iso1ListOfRootCertificateIDsType* iso1ListOfRootCertificateIDsType) { | ||||
| 	iso1ListOfRootCertificateIDsType->RootCertificateID.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ChargeServiceType(struct iso1ChargeServiceType* iso1ChargeServiceType) { | ||||
| 	iso1ChargeServiceType->ServiceName_isUsed = 0u; | ||||
| 	iso1ChargeServiceType->ServiceScope_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1IntervalType(struct iso1IntervalType* iso1IntervalType) { | ||||
| 	(void)iso1IntervalType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1MeteringReceiptReqType(struct iso1MeteringReceiptReqType* iso1MeteringReceiptReqType) { | ||||
| 	iso1MeteringReceiptReqType->Id_isUsed = 0u; | ||||
| 	iso1MeteringReceiptReqType->SAScheduleTupleID_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ServiceDetailResType(struct iso1ServiceDetailResType* iso1ServiceDetailResType) { | ||||
| 	iso1ServiceDetailResType->ServiceParameterList_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1KeyValueType(struct iso1KeyValueType* iso1KeyValueType) { | ||||
| 	iso1KeyValueType->DSAKeyValue_isUsed = 0u; | ||||
| 	iso1KeyValueType->RSAKeyValue_isUsed = 0u; | ||||
| 	iso1KeyValueType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SelectedServiceListType(struct iso1SelectedServiceListType* iso1SelectedServiceListType) { | ||||
| 	iso1SelectedServiceListType->SelectedService.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1CableCheckResType(struct iso1CableCheckResType* iso1CableCheckResType) { | ||||
| 	(void)iso1CableCheckResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1X509IssuerSerialType(struct iso1X509IssuerSerialType* iso1X509IssuerSerialType) { | ||||
| 	(void)iso1X509IssuerSerialType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1KeyInfoType(struct iso1KeyInfoType* iso1KeyInfoType) { | ||||
| 	iso1KeyInfoType->Id_isUsed = 0u; | ||||
| 	iso1KeyInfoType->KeyName.arrayLen = 0u; | ||||
| 	iso1KeyInfoType->KeyValue.arrayLen = 0u; | ||||
| 	iso1KeyInfoType->RetrievalMethod.arrayLen = 0u; | ||||
| 	iso1KeyInfoType->X509Data.arrayLen = 0u; | ||||
| 	iso1KeyInfoType->PGPData.arrayLen = 0u; | ||||
| 	iso1KeyInfoType->SPKIData.arrayLen = 0u; | ||||
| 	iso1KeyInfoType->MgmtData.arrayLen = 0u; | ||||
| 	iso1KeyInfoType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1TransformsType(struct iso1TransformsType* iso1TransformsType) { | ||||
| 	iso1TransformsType->Transform.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ChargeParameterDiscoveryReqType(struct iso1ChargeParameterDiscoveryReqType* iso1ChargeParameterDiscoveryReqType) { | ||||
| 	iso1ChargeParameterDiscoveryReqType->MaxEntriesSAScheduleTuple_isUsed = 0u; | ||||
| 	iso1ChargeParameterDiscoveryReqType->EVChargeParameter_isUsed = 0u; | ||||
| 	iso1ChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 0u; | ||||
| 	iso1ChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1PreChargeReqType(struct iso1PreChargeReqType* iso1PreChargeReqType) { | ||||
| 	(void)iso1PreChargeReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1EVSEStatusType(struct iso1EVSEStatusType* iso1EVSEStatusType) { | ||||
| 	(void)iso1EVSEStatusType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1SignatureMethodType(struct iso1SignatureMethodType* iso1SignatureMethodType) { | ||||
| 	iso1SignatureMethodType->HMACOutputLength_isUsed = 0u; | ||||
| 	iso1SignatureMethodType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1X509DataType(struct iso1X509DataType* iso1X509DataType) { | ||||
| 	iso1X509DataType->X509IssuerSerial.arrayLen = 0u; | ||||
| 	iso1X509DataType->X509SKI.arrayLen = 0u; | ||||
| 	iso1X509DataType->X509SubjectName.arrayLen = 0u; | ||||
| 	iso1X509DataType->X509Certificate.arrayLen = 0u; | ||||
| 	iso1X509DataType->X509CRL.arrayLen = 0u; | ||||
| 	iso1X509DataType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1NotificationType(struct iso1NotificationType* iso1NotificationType) { | ||||
| 	iso1NotificationType->FaultMsg_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SAScheduleListType(struct iso1SAScheduleListType* iso1SAScheduleListType) { | ||||
| 	iso1SAScheduleListType->SAScheduleTuple.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1BodyType(struct iso1BodyType* iso1BodyType) { | ||||
| 	iso1BodyType->BodyElement_isUsed = 0u; | ||||
| 	iso1BodyType->SessionSetupReq_isUsed = 0u; | ||||
| 	iso1BodyType->SessionSetupRes_isUsed = 0u; | ||||
| 	iso1BodyType->ServiceDiscoveryReq_isUsed = 0u; | ||||
| 	iso1BodyType->ServiceDiscoveryRes_isUsed = 0u; | ||||
| 	iso1BodyType->ServiceDetailReq_isUsed = 0u; | ||||
| 	iso1BodyType->ServiceDetailRes_isUsed = 0u; | ||||
| 	iso1BodyType->PaymentServiceSelectionReq_isUsed = 0u; | ||||
| 	iso1BodyType->PaymentServiceSelectionRes_isUsed = 0u; | ||||
| 	iso1BodyType->PaymentDetailsReq_isUsed = 0u; | ||||
| 	iso1BodyType->PaymentDetailsRes_isUsed = 0u; | ||||
| 	iso1BodyType->AuthorizationReq_isUsed = 0u; | ||||
| 	iso1BodyType->AuthorizationRes_isUsed = 0u; | ||||
| 	iso1BodyType->ChargeParameterDiscoveryReq_isUsed = 0u; | ||||
| 	iso1BodyType->ChargeParameterDiscoveryRes_isUsed = 0u; | ||||
| 	iso1BodyType->PowerDeliveryReq_isUsed = 0u; | ||||
| 	iso1BodyType->PowerDeliveryRes_isUsed = 0u; | ||||
| 	iso1BodyType->MeteringReceiptReq_isUsed = 0u; | ||||
| 	iso1BodyType->MeteringReceiptRes_isUsed = 0u; | ||||
| 	iso1BodyType->SessionStopReq_isUsed = 0u; | ||||
| 	iso1BodyType->SessionStopRes_isUsed = 0u; | ||||
| 	iso1BodyType->CertificateUpdateReq_isUsed = 0u; | ||||
| 	iso1BodyType->CertificateUpdateRes_isUsed = 0u; | ||||
| 	iso1BodyType->CertificateInstallationReq_isUsed = 0u; | ||||
| 	iso1BodyType->CertificateInstallationRes_isUsed = 0u; | ||||
| 	iso1BodyType->ChargingStatusReq_isUsed = 0u; | ||||
| 	iso1BodyType->ChargingStatusRes_isUsed = 0u; | ||||
| 	iso1BodyType->CableCheckReq_isUsed = 0u; | ||||
| 	iso1BodyType->CableCheckRes_isUsed = 0u; | ||||
| 	iso1BodyType->PreChargeReq_isUsed = 0u; | ||||
| 	iso1BodyType->PreChargeRes_isUsed = 0u; | ||||
| 	iso1BodyType->CurrentDemandReq_isUsed = 0u; | ||||
| 	iso1BodyType->CurrentDemandRes_isUsed = 0u; | ||||
| 	iso1BodyType->WeldingDetectionReq_isUsed = 0u; | ||||
| 	iso1BodyType->WeldingDetectionRes_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ChargingProfileType(struct iso1ChargingProfileType* iso1ChargingProfileType) { | ||||
| 	iso1ChargingProfileType->ProfileEntry.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1TransformType(struct iso1TransformType* iso1TransformType) { | ||||
| 	iso1TransformType->ANY_isUsed = 0u; | ||||
| 	iso1TransformType->XPath.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SAScheduleTupleType(struct iso1SAScheduleTupleType* iso1SAScheduleTupleType) { | ||||
| 	iso1SAScheduleTupleType->SalesTariff_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1AC_EVChargeParameterType(struct iso1AC_EVChargeParameterType* iso1AC_EVChargeParameterType) { | ||||
| 	iso1AC_EVChargeParameterType->DepartureTime_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1AnonType_V2G_Message(struct iso1AnonType_V2G_Message* iso1AnonType_V2G_Message) { | ||||
| 	(void)iso1AnonType_V2G_Message; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1PaymentDetailsResType(struct iso1PaymentDetailsResType* iso1PaymentDetailsResType) { | ||||
| 	(void)iso1PaymentDetailsResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1ContractSignatureEncryptedPrivateKeyType(struct iso1ContractSignatureEncryptedPrivateKeyType* iso1ContractSignatureEncryptedPrivateKeyType) { | ||||
| 	(void)iso1ContractSignatureEncryptedPrivateKeyType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1PMaxScheduleEntryType(struct iso1PMaxScheduleEntryType* iso1PMaxScheduleEntryType) { | ||||
| 	iso1PMaxScheduleEntryType->TimeInterval_isUsed = 0u; | ||||
| 	iso1PMaxScheduleEntryType->RelativeTimeInterval_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SPKIDataType(struct iso1SPKIDataType* iso1SPKIDataType) { | ||||
| 	iso1SPKIDataType->SPKISexp.arrayLen = 0u; | ||||
| 	iso1SPKIDataType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1MeteringReceiptResType(struct iso1MeteringReceiptResType* iso1MeteringReceiptResType) { | ||||
| 	iso1MeteringReceiptResType->EVSEStatus_isUsed = 0u; | ||||
| 	iso1MeteringReceiptResType->AC_EVSEStatus_isUsed = 0u; | ||||
| 	iso1MeteringReceiptResType->DC_EVSEStatus_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SessionStopReqType(struct iso1SessionStopReqType* iso1SessionStopReqType) { | ||||
| 	(void)iso1SessionStopReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1WeldingDetectionResType(struct iso1WeldingDetectionResType* iso1WeldingDetectionResType) { | ||||
| 	(void)iso1WeldingDetectionResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1ReferenceType(struct iso1ReferenceType* iso1ReferenceType) { | ||||
| 	iso1ReferenceType->Id_isUsed = 0u; | ||||
| 	iso1ReferenceType->URI_isUsed = 0u; | ||||
| 	iso1ReferenceType->Type_isUsed = 0u; | ||||
| 	iso1ReferenceType->Transforms_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1CurrentDemandReqType(struct iso1CurrentDemandReqType* iso1CurrentDemandReqType) { | ||||
| 	iso1CurrentDemandReqType->EVMaximumVoltageLimit_isUsed = 0u; | ||||
| 	iso1CurrentDemandReqType->EVMaximumCurrentLimit_isUsed = 0u; | ||||
| 	iso1CurrentDemandReqType->EVMaximumPowerLimit_isUsed = 0u; | ||||
| 	iso1CurrentDemandReqType->BulkChargingComplete_isUsed = 0u; | ||||
| 	iso1CurrentDemandReqType->RemainingTimeToFullSoC_isUsed = 0u; | ||||
| 	iso1CurrentDemandReqType->RemainingTimeToBulkSoC_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SalesTariffEntryType(struct iso1SalesTariffEntryType* iso1SalesTariffEntryType) { | ||||
| 	iso1SalesTariffEntryType->TimeInterval_isUsed = 0u; | ||||
| 	iso1SalesTariffEntryType->RelativeTimeInterval_isUsed = 0u; | ||||
| 	iso1SalesTariffEntryType->EPriceLevel_isUsed = 0u; | ||||
| 	iso1SalesTariffEntryType->ConsumptionCost.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1EntryType(struct iso1EntryType* iso1EntryType) { | ||||
| 	iso1EntryType->TimeInterval_isUsed = 0u; | ||||
| 	iso1EntryType->RelativeTimeInterval_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SessionSetupReqType(struct iso1SessionSetupReqType* iso1SessionSetupReqType) { | ||||
| 	(void)iso1SessionSetupReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1CostType(struct iso1CostType* iso1CostType) { | ||||
| 	iso1CostType->amountMultiplier_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1DC_EVPowerDeliveryParameterType(struct iso1DC_EVPowerDeliveryParameterType* iso1DC_EVPowerDeliveryParameterType) { | ||||
| 	iso1DC_EVPowerDeliveryParameterType->BulkChargingComplete_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1RetrievalMethodType(struct iso1RetrievalMethodType* iso1RetrievalMethodType) { | ||||
| 	iso1RetrievalMethodType->URI_isUsed = 0u; | ||||
| 	iso1RetrievalMethodType->Type_isUsed = 0u; | ||||
| 	iso1RetrievalMethodType->Transforms_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1CertificateUpdateResType(struct iso1CertificateUpdateResType* iso1CertificateUpdateResType) { | ||||
| 	iso1CertificateUpdateResType->RetryCounter_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1CertificateInstallationResType(struct iso1CertificateInstallationResType* iso1CertificateInstallationResType) { | ||||
| 	(void)iso1CertificateInstallationResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1CanonicalizationMethodType(struct iso1CanonicalizationMethodType* iso1CanonicalizationMethodType) { | ||||
| 	iso1CanonicalizationMethodType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1WeldingDetectionReqType(struct iso1WeldingDetectionReqType* iso1WeldingDetectionReqType) { | ||||
| 	(void)iso1WeldingDetectionReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1DC_EVStatusType(struct iso1DC_EVStatusType* iso1DC_EVStatusType) { | ||||
| 	(void)iso1DC_EVStatusType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1CurrentDemandResType(struct iso1CurrentDemandResType* iso1CurrentDemandResType) { | ||||
| 	iso1CurrentDemandResType->EVSEMaximumVoltageLimit_isUsed = 0u; | ||||
| 	iso1CurrentDemandResType->EVSEMaximumCurrentLimit_isUsed = 0u; | ||||
| 	iso1CurrentDemandResType->EVSEMaximumPowerLimit_isUsed = 0u; | ||||
| 	iso1CurrentDemandResType->MeterInfo_isUsed = 0u; | ||||
| 	iso1CurrentDemandResType->ReceiptRequired_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ServiceType(struct iso1ServiceType* iso1ServiceType) { | ||||
| 	iso1ServiceType->ServiceName_isUsed = 0u; | ||||
| 	iso1ServiceType->ServiceScope_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ServiceDiscoveryReqType(struct iso1ServiceDiscoveryReqType* iso1ServiceDiscoveryReqType) { | ||||
| 	iso1ServiceDiscoveryReqType->ServiceScope_isUsed = 0u; | ||||
| 	iso1ServiceDiscoveryReqType->ServiceCategory_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1AC_EVSEChargeParameterType(struct iso1AC_EVSEChargeParameterType* iso1AC_EVSEChargeParameterType) { | ||||
| 	(void)iso1AC_EVSEChargeParameterType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1CableCheckReqType(struct iso1CableCheckReqType* iso1CableCheckReqType) { | ||||
| 	(void)iso1CableCheckReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1SelectedServiceType(struct iso1SelectedServiceType* iso1SelectedServiceType) { | ||||
| 	iso1SelectedServiceType->ParameterSetID_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1AC_EVSEStatusType(struct iso1AC_EVSEStatusType* iso1AC_EVSEStatusType) { | ||||
| 	(void)iso1AC_EVSEStatusType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1SalesTariffType(struct iso1SalesTariffType* iso1SalesTariffType) { | ||||
| 	iso1SalesTariffType->Id_isUsed = 0u; | ||||
| 	iso1SalesTariffType->SalesTariffDescription_isUsed = 0u; | ||||
| 	iso1SalesTariffType->NumEPriceLevels_isUsed = 0u; | ||||
| 	iso1SalesTariffType->SalesTariffEntry.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1PaymentServiceSelectionReqType(struct iso1PaymentServiceSelectionReqType* iso1PaymentServiceSelectionReqType) { | ||||
| 	(void)iso1PaymentServiceSelectionReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1SignaturePropertiesType(struct iso1SignaturePropertiesType* iso1SignaturePropertiesType) { | ||||
| 	iso1SignaturePropertiesType->Id_isUsed = 0u; | ||||
| 	iso1SignaturePropertiesType->SignatureProperty.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1BodyBaseType(struct iso1BodyBaseType* iso1BodyBaseType) { | ||||
| 	(void)iso1BodyBaseType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1SupportedEnergyTransferModeType(struct iso1SupportedEnergyTransferModeType* iso1SupportedEnergyTransferModeType) { | ||||
| 	iso1SupportedEnergyTransferModeType->EnergyTransferMode.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1ChargingStatusReqType(struct iso1ChargingStatusReqType* iso1ChargingStatusReqType) { | ||||
| 	(void)iso1ChargingStatusReqType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1PaymentServiceSelectionResType(struct iso1PaymentServiceSelectionResType* iso1PaymentServiceSelectionResType) { | ||||
| 	(void)iso1PaymentServiceSelectionResType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_iso1DigestMethodType(struct iso1DigestMethodType* iso1DigestMethodType) { | ||||
| 	iso1DigestMethodType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1SignaturePropertyType(struct iso1SignaturePropertyType* iso1SignaturePropertyType) { | ||||
| 	iso1SignaturePropertyType->Id_isUsed = 0u; | ||||
| 	iso1SignaturePropertyType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_iso1PGPDataType(struct iso1PGPDataType* iso1PGPDataType) { | ||||
| 	iso1PGPDataType->PGPKeyID_isUsed = 0u; | ||||
| 	iso1PGPDataType->PGPKeyPacket_isUsed = 0u; | ||||
| 	iso1PGPDataType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| #endif /* DEPLOY_ISO1_CODEC */ | ||||
|  | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										2992
									
								
								src/iso1/iso1EXIDatatypes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2992
									
								
								src/iso1/iso1EXIDatatypes.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										19379
									
								
								src/iso1/iso1EXIDatatypesDecoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19379
									
								
								src/iso1/iso1EXIDatatypesDecoder.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										65
									
								
								src/iso1/iso1EXIDatatypesDecoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/iso1/iso1EXIDatatypesDecoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@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_iso1_DATATYPES_DECODER_H | ||||
| #define EXI_iso1_DATATYPES_DECODER_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "iso1EXIDatatypes.h" | ||||
|  | ||||
| #if DEPLOY_ISO1_CODEC == SUPPORT_YES | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
| int decode_iso1ExiDocument(bitstream_t* stream, struct iso1EXIDocument* exiDoc); | ||||
|  | ||||
| #if DEPLOY_ISO1_CODEC_FRAGMENT == SUPPORT_YES | ||||
| int decode_iso1ExiFragment(bitstream_t* stream, struct iso1EXIFragment* exiFrag); | ||||
| #endif /* DEPLOY_ISO1_CODEC_FRAGMENT */ | ||||
|  | ||||
| #endif /* DEPLOY_ISO1_CODEC */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										14589
									
								
								src/iso1/iso1EXIDatatypesEncoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14589
									
								
								src/iso1/iso1EXIDatatypesEncoder.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										68
									
								
								src/iso1/iso1EXIDatatypesEncoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								src/iso1/iso1EXIDatatypesEncoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@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_iso1_DATATYPES_ENCODER_H | ||||
| #define EXI_iso1_DATATYPES_ENCODER_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #include "iso1EXIDatatypes.h" | ||||
|  | ||||
| #if DEPLOY_ISO1_CODEC == SUPPORT_YES | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
|  | ||||
| int encode_iso1ExiDocument(bitstream_t* stream, struct iso1EXIDocument* exiDoc); | ||||
|  | ||||
| #if DEPLOY_ISO1_CODEC_FRAGMENT == SUPPORT_YES | ||||
| int encode_iso1ExiFragment(bitstream_t* stream, struct iso1EXIFragment* exiFrag); | ||||
| #endif /* DEPLOY_ISO1_CODEC_FRAGMENT */ | ||||
|  | ||||
|  | ||||
| #endif /* DEPLOY_ISO1_CODEC */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										1496
									
								
								src/iso2/iso2EXIDatatypes.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1496
									
								
								src/iso2/iso2EXIDatatypes.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										4189
									
								
								src/iso2/iso2EXIDatatypes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4189
									
								
								src/iso2/iso2EXIDatatypes.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										86541
									
								
								src/iso2/iso2EXIDatatypesDecoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86541
									
								
								src/iso2/iso2EXIDatatypesDecoder.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										65
									
								
								src/iso2/iso2EXIDatatypesDecoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/iso2/iso2EXIDatatypesDecoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@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_iso2_DATATYPES_DECODER_H | ||||
| #define EXI_iso2_DATATYPES_DECODER_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "iso2EXIDatatypes.h" | ||||
|  | ||||
| #if DEPLOY_ISO2_CODEC == SUPPORT_YES | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
| int decode_iso2ExiDocument(bitstream_t* stream, struct iso2EXIDocument* exiDoc); | ||||
|  | ||||
| #if DEPLOY_ISO2_CODEC_FRAGMENT == SUPPORT_YES | ||||
| int decode_iso2ExiFragment(bitstream_t* stream, struct iso2EXIFragment* exiFrag); | ||||
| #endif /* DEPLOY_ISO2_CODEC_FRAGMENT */ | ||||
|  | ||||
| #endif /* DEPLOY_ISO2_CODEC */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										62632
									
								
								src/iso2/iso2EXIDatatypesEncoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62632
									
								
								src/iso2/iso2EXIDatatypesEncoder.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										68
									
								
								src/iso2/iso2EXIDatatypesEncoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								src/iso2/iso2EXIDatatypesEncoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@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_iso2_DATATYPES_ENCODER_H | ||||
| #define EXI_iso2_DATATYPES_ENCODER_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #include "iso2EXIDatatypes.h" | ||||
|  | ||||
| #if DEPLOY_ISO2_CODEC == SUPPORT_YES | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
|  | ||||
| int encode_iso2ExiDocument(bitstream_t* stream, struct iso2EXIDocument* exiDoc); | ||||
|  | ||||
| #if DEPLOY_ISO2_CODEC_FRAGMENT == SUPPORT_YES | ||||
| int encode_iso2ExiFragment(bitstream_t* stream, struct iso2EXIFragment* exiFrag); | ||||
| #endif /* DEPLOY_ISO2_CODEC_FRAGMENT */ | ||||
|  | ||||
|  | ||||
| #endif /* DEPLOY_ISO2_CODEC */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										47
									
								
								src/test/main.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/test/main.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 | ||||
|  * @author Sebastian.Kaebisch@siemens.com | ||||
|  * @version 0.9.4 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Switch for sample programs: EXI codec only or for entire V2G example</p> | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
|  | ||||
| #include "main.h" | ||||
|  | ||||
| int main(int argc, char *argv[]) { | ||||
|     /* disable buffering of output, especially when piped or redirected */ | ||||
|     setvbuf(stdout, NULL, _IONBF, 0); | ||||
|  | ||||
| #if CODE_VERSION == CODE_VERSION_EXI | ||||
| 	/* EXI codec only */ | ||||
| 	return main_databinder(argc, argv); | ||||
| #elif CODE_VERSION == CODE_VERSION_SAMPLE | ||||
| 	/* V2G client / service example  */ | ||||
| 	return main_example(argc, argv); | ||||
| #endif | ||||
|  | ||||
| } | ||||
|  | ||||
							
								
								
									
										42
									
								
								src/test/main.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								src/test/main.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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 | ||||
|  * @author Sebastian.Kaebisch@siemens.com | ||||
|  * @version 0.9.4 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
| #define CODE_VERSION_EXI 1 | ||||
| #define CODE_VERSION_SAMPLE 2 | ||||
| #define CODE_VERSION CODE_VERSION_EXI | ||||
|  | ||||
| #ifndef MAIN_H_ | ||||
| #define MAIN_H_ | ||||
|  | ||||
| #if CODE_VERSION == CODE_VERSION_EXI | ||||
| int main_databinder(int argc, char *argv[]); | ||||
| #elif CODE_VERSION == CODE_VERSION_SAMPLE | ||||
| int main_example(int argc, char *argv[]); | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										170
									
								
								src/test/main_databinder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										170
									
								
								src/test/main_databinder.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,170 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: V2G_CI_MsgDef.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /******************************************************************* | ||||
|  * | ||||
|  * <p>Sample program to illustrate how to read an EXI stream and | ||||
|  *  directly write it again to an output</p> | ||||
|  * | ||||
|  *  <p>e.g., <executable> in.exi out.exi</p> | ||||
|  ********************************************************************/ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stdarg.h> | ||||
| #include <stdlib.h> | ||||
|  | ||||
| /* schema-dependent */ | ||||
| #include "iso1EXIDatatypes.h" | ||||
| #if DEPLOY_ISO1_CODEC == SUPPORT_YES | ||||
| #include "iso1EXIDatatypesEncoder.h" | ||||
| #include "iso1EXIDatatypesDecoder.h" | ||||
| #endif /* DEPLOY_ISO1_CODEC == SUPPORT_YES */ | ||||
| #include "iso2EXIDatatypes.h" | ||||
| #if DEPLOY_ISO2_CODEC == SUPPORT_YES | ||||
| #include "iso2EXIDatatypesEncoder.h" | ||||
| #include "iso2EXIDatatypesDecoder.h" | ||||
| #endif /* DEPLOY_ISO2_CODEC == SUPPORT_YES */ | ||||
|  | ||||
| #include "ByteStream.h" | ||||
|  | ||||
| /** EXI Debug mode */ | ||||
| #define EXI_DEBUG 0 | ||||
|  | ||||
| #define BUFFER_SIZE 4096 | ||||
| uint8_t bufferIn[BUFFER_SIZE]; | ||||
| uint8_t bufferOut[BUFFER_SIZE]; | ||||
|  | ||||
|  | ||||
| #if EXI_DEBUG == 1 | ||||
| # define DEBUG_PRINTF(x) printf x | ||||
| #else | ||||
| # define DEBUG_PRINTF(x) do {} while (0) | ||||
| #endif | ||||
|  | ||||
|  | ||||
| int main_databinder(int argc, char *argv[]) { | ||||
|  | ||||
| #if DEPLOY_ISO1_CODEC == SUPPORT_YES | ||||
| 	struct iso1EXIDocument exi1Doc; | ||||
| #endif /* DEPLOY_ISO1_CODEC == SUPPORT_YES */ | ||||
| #if DEPLOY_ISO2_CODEC == SUPPORT_YES | ||||
| 	struct iso2EXIDocument exi2Doc; | ||||
| #endif /* DEPLOY_ISO2_CODEC == SUPPORT_YES */ | ||||
| 	int errn = 0; | ||||
|  | ||||
| 	bitstream_t iStream, oStream; | ||||
|  | ||||
| #if EXI_STREAM == BYTE_ARRAY | ||||
| 	size_t posDecode; | ||||
| 	size_t posEncode; | ||||
| #endif /* EXI_STREAM == BYTE_ARRAY */ | ||||
|  | ||||
|  | ||||
| #if EXI_DEBUG == 1 | ||||
| 	/* The Eclipse console has buffering problems on Windows e.g, Debug mode */ | ||||
| 	setvbuf(stdout, NULL, _IONBF, 0); | ||||
| 	setvbuf(stderr, NULL, _IONBF, 0); | ||||
| #endif /*EXI_DEBUG*/ | ||||
|  | ||||
| 	if (argc != 3) { | ||||
| 		printf("Usage: %s exiInput exiOutput\n", argv[0]); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| #if EXI_STREAM == BYTE_ARRAY | ||||
| 	/* input pos */ | ||||
| 	posDecode = 0; | ||||
| 	/* parse EXI stream to internal byte structures  */ | ||||
| 	errn = readBytesFromFile(argv[1], bufferIn, BUFFER_SIZE, &posDecode); | ||||
| 	if (errn != 0) { | ||||
| 		printf("Problems while reading file into buffer, err==%d\n", errn); | ||||
| 		return errn; | ||||
| 	} | ||||
| 	posDecode = 0; /* reset position */ | ||||
| #endif /* EXI_STREAM == BYTE_ARRAY */ | ||||
|  | ||||
| 	/* setup input stream */ | ||||
| #if EXI_STREAM == BYTE_ARRAY | ||||
| 	iStream.size = BUFFER_SIZE; | ||||
| 	iStream.data = bufferIn; | ||||
| 	iStream.pos = &posDecode; | ||||
| #endif /* EXI_STREAM == BYTE_ARRAY */ | ||||
|  | ||||
| 	iStream.buffer = 0; | ||||
| 	iStream.capacity = 0; | ||||
|  | ||||
|  | ||||
| 	printf("Start decoding EXI stream to databinding layer \n"); | ||||
| #if DEPLOY_ISO1_CODEC == SUPPORT_YES | ||||
| 	errn = decode_iso1ExiDocument(&iStream, &exi1Doc); | ||||
| #endif /* DEPLOY_ISO1_CODEC == SUPPORT_YES */ | ||||
| #if DEPLOY_ISO2_CODEC == SUPPORT_YES | ||||
| 	errn = decode_iso2ExiDocument(&iStream, &exi2Doc); | ||||
| #endif /* DEPLOY_ISO2_CODEC == SUPPORT_YES */ | ||||
| 	if (errn != 0) { | ||||
| 		printf("Problems while decoding EXI stream, err==%d\n", errn); | ||||
| 		return errn; | ||||
| 	} | ||||
|  | ||||
| #if EXI_STREAM == BYTE_ARRAY | ||||
| 	/* setup output stream */ | ||||
| 	posEncode = 0; | ||||
| 	oStream.size = BUFFER_SIZE; | ||||
| 	oStream.data = bufferOut; | ||||
| 	oStream.pos = &posEncode; | ||||
| #endif | ||||
|  | ||||
| 	oStream.buffer = 0; | ||||
| 	oStream.capacity = 8; | ||||
|  | ||||
| 	printf("Start encoding databinding layer to EXI \n"); | ||||
| #if DEPLOY_ISO1_CODEC == SUPPORT_YES | ||||
| 	errn = encode_iso1ExiDocument(&oStream, &exi1Doc); | ||||
| #endif /* DEPLOY_ISO1_CODEC == SUPPORT_YES */ | ||||
| #if DEPLOY_ISO2_CODEC == SUPPORT_YES | ||||
| 	errn = encode_iso2ExiDocument(&oStream, &exi2Doc); | ||||
| #endif /* DEPLOY_ISO2_CODEC == SUPPORT_YES */ | ||||
| 	if (errn != 0) { | ||||
| 		printf("Problems while encoding databinding layer, err==%d\n", errn); | ||||
| 		return errn; | ||||
| 	} | ||||
|  | ||||
| 	printf("EXI roundtrip done with success\n"); | ||||
| #if EXI_STREAM == BYTE_ARRAY | ||||
| 	/* write to file */ | ||||
| 	writeBytesToFile(oStream.data, posEncode, argv[2]); | ||||
| #endif | ||||
|  | ||||
|  | ||||
| 	return errn; | ||||
| } | ||||
|  | ||||
|  | ||||
							
								
								
									
										2572
									
								
								src/test/main_example.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2572
									
								
								src/test/main_example.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										92
									
								
								src/transport/v2gtp.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								src/transport/v2gtp.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,92 @@ | ||||
|  | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU Lesser General Public License as published | ||||
|  * by the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU Lesser General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Lesser General Public License | ||||
|  * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| /******************************************************************* | ||||
|  * | ||||
|  * @author Sebastian.Kaebisch@siemens.com | ||||
|  * @author Daniel.Peintner.EXT@siemens.com | ||||
|  * @version 0.9.4 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
| /* | ||||
|  * This file implements the v2gtp header writer and reader. | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #include <stdint.h> | ||||
| #include <stdlib.h> | ||||
| #include <stdint.h> | ||||
| #include <stdio.h> | ||||
| #include <math.h> | ||||
| #include <string.h> | ||||
|  | ||||
| #include "v2gtp.h" | ||||
|  | ||||
|  | ||||
| int write_v2gtpHeader(uint8_t* outStream, uint32_t outStreamLength, uint16_t payloadType) | ||||
| { | ||||
|  | ||||
| 	/* write v2gtp version number 1=byte */ | ||||
| 	outStream[0]=V2GTP_VERSION; | ||||
|  | ||||
| 	/* write inverse v2gtp version */ | ||||
| 	outStream[1]=V2GTP_VERSION_INV; | ||||
|  | ||||
|  | ||||
| 	/* write payload type */ | ||||
| 	outStream[3] = (uint8_t)(payloadType & 0xFF); | ||||
| 	outStream[2] = (uint8_t)(payloadType >> 8 & 0xFF); | ||||
|  | ||||
| 	/* write payload length */ | ||||
| 	outStream[7] = (uint8_t)(outStreamLength & 0xFF); | ||||
| 	outStream[6] = (uint8_t)(outStreamLength>>8 & 0xFF); | ||||
| 	outStream[5] = (uint8_t)(outStreamLength>>16 & 0xFF); | ||||
| 	outStream[4] = (uint8_t)(outStreamLength>>24 & 0xFF); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| int read_v2gtpHeader(uint8_t* inStream, uint32_t* payloadLength) | ||||
| { | ||||
| 	uint16_t payloadType=0; | ||||
|  | ||||
|  | ||||
| 	/* check, if we support this v2gtp version */ | ||||
| 	if(inStream[0]!=V2GTP_VERSION || inStream[1]!=V2GTP_VERSION_INV) | ||||
| 		return -1; | ||||
|  | ||||
|  | ||||
| 	/* check, if we support this payload type*/ | ||||
| 	payloadType = inStream[2]; | ||||
| 	payloadType = (payloadType << 8 | inStream[3]); | ||||
|  | ||||
| 	if(payloadType != V2GTP_EXI_TYPE) | ||||
| 		return -1; | ||||
|  | ||||
|  | ||||
| 	/* determine payload length*/ | ||||
| 	*payloadLength = inStream[4]; | ||||
| 	*payloadLength = (*payloadLength << 8 | inStream[5]); | ||||
| 	*payloadLength = (*payloadLength << 8 | inStream[6]); | ||||
| 	*payloadLength = (*payloadLength << 8 | inStream[7]); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
							
								
								
									
										55
									
								
								src/transport/v2gtp.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								src/transport/v2gtp.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | ||||
|  | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU Lesser General Public License as published | ||||
|  * by the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU Lesser General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Lesser General Public License | ||||
|  * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| /******************************************************************* | ||||
|  * | ||||
|  * @author Sebastian.Kaebisch@siemens.com | ||||
|  * @author Daniel.Peintner.EXT@siemens.com | ||||
|  * @version 0.9.4 | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #ifndef V2GTP_H_ | ||||
| #define V2GTP_H_ | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| /* generic V2GTP header length */ | ||||
| #define V2GTP_HEADER_LENGTH 8 | ||||
|  | ||||
| /* define V2GTP Version */ | ||||
| #define V2GTP_VERSION 0x01 | ||||
| #define V2GTP_VERSION_INV 0xFE | ||||
|  | ||||
| /* define V2GTP payload types*/ | ||||
| #define V2GTP_EXI_TYPE 0x8001 | ||||
|  | ||||
| int write_v2gtpHeader(uint8_t* outStream, uint32_t outStreamLength, uint16_t payloadType); | ||||
|  | ||||
| int read_v2gtpHeader(uint8_t* inStream, uint32_t* payloadLength); | ||||
|  | ||||
| #endif /* V2GTP_H_ */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
							
								
								
									
										255
									
								
								src/xmldsig/xmldsigEXIDatatypes.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										255
									
								
								src/xmldsig/xmldsigEXIDatatypes.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,255 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: xmldsig-core-schema.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "xmldsigEXIDatatypes.h" | ||||
| #include "EXITypes.h" | ||||
|  | ||||
|  | ||||
| #ifndef EXI_xmldsig_DATATYPES_C | ||||
| #define EXI_xmldsig_DATATYPES_C | ||||
|  | ||||
| #if DEPLOY_XMLDSIG_CODEC == SUPPORT_YES | ||||
|  | ||||
|  | ||||
| void init_xmldsigEXIDocument(struct xmldsigEXIDocument* exiDoc) { | ||||
| 	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; | ||||
| } | ||||
|  | ||||
|  | ||||
| #if DEPLOY_XMLDSIG_CODEC_FRAGMENT == SUPPORT_YES | ||||
| void init_xmldsigEXIFragment(struct xmldsigEXIFragment* exiFrag) { | ||||
| 	exiFrag->DigestValue_isUsed = 0u; | ||||
| 	exiFrag->X509Data_isUsed = 0u; | ||||
| 	exiFrag->KeyValue_isUsed = 0u; | ||||
| 	exiFrag->DigestMethod_isUsed = 0u; | ||||
| 	exiFrag->SPKISexp_isUsed = 0u; | ||||
| 	exiFrag->Transforms_isUsed = 0u; | ||||
| 	exiFrag->KeyName_isUsed = 0u; | ||||
| 	exiFrag->X509IssuerName_isUsed = 0u; | ||||
| 	exiFrag->MgmtData_isUsed = 0u; | ||||
| 	exiFrag->Reference_isUsed = 0u; | ||||
| 	exiFrag->SignatureProperties_isUsed = 0u; | ||||
| 	exiFrag->PGPKeyID_isUsed = 0u; | ||||
| 	exiFrag->PGPData_isUsed = 0u; | ||||
| 	exiFrag->DSAKeyValue_isUsed = 0u; | ||||
| 	exiFrag->SignatureValue_isUsed = 0u; | ||||
| 	exiFrag->KeyInfo_isUsed = 0u; | ||||
| 	exiFrag->SignatureProperty_isUsed = 0u; | ||||
| 	exiFrag->PGPKeyPacket_isUsed = 0u; | ||||
| 	exiFrag->PGPKeyPacket_isUsed = 0u; | ||||
| 	exiFrag->HMACOutputLength_isUsed = 0u; | ||||
| 	exiFrag->Exponent_isUsed = 0u; | ||||
| 	exiFrag->Manifest_isUsed = 0u; | ||||
| 	exiFrag->P_isUsed = 0u; | ||||
| 	exiFrag->CanonicalizationMethod_isUsed = 0u; | ||||
| 	exiFrag->Q_isUsed = 0u; | ||||
| 	exiFrag->Seed_isUsed = 0u; | ||||
| 	exiFrag->X509SubjectName_isUsed = 0u; | ||||
| 	exiFrag->X509Certificate_isUsed = 0u; | ||||
| 	exiFrag->RSAKeyValue_isUsed = 0u; | ||||
| 	exiFrag->X509IssuerSerial_isUsed = 0u; | ||||
| 	exiFrag->SPKIData_isUsed = 0u; | ||||
| 	exiFrag->G_isUsed = 0u; | ||||
| 	exiFrag->J_isUsed = 0u; | ||||
| 	exiFrag->SignedInfo_isUsed = 0u; | ||||
| 	exiFrag->X509SKI_isUsed = 0u; | ||||
| 	exiFrag->Transform_isUsed = 0u; | ||||
| 	exiFrag->XPath_isUsed = 0u; | ||||
| 	exiFrag->Object_isUsed = 0u; | ||||
| 	exiFrag->X509SerialNumber_isUsed = 0u; | ||||
| 	exiFrag->RetrievalMethod_isUsed = 0u; | ||||
| 	exiFrag->Modulus_isUsed = 0u; | ||||
| 	exiFrag->X509CRL_isUsed = 0u; | ||||
| 	exiFrag->Signature_isUsed = 0u; | ||||
| 	exiFrag->Y_isUsed = 0u; | ||||
| 	exiFrag->SignatureMethod_isUsed = 0u; | ||||
| 	exiFrag->PgenCounter_isUsed = 0u; | ||||
| } | ||||
| #endif /* DEPLOY_XMLDSIG_CODEC_FRAGMENT */ | ||||
|  | ||||
| void init_xmldsigCanonicalizationMethodType(struct xmldsigCanonicalizationMethodType* xmldsigCanonicalizationMethodType) { | ||||
| 	xmldsigCanonicalizationMethodType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigManifestType(struct xmldsigManifestType* xmldsigManifestType) { | ||||
| 	xmldsigManifestType->Id_isUsed = 0u; | ||||
| 	xmldsigManifestType->Reference.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigObjectType(struct xmldsigObjectType* xmldsigObjectType) { | ||||
| 	xmldsigObjectType->Id_isUsed = 0u; | ||||
| 	xmldsigObjectType->MimeType_isUsed = 0u; | ||||
| 	xmldsigObjectType->Encoding_isUsed = 0u; | ||||
| 	xmldsigObjectType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigTransformType(struct xmldsigTransformType* xmldsigTransformType) { | ||||
| 	xmldsigTransformType->ANY_isUsed = 0u; | ||||
| 	xmldsigTransformType->XPath.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigSignatureMethodType(struct xmldsigSignatureMethodType* xmldsigSignatureMethodType) { | ||||
| 	xmldsigSignatureMethodType->HMACOutputLength_isUsed = 0u; | ||||
| 	xmldsigSignatureMethodType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigDigestMethodType(struct xmldsigDigestMethodType* xmldsigDigestMethodType) { | ||||
| 	xmldsigDigestMethodType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigRetrievalMethodType(struct xmldsigRetrievalMethodType* xmldsigRetrievalMethodType) { | ||||
| 	xmldsigRetrievalMethodType->URI_isUsed = 0u; | ||||
| 	xmldsigRetrievalMethodType->Type_isUsed = 0u; | ||||
| 	xmldsigRetrievalMethodType->Transforms_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigSignatureValueType(struct xmldsigSignatureValueType* xmldsigSignatureValueType) { | ||||
| 	xmldsigSignatureValueType->Id_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigX509IssuerSerialType(struct xmldsigX509IssuerSerialType* xmldsigX509IssuerSerialType) { | ||||
| 	(void)xmldsigX509IssuerSerialType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_xmldsigSignedInfoType(struct xmldsigSignedInfoType* xmldsigSignedInfoType) { | ||||
| 	xmldsigSignedInfoType->Id_isUsed = 0u; | ||||
| 	xmldsigSignedInfoType->Reference.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigSignaturePropertiesType(struct xmldsigSignaturePropertiesType* xmldsigSignaturePropertiesType) { | ||||
| 	xmldsigSignaturePropertiesType->Id_isUsed = 0u; | ||||
| 	xmldsigSignaturePropertiesType->SignatureProperty.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigSignaturePropertyType(struct xmldsigSignaturePropertyType* xmldsigSignaturePropertyType) { | ||||
| 	xmldsigSignaturePropertyType->Id_isUsed = 0u; | ||||
| 	xmldsigSignaturePropertyType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigKeyValueType(struct xmldsigKeyValueType* xmldsigKeyValueType) { | ||||
| 	xmldsigKeyValueType->DSAKeyValue_isUsed = 0u; | ||||
| 	xmldsigKeyValueType->RSAKeyValue_isUsed = 0u; | ||||
| 	xmldsigKeyValueType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigRSAKeyValueType(struct xmldsigRSAKeyValueType* xmldsigRSAKeyValueType) { | ||||
| 	(void)xmldsigRSAKeyValueType; /* avoid unused warning */ | ||||
| } | ||||
|  | ||||
| void init_xmldsigPGPDataType(struct xmldsigPGPDataType* xmldsigPGPDataType) { | ||||
| 	xmldsigPGPDataType->PGPKeyID_isUsed = 0u; | ||||
| 	xmldsigPGPDataType->PGPKeyPacket_isUsed = 0u; | ||||
| 	xmldsigPGPDataType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigTransformsType(struct xmldsigTransformsType* xmldsigTransformsType) { | ||||
| 	xmldsigTransformsType->Transform.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigX509DataType(struct xmldsigX509DataType* xmldsigX509DataType) { | ||||
| 	xmldsigX509DataType->X509IssuerSerial.arrayLen = 0u; | ||||
| 	xmldsigX509DataType->X509SKI.arrayLen = 0u; | ||||
| 	xmldsigX509DataType->X509SubjectName.arrayLen = 0u; | ||||
| 	xmldsigX509DataType->X509Certificate.arrayLen = 0u; | ||||
| 	xmldsigX509DataType->X509CRL.arrayLen = 0u; | ||||
| 	xmldsigX509DataType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigSignatureType(struct xmldsigSignatureType* xmldsigSignatureType) { | ||||
| 	xmldsigSignatureType->Id_isUsed = 0u; | ||||
| 	xmldsigSignatureType->KeyInfo_isUsed = 0u; | ||||
| 	xmldsigSignatureType->Object.arrayLen = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigDSAKeyValueType(struct xmldsigDSAKeyValueType* xmldsigDSAKeyValueType) { | ||||
| 	xmldsigDSAKeyValueType->P_isUsed = 0u; | ||||
| 	xmldsigDSAKeyValueType->Q_isUsed = 0u; | ||||
| 	xmldsigDSAKeyValueType->G_isUsed = 0u; | ||||
| 	xmldsigDSAKeyValueType->J_isUsed = 0u; | ||||
| 	xmldsigDSAKeyValueType->Seed_isUsed = 0u; | ||||
| 	xmldsigDSAKeyValueType->PgenCounter_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigReferenceType(struct xmldsigReferenceType* xmldsigReferenceType) { | ||||
| 	xmldsigReferenceType->Id_isUsed = 0u; | ||||
| 	xmldsigReferenceType->URI_isUsed = 0u; | ||||
| 	xmldsigReferenceType->Type_isUsed = 0u; | ||||
| 	xmldsigReferenceType->Transforms_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigSPKIDataType(struct xmldsigSPKIDataType* xmldsigSPKIDataType) { | ||||
| 	xmldsigSPKIDataType->SPKISexp.arrayLen = 0u; | ||||
| 	xmldsigSPKIDataType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
| void init_xmldsigKeyInfoType(struct xmldsigKeyInfoType* xmldsigKeyInfoType) { | ||||
| 	xmldsigKeyInfoType->Id_isUsed = 0u; | ||||
| 	xmldsigKeyInfoType->KeyName.arrayLen = 0u; | ||||
| 	xmldsigKeyInfoType->KeyValue.arrayLen = 0u; | ||||
| 	xmldsigKeyInfoType->RetrievalMethod.arrayLen = 0u; | ||||
| 	xmldsigKeyInfoType->X509Data.arrayLen = 0u; | ||||
| 	xmldsigKeyInfoType->PGPData.arrayLen = 0u; | ||||
| 	xmldsigKeyInfoType->SPKIData.arrayLen = 0u; | ||||
| 	xmldsigKeyInfoType->MgmtData.arrayLen = 0u; | ||||
| 	xmldsigKeyInfoType->ANY_isUsed = 0u; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| #endif /* DEPLOY_XMLDSIG_CODEC */ | ||||
|  | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										935
									
								
								src/xmldsig/xmldsigEXIDatatypes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										935
									
								
								src/xmldsig/xmldsigEXIDatatypes.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,935 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: xmldsig-core-schema.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EXIDatatypes.h | ||||
|  * \brief 	Datatype definitions and structs for given XML Schema definitions and initialization methods | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_xmldsig_DATATYPES_H | ||||
| #define EXI_xmldsig_DATATYPES_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #define SUPPORT_YES 1 | ||||
| #define SUPPORT_NO 2 | ||||
| #define DEPLOY_XMLDSIG_CODEC SUPPORT_NO | ||||
| #define DEPLOY_XMLDSIG_CODEC_FRAGMENT SUPPORT_NO | ||||
|  | ||||
| #if DEPLOY_XMLDSIG_CODEC == SUPPORT_YES | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
|  | ||||
| /* Datatype definitions and structs for given XML Schema definitions */ | ||||
|  | ||||
| #define UNION_YES 1 | ||||
| #define UNION_NO 2 | ||||
| #define SAVE_MEMORY_WITH_UNNAMED_UNION UNION_YES | ||||
|  | ||||
| /* 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 xmldsigCanonicalizationMethodType_Algorithm_CHARACTERS_SIZE 65 + EXTRA_CHAR  | ||||
| #define xmldsigCanonicalizationMethodType_ANY_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigCanonicalizationMethodType { | ||||
| 	/* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigCanonicalizationMethodType_Algorithm_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  Algorithm ; | ||||
| 	/* element: WC[##any] */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigCanonicalizationMethodType_ANY_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ANY ; | ||||
| 	unsigned int ANY_isUsed:1; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigObjectType_Id_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigObjectType_MimeType_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigObjectType_Encoding_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigObjectType_ANY_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigObjectType { | ||||
| 	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigObjectType_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[xmldsigObjectType_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[xmldsigObjectType_Encoding_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  Encoding ; | ||||
| 	unsigned int Encoding_isUsed:1; | ||||
| 	/* element: WC[##any] */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigObjectType_ANY_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ANY ; | ||||
| 	unsigned int ANY_isUsed:1; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigTransformType_Algorithm_CHARACTERS_SIZE 65 + EXTRA_CHAR  | ||||
| #define xmldsigTransformType_ANY_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigTransformType_XPath_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigTransformType_XPath_ARRAY_SIZE 1 | ||||
| struct xmldsigTransformType { | ||||
| 	/* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigTransformType_Algorithm_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  Algorithm ; | ||||
| 	/* element: WC[##other:"http://www.w3.org/2000/09/xmldsig#"] */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigTransformType_ANY_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ANY ; | ||||
| 	unsigned int ANY_isUsed:1; | ||||
| 	/* element: "http://www.w3.org/2000/09/xmldsig#":XPath, http://www.w3.org/2001/XMLSchema,string */ | ||||
| 	struct { | ||||
| 		struct { | ||||
| 			exi_string_character_t characters[xmldsigTransformType_XPath_CHARACTERS_SIZE]; | ||||
| 			uint16_t charactersLen; | ||||
| 		}  array[xmldsigTransformType_XPath_ARRAY_SIZE]; | ||||
| 		uint16_t arrayLen; | ||||
| 	} XPath; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigSignatureMethodType_Algorithm_CHARACTERS_SIZE 65 + EXTRA_CHAR  | ||||
| #define xmldsigSignatureMethodType_ANY_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigSignatureMethodType { | ||||
| 	/* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigSignatureMethodType_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; | ||||
| 	/* element: WC[##other:"http://www.w3.org/2000/09/xmldsig#"] */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigSignatureMethodType_ANY_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ANY ; | ||||
| 	unsigned int ANY_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 xmldsigDigestMethodType_Algorithm_CHARACTERS_SIZE 65 + EXTRA_CHAR  | ||||
| #define xmldsigDigestMethodType_ANY_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigDigestMethodType { | ||||
| 	/* attribute: Algorithm {http://www.w3.org/2001/XMLSchema,anyURI} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigDigestMethodType_Algorithm_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  Algorithm ; | ||||
| 	/* element: WC[##other:"http://www.w3.org/2000/09/xmldsig#"] */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigDigestMethodType_ANY_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ANY ; | ||||
| 	unsigned int ANY_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 xmldsigSignatureValueType_Id_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigSignatureValueType_CONTENT_BYTES_SIZE 350 | ||||
| struct xmldsigSignatureValueType { | ||||
| 	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigSignatureValueType_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[xmldsigSignatureValueType_CONTENT_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  CONTENT ; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigX509IssuerSerialType_X509IssuerName_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigX509IssuerSerialType { | ||||
| 	/* element: "http://www.w3.org/2000/09/xmldsig#":X509IssuerName, http://www.w3.org/2001/XMLSchema,string */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigX509IssuerSerialType_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='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 xmldsigSignaturePropertyType_Target_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigSignaturePropertyType_Id_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigSignaturePropertyType_ANY_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigSignaturePropertyType { | ||||
| 	/* attribute: Target {http://www.w3.org/2001/XMLSchema,anyURI} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigSignaturePropertyType_Target_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  Target ; | ||||
| 	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigSignaturePropertyType_Id_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  Id ; | ||||
| 	unsigned int Id_isUsed:1; | ||||
| 	/* element: WC[##other:"http://www.w3.org/2000/09/xmldsig#"] */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigSignaturePropertyType_ANY_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ANY ; | ||||
| 	unsigned int ANY_isUsed:1; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigRSAKeyValueType_Modulus_BYTES_SIZE 350  | ||||
| #define xmldsigRSAKeyValueType_Exponent_BYTES_SIZE 350  | ||||
| struct xmldsigRSAKeyValueType { | ||||
| 	/* element: "http://www.w3.org/2000/09/xmldsig#":Modulus, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */ | ||||
| 	struct { | ||||
| 		uint8_t bytes[xmldsigRSAKeyValueType_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[xmldsigRSAKeyValueType_Exponent_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  Exponent ; | ||||
| }; | ||||
|  | ||||
| /* Complex type name='http://www.w3.org/2000/09/xmldsig#,PGPDataType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("http://www.w3.org/2000/09/xmldsig#":PGPKeyID,"http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})|("http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED}))',  derivedBy='RESTRICTION'.  */ | ||||
| #define xmldsigPGPDataType_PGPKeyID_BYTES_SIZE 350  | ||||
| #define xmldsigPGPDataType_PGPKeyPacket_BYTES_SIZE 350  | ||||
| #define xmldsigPGPDataType_ANY_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigPGPDataType { | ||||
| 	/* element: "http://www.w3.org/2000/09/xmldsig#":PGPKeyID, http://www.w3.org/2001/XMLSchema,base64Binary */ | ||||
| 	struct { | ||||
| 		uint8_t bytes[xmldsigPGPDataType_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[xmldsigPGPDataType_PGPKeyPacket_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  PGPKeyPacket ; | ||||
| 	unsigned int PGPKeyPacket_isUsed:1; | ||||
| 	/* element: WC[##other:"http://www.w3.org/2000/09/xmldsig#"] */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigPGPDataType_ANY_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ANY ; | ||||
| 	unsigned int ANY_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 xmldsigTransformsType_Transform_ARRAY_SIZE 1 | ||||
| struct xmldsigTransformsType { | ||||
| 	/* 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 xmldsigTransformType array[xmldsigTransformsType_Transform_ARRAY_SIZE]; | ||||
| 		uint16_t arrayLen; | ||||
| 	} Transform; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigX509DataType_X509IssuerSerial_ARRAY_SIZE 1 | ||||
| #define xmldsigX509DataType_X509SKI_BYTES_SIZE 350  | ||||
| #define xmldsigX509DataType_X509SKI_ARRAY_SIZE 1 | ||||
| #define xmldsigX509DataType_X509SubjectName_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigX509DataType_X509SubjectName_ARRAY_SIZE 1 | ||||
| #define xmldsigX509DataType_X509Certificate_BYTES_SIZE 350  | ||||
| #define xmldsigX509DataType_X509Certificate_ARRAY_SIZE 1 | ||||
| #define xmldsigX509DataType_X509CRL_BYTES_SIZE 350  | ||||
| #define xmldsigX509DataType_X509CRL_ARRAY_SIZE 1 | ||||
| #define xmldsigX509DataType_ANY_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigX509DataType { | ||||
| 	/* 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 xmldsigX509IssuerSerialType array[xmldsigX509DataType_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[xmldsigX509DataType_X509SKI_BYTES_SIZE]; | ||||
| 			uint16_t bytesLen; | ||||
| 		}  array[xmldsigX509DataType_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[xmldsigX509DataType_X509SubjectName_CHARACTERS_SIZE]; | ||||
| 			uint16_t charactersLen; | ||||
| 		}  array[xmldsigX509DataType_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[xmldsigX509DataType_X509Certificate_BYTES_SIZE]; | ||||
| 			uint16_t bytesLen; | ||||
| 		}  array[xmldsigX509DataType_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[xmldsigX509DataType_X509CRL_BYTES_SIZE]; | ||||
| 			uint16_t bytesLen; | ||||
| 		}  array[xmldsigX509DataType_X509CRL_ARRAY_SIZE]; | ||||
| 		uint16_t arrayLen; | ||||
| 	} X509CRL; | ||||
| 	/* element: WC[##other:"http://www.w3.org/2000/09/xmldsig#"] */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigX509DataType_ANY_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ANY ; | ||||
| 	unsigned int ANY_isUsed:1; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigDSAKeyValueType_P_BYTES_SIZE 350  | ||||
| #define xmldsigDSAKeyValueType_Q_BYTES_SIZE 350  | ||||
| #define xmldsigDSAKeyValueType_G_BYTES_SIZE 350  | ||||
| #define xmldsigDSAKeyValueType_Y_BYTES_SIZE 350  | ||||
| #define xmldsigDSAKeyValueType_J_BYTES_SIZE 350  | ||||
| #define xmldsigDSAKeyValueType_Seed_BYTES_SIZE 350  | ||||
| #define xmldsigDSAKeyValueType_PgenCounter_BYTES_SIZE 350  | ||||
| struct xmldsigDSAKeyValueType { | ||||
| 	/* element: "http://www.w3.org/2000/09/xmldsig#":P, http://www.w3.org/2000/09/xmldsig#,CryptoBinary */ | ||||
| 	struct { | ||||
| 		uint8_t bytes[xmldsigDSAKeyValueType_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[xmldsigDSAKeyValueType_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[xmldsigDSAKeyValueType_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[xmldsigDSAKeyValueType_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[xmldsigDSAKeyValueType_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[xmldsigDSAKeyValueType_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[xmldsigDSAKeyValueType_PgenCounter_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  PgenCounter ; | ||||
| 	unsigned int PgenCounter_isUsed:1; | ||||
| }; | ||||
|  | ||||
| /* Complex type name='http://www.w3.org/2000/09/xmldsig#,ReferenceType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1},"http://www.w3.org/2000/09/xmldsig#":DigestMethod,"http://www.w3.org/2000/09/xmldsig#":DigestValue)',  derivedBy='RESTRICTION'.  */ | ||||
| #define xmldsigReferenceType_Id_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigReferenceType_URI_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigReferenceType_Type_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigReferenceType_DigestValue_BYTES_SIZE 350  | ||||
| struct xmldsigReferenceType { | ||||
| 	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigReferenceType_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[xmldsigReferenceType_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[xmldsigReferenceType_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 xmldsigTransformsType 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 xmldsigDigestMethodType DigestMethod ; | ||||
| 	/* element: "http://www.w3.org/2000/09/xmldsig#":DigestValue, http://www.w3.org/2000/09/xmldsig#,DigestValueType */ | ||||
| 	struct { | ||||
| 		uint8_t bytes[xmldsigReferenceType_DigestValue_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  DigestValue ; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigSPKIDataType_SPKISexp_BYTES_SIZE 350  | ||||
| #define xmldsigSPKIDataType_SPKISexp_ARRAY_SIZE 1 | ||||
| #define xmldsigSPKIDataType_ANY_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigSPKIDataType { | ||||
| 	/* element: "http://www.w3.org/2000/09/xmldsig#":SPKISexp, http://www.w3.org/2001/XMLSchema,base64Binary */ | ||||
| 	struct { | ||||
| 		struct { | ||||
| 			uint8_t bytes[xmldsigSPKIDataType_SPKISexp_BYTES_SIZE]; | ||||
| 			uint16_t bytesLen; | ||||
| 		}  array[xmldsigSPKIDataType_SPKISexp_ARRAY_SIZE]; | ||||
| 		uint16_t arrayLen; | ||||
| 	} SPKISexp; | ||||
| 	/* element: WC[##other:"http://www.w3.org/2000/09/xmldsig#"] */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigSPKIDataType_ANY_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ANY ; | ||||
| 	unsigned int ANY_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 xmldsigManifestType_Id_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigManifestType_Reference_ARRAY_SIZE 1 | ||||
| struct xmldsigManifestType { | ||||
| 	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigManifestType_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 xmldsigReferenceType array[xmldsigManifestType_Reference_ARRAY_SIZE]; | ||||
| 		uint16_t arrayLen; | ||||
| 	} Reference; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigRetrievalMethodType_URI_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigRetrievalMethodType_Type_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigRetrievalMethodType { | ||||
| 	/* attribute: URI {http://www.w3.org/2001/XMLSchema,anyURI} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigRetrievalMethodType_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[xmldsigRetrievalMethodType_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 xmldsigTransformsType Transforms ; | ||||
| 	unsigned int Transforms_isUsed:1; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigSignedInfoType_Id_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigSignedInfoType_Reference_ARRAY_SIZE 1 | ||||
| struct xmldsigSignedInfoType { | ||||
| 	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigSignedInfoType_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 xmldsigCanonicalizationMethodType 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 xmldsigSignatureMethodType 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 xmldsigReferenceType array[xmldsigSignedInfoType_Reference_ARRAY_SIZE]; | ||||
| 		uint16_t arrayLen; | ||||
| 	} Reference; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigSignaturePropertiesType_Id_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigSignaturePropertiesType_SignatureProperty_ARRAY_SIZE 1 | ||||
| struct xmldsigSignaturePropertiesType { | ||||
| 	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigSignaturePropertiesType_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 xmldsigSignaturePropertyType array[xmldsigSignaturePropertiesType_SignatureProperty_ARRAY_SIZE]; | ||||
| 		uint16_t arrayLen; | ||||
| 	} SignatureProperty; | ||||
| }; | ||||
|  | ||||
| /* 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'.  */ | ||||
| #define xmldsigKeyValueType_ANY_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigKeyValueType { | ||||
| 	/* 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 xmldsigDSAKeyValueType 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 xmldsigRSAKeyValueType RSAKeyValue ; | ||||
| 	unsigned int RSAKeyValue_isUsed:1; | ||||
| 	/* element: WC[##other:"http://www.w3.org/2000/09/xmldsig#"] */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigKeyValueType_ANY_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ANY ; | ||||
| 	unsigned int ANY_isUsed:1; | ||||
| }; | ||||
|  | ||||
| /* 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 xmldsigKeyInfoType_Id_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigKeyInfoType_KeyName_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigKeyInfoType_KeyName_ARRAY_SIZE 1 | ||||
| #define xmldsigKeyInfoType_KeyValue_ARRAY_SIZE 1 | ||||
| #define xmldsigKeyInfoType_RetrievalMethod_ARRAY_SIZE 1 | ||||
| #define xmldsigKeyInfoType_X509Data_ARRAY_SIZE 1 | ||||
| #define xmldsigKeyInfoType_PGPData_ARRAY_SIZE 1 | ||||
| #define xmldsigKeyInfoType_SPKIData_ARRAY_SIZE 1 | ||||
| #define xmldsigKeyInfoType_MgmtData_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigKeyInfoType_MgmtData_ARRAY_SIZE 1 | ||||
| #define xmldsigKeyInfoType_ANY_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| struct xmldsigKeyInfoType { | ||||
| 	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigKeyInfoType_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[xmldsigKeyInfoType_KeyName_CHARACTERS_SIZE]; | ||||
| 			uint16_t charactersLen; | ||||
| 		}  array[xmldsigKeyInfoType_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 xmldsigKeyValueType array[xmldsigKeyInfoType_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 xmldsigRetrievalMethodType array[xmldsigKeyInfoType_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 xmldsigX509DataType array[xmldsigKeyInfoType_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 xmldsigPGPDataType array[xmldsigKeyInfoType_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 xmldsigSPKIDataType array[xmldsigKeyInfoType_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[xmldsigKeyInfoType_MgmtData_CHARACTERS_SIZE]; | ||||
| 			uint16_t charactersLen; | ||||
| 		}  array[xmldsigKeyInfoType_MgmtData_ARRAY_SIZE]; | ||||
| 		uint16_t arrayLen; | ||||
| 	} MgmtData; | ||||
| 	/* element: WC[##other:"http://www.w3.org/2000/09/xmldsig#"] */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigKeyInfoType_ANY_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  ANY ; | ||||
| 	unsigned int ANY_isUsed:1; | ||||
| }; | ||||
|  | ||||
| /* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":SignedInfo,"http://www.w3.org/2000/09/xmldsig#":SignatureValue,"http://www.w3.org/2000/09/xmldsig#":KeyInfo{0-1},"http://www.w3.org/2000/09/xmldsig#":Object{0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */ | ||||
| #define xmldsigSignatureType_Id_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define xmldsigSignatureType_Object_ARRAY_SIZE 1 | ||||
| struct xmldsigSignatureType { | ||||
| 	/* attribute: Id {http://www.w3.org/2001/XMLSchema,ID} */ | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[xmldsigSignatureType_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 xmldsigSignedInfoType 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 xmldsigSignatureValueType 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 xmldsigKeyInfoType 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 xmldsigObjectType array[xmldsigSignatureType_Object_ARRAY_SIZE]; | ||||
| 		uint16_t arrayLen; | ||||
| 	} Object; | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| #define EXIDocument_MgmtData_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define EXIDocument_KeyName_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define EXIDocument_DigestValue_BYTES_SIZE 350  | ||||
| #define EXIFragment_DigestValue_BYTES_SIZE 350  | ||||
| #define EXIFragment_SPKISexp_BYTES_SIZE 350  | ||||
| #define EXIFragment_KeyName_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define EXIFragment_X509IssuerName_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define EXIFragment_MgmtData_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define EXIFragment_PGPKeyID_BYTES_SIZE 350  | ||||
| #define EXIFragment_PGPKeyPacket_BYTES_SIZE 350  | ||||
| #define EXIFragment_Exponent_BYTES_SIZE 350  | ||||
| #define EXIFragment_P_BYTES_SIZE 350  | ||||
| #define EXIFragment_Q_BYTES_SIZE 350  | ||||
| #define EXIFragment_Seed_BYTES_SIZE 350  | ||||
| #define EXIFragment_X509SubjectName_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define EXIFragment_X509Certificate_BYTES_SIZE 350  | ||||
| #define EXIFragment_G_BYTES_SIZE 350  | ||||
| #define EXIFragment_J_BYTES_SIZE 350  | ||||
| #define EXIFragment_X509SKI_BYTES_SIZE 350  | ||||
| #define EXIFragment_XPath_CHARACTERS_SIZE 50 + EXTRA_CHAR  | ||||
| #define EXIFragment_Modulus_BYTES_SIZE 350  | ||||
| #define EXIFragment_X509CRL_BYTES_SIZE 350  | ||||
| #define EXIFragment_Y_BYTES_SIZE 350  | ||||
| #define EXIFragment_PgenCounter_BYTES_SIZE 350  | ||||
|  | ||||
|  | ||||
| /* Global elements of EXI Document */ | ||||
| struct xmldsigEXIDocument { | ||||
| #if SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES | ||||
| 	union { | ||||
| #endif /* SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES */  | ||||
| 	struct xmldsigSignaturePropertyType SignatureProperty ; | ||||
| 	struct xmldsigDSAKeyValueType DSAKeyValue ; | ||||
| 	struct xmldsigSignaturePropertiesType SignatureProperties ; | ||||
| 	struct xmldsigKeyValueType KeyValue ; | ||||
| 	struct xmldsigTransformsType Transforms ; | ||||
| 	struct xmldsigDigestMethodType DigestMethod ; | ||||
| 	struct xmldsigSignatureType Signature ; | ||||
| 	struct xmldsigRetrievalMethodType RetrievalMethod ; | ||||
| 	struct xmldsigManifestType Manifest ; | ||||
| 	struct xmldsigReferenceType Reference ; | ||||
| 	struct xmldsigCanonicalizationMethodType CanonicalizationMethod ; | ||||
| 	struct xmldsigRSAKeyValueType RSAKeyValue ; | ||||
| 	struct xmldsigTransformType Transform ; | ||||
| 	struct xmldsigPGPDataType PGPData ; | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[EXIDocument_MgmtData_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  MgmtData ; | ||||
| 	struct xmldsigSignatureMethodType SignatureMethod ; | ||||
| 	struct xmldsigKeyInfoType KeyInfo ; | ||||
| 	struct xmldsigSPKIDataType SPKIData ; | ||||
| 	struct xmldsigX509DataType X509Data ; | ||||
| 	struct xmldsigSignatureValueType 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 xmldsigSignedInfoType SignedInfo ; | ||||
| 	struct xmldsigObjectType Object ; | ||||
| #if SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES | ||||
| 	}; | ||||
| #endif /* SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES */  | ||||
| 	unsigned int SignatureProperty_isUsed:1; | ||||
| 	unsigned int DSAKeyValue_isUsed:1; | ||||
| 	unsigned int SignatureProperties_isUsed:1; | ||||
| 	unsigned int KeyValue_isUsed:1; | ||||
| 	unsigned int Transforms_isUsed:1; | ||||
| 	unsigned int DigestMethod_isUsed:1; | ||||
| 	unsigned int Signature_isUsed:1; | ||||
| 	unsigned int RetrievalMethod_isUsed:1; | ||||
| 	unsigned int Manifest_isUsed:1; | ||||
| 	unsigned int Reference_isUsed:1; | ||||
| 	unsigned int CanonicalizationMethod_isUsed:1; | ||||
| 	unsigned int RSAKeyValue_isUsed:1; | ||||
| 	unsigned int Transform_isUsed:1; | ||||
| 	unsigned int PGPData_isUsed:1; | ||||
| 	unsigned int MgmtData_isUsed:1; | ||||
| 	unsigned int SignatureMethod_isUsed:1; | ||||
| 	unsigned int KeyInfo_isUsed:1; | ||||
| 	unsigned int SPKIData_isUsed:1; | ||||
| 	unsigned int X509Data_isUsed:1; | ||||
| 	unsigned int SignatureValue_isUsed:1; | ||||
| 	unsigned int KeyName_isUsed:1; | ||||
| 	unsigned int DigestValue_isUsed:1; | ||||
| 	unsigned int SignedInfo_isUsed:1; | ||||
| 	unsigned int Object_isUsed:1; | ||||
|  | ||||
|  | ||||
| 	int _warning_; | ||||
| }; | ||||
|  | ||||
|  | ||||
| #if DEPLOY_XMLDSIG_CODEC_FRAGMENT == SUPPORT_YES | ||||
| /* Possible elements of EXI Fragment */ | ||||
| struct xmldsigEXIFragment { | ||||
| #if SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES | ||||
| 	union { | ||||
| #endif /* SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES */  | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_DigestValue_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  DigestValue ; | ||||
| 	struct xmldsigX509DataType X509Data ; | ||||
| 	struct xmldsigKeyValueType KeyValue ; | ||||
| 	struct xmldsigDigestMethodType DigestMethod ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_SPKISexp_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  SPKISexp ; | ||||
| 	struct xmldsigTransformsType Transforms ; | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[EXIFragment_KeyName_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  KeyName ; | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[EXIFragment_X509IssuerName_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  X509IssuerName ; | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[EXIFragment_MgmtData_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  MgmtData ; | ||||
| 	struct xmldsigReferenceType Reference ; | ||||
| 	struct xmldsigSignaturePropertiesType SignatureProperties ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_PGPKeyID_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  PGPKeyID ; | ||||
| 	struct xmldsigPGPDataType PGPData ; | ||||
| 	struct xmldsigDSAKeyValueType DSAKeyValue ; | ||||
| 	struct xmldsigSignatureValueType SignatureValue ; | ||||
| 	struct xmldsigKeyInfoType KeyInfo ; | ||||
| 	struct xmldsigSignaturePropertyType SignatureProperty ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_PGPKeyPacket_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  PGPKeyPacket ; | ||||
| 	int64_t HMACOutputLength ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_Exponent_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  Exponent ; | ||||
| 	struct xmldsigManifestType Manifest ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_P_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  P ; | ||||
| 	struct xmldsigCanonicalizationMethodType CanonicalizationMethod ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_Q_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  Q ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_Seed_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  Seed ; | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[EXIFragment_X509SubjectName_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  X509SubjectName ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_X509Certificate_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  X509Certificate ; | ||||
| 	struct xmldsigRSAKeyValueType RSAKeyValue ; | ||||
| 	struct xmldsigX509IssuerSerialType X509IssuerSerial ; | ||||
| 	struct xmldsigSPKIDataType SPKIData ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_G_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  G ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_J_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  J ; | ||||
| 	struct xmldsigSignedInfoType SignedInfo ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_X509SKI_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  X509SKI ; | ||||
| 	struct xmldsigTransformType Transform ; | ||||
| 	struct { | ||||
| 		exi_string_character_t characters[EXIFragment_XPath_CHARACTERS_SIZE]; | ||||
| 		uint16_t charactersLen; | ||||
| 	}  XPath ; | ||||
| 	struct xmldsigObjectType Object ; | ||||
| 	int64_t X509SerialNumber ; | ||||
| 	struct xmldsigRetrievalMethodType RetrievalMethod ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_Modulus_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  Modulus ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_X509CRL_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  X509CRL ; | ||||
| 	struct xmldsigSignatureType Signature ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_Y_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  Y ; | ||||
| 	struct xmldsigSignatureMethodType SignatureMethod ; | ||||
| 	struct { | ||||
| 		uint8_t bytes[EXIFragment_PgenCounter_BYTES_SIZE]; | ||||
| 		uint16_t bytesLen; | ||||
| 	}  PgenCounter ; | ||||
| #if SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES | ||||
| 	}; | ||||
| #endif /* SAVE_MEMORY_WITH_UNNAMED_UNION == UNION_YES */  | ||||
| 	unsigned int DigestValue_isUsed:1; | ||||
| 	unsigned int X509Data_isUsed:1; | ||||
| 	unsigned int KeyValue_isUsed:1; | ||||
| 	unsigned int DigestMethod_isUsed:1; | ||||
| 	unsigned int SPKISexp_isUsed:1; | ||||
| 	unsigned int Transforms_isUsed:1; | ||||
| 	unsigned int KeyName_isUsed:1; | ||||
| 	unsigned int X509IssuerName_isUsed:1; | ||||
| 	unsigned int MgmtData_isUsed:1; | ||||
| 	unsigned int Reference_isUsed:1; | ||||
| 	unsigned int SignatureProperties_isUsed:1; | ||||
| 	unsigned int PGPKeyID_isUsed:1; | ||||
| 	unsigned int PGPData_isUsed:1; | ||||
| 	unsigned int DSAKeyValue_isUsed:1; | ||||
| 	unsigned int SignatureValue_isUsed:1; | ||||
| 	unsigned int KeyInfo_isUsed:1; | ||||
| 	unsigned int SignatureProperty_isUsed:1; | ||||
| 	unsigned int PGPKeyPacket_isUsed:1; | ||||
| 	unsigned int HMACOutputLength_isUsed:1; | ||||
| 	unsigned int Exponent_isUsed:1; | ||||
| 	unsigned int Manifest_isUsed:1; | ||||
| 	unsigned int P_isUsed:1; | ||||
| 	unsigned int CanonicalizationMethod_isUsed:1; | ||||
| 	unsigned int Q_isUsed:1; | ||||
| 	unsigned int Seed_isUsed:1; | ||||
| 	unsigned int X509SubjectName_isUsed:1; | ||||
| 	unsigned int X509Certificate_isUsed:1; | ||||
| 	unsigned int RSAKeyValue_isUsed:1; | ||||
| 	unsigned int X509IssuerSerial_isUsed:1; | ||||
| 	unsigned int SPKIData_isUsed:1; | ||||
| 	unsigned int G_isUsed:1; | ||||
| 	unsigned int J_isUsed:1; | ||||
| 	unsigned int SignedInfo_isUsed:1; | ||||
| 	unsigned int X509SKI_isUsed:1; | ||||
| 	unsigned int Transform_isUsed:1; | ||||
| 	unsigned int XPath_isUsed:1; | ||||
| 	unsigned int Object_isUsed:1; | ||||
| 	unsigned int X509SerialNumber_isUsed:1; | ||||
| 	unsigned int RetrievalMethod_isUsed:1; | ||||
| 	unsigned int Modulus_isUsed:1; | ||||
| 	unsigned int X509CRL_isUsed:1; | ||||
| 	unsigned int Signature_isUsed:1; | ||||
| 	unsigned int Y_isUsed:1; | ||||
| 	unsigned int SignatureMethod_isUsed:1; | ||||
| 	unsigned int PgenCounter_isUsed:1; | ||||
|  | ||||
|  | ||||
| 	int _warning_; | ||||
| }; | ||||
| #endif /* DEPLOY_XMLDSIG_CODEC_FRAGMENT */ | ||||
|  | ||||
|  | ||||
| /* Initialization methods for structs */ | ||||
|  | ||||
| void init_xmldsigEXIDocument(struct xmldsigEXIDocument* exiDoc); | ||||
| #if DEPLOY_XMLDSIG_CODEC_FRAGMENT == SUPPORT_YES | ||||
| void init_xmldsigEXIFragment(struct xmldsigEXIFragment* exiFrag); | ||||
| #endif /* DEPLOY_XMLDSIG_CODEC_FRAGMENT */ | ||||
| void init_xmldsigCanonicalizationMethodType(struct xmldsigCanonicalizationMethodType* xmldsigCanonicalizationMethodType); | ||||
| void init_xmldsigManifestType(struct xmldsigManifestType* xmldsigManifestType); | ||||
| void init_xmldsigObjectType(struct xmldsigObjectType* xmldsigObjectType); | ||||
| void init_xmldsigTransformType(struct xmldsigTransformType* xmldsigTransformType); | ||||
| void init_xmldsigSignatureMethodType(struct xmldsigSignatureMethodType* xmldsigSignatureMethodType); | ||||
| void init_xmldsigDigestMethodType(struct xmldsigDigestMethodType* xmldsigDigestMethodType); | ||||
| void init_xmldsigRetrievalMethodType(struct xmldsigRetrievalMethodType* xmldsigRetrievalMethodType); | ||||
| void init_xmldsigSignatureValueType(struct xmldsigSignatureValueType* xmldsigSignatureValueType); | ||||
| void init_xmldsigX509IssuerSerialType(struct xmldsigX509IssuerSerialType* xmldsigX509IssuerSerialType); | ||||
| void init_xmldsigSignedInfoType(struct xmldsigSignedInfoType* xmldsigSignedInfoType); | ||||
| void init_xmldsigSignaturePropertiesType(struct xmldsigSignaturePropertiesType* xmldsigSignaturePropertiesType); | ||||
| void init_xmldsigSignaturePropertyType(struct xmldsigSignaturePropertyType* xmldsigSignaturePropertyType); | ||||
| void init_xmldsigKeyValueType(struct xmldsigKeyValueType* xmldsigKeyValueType); | ||||
| void init_xmldsigRSAKeyValueType(struct xmldsigRSAKeyValueType* xmldsigRSAKeyValueType); | ||||
| void init_xmldsigPGPDataType(struct xmldsigPGPDataType* xmldsigPGPDataType); | ||||
| void init_xmldsigTransformsType(struct xmldsigTransformsType* xmldsigTransformsType); | ||||
| void init_xmldsigX509DataType(struct xmldsigX509DataType* xmldsigX509DataType); | ||||
| void init_xmldsigSignatureType(struct xmldsigSignatureType* xmldsigSignatureType); | ||||
| void init_xmldsigDSAKeyValueType(struct xmldsigDSAKeyValueType* xmldsigDSAKeyValueType); | ||||
| void init_xmldsigReferenceType(struct xmldsigReferenceType* xmldsigReferenceType); | ||||
| void init_xmldsigSPKIDataType(struct xmldsigSPKIDataType* xmldsigSPKIDataType); | ||||
| void init_xmldsigKeyInfoType(struct xmldsigKeyInfoType* xmldsigKeyInfoType); | ||||
|  | ||||
|  | ||||
| #endif /* DEPLOY_XMLDSIG_CODEC */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										4919
									
								
								src/xmldsig/xmldsigEXIDatatypesDecoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4919
									
								
								src/xmldsig/xmldsigEXIDatatypesDecoder.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										65
									
								
								src/xmldsig/xmldsigEXIDatatypesDecoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/xmldsig/xmldsigEXIDatatypesDecoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: xmldsig-core-schema.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EXIDatatypesDecoder.h | ||||
|  * \brief 	Decoder for datatype definitions | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_xmldsig_DATATYPES_DECODER_H | ||||
| #define EXI_xmldsig_DATATYPES_DECODER_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "xmldsigEXIDatatypes.h" | ||||
|  | ||||
| #if DEPLOY_XMLDSIG_CODEC == SUPPORT_YES | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
| int decode_xmldsigExiDocument(bitstream_t* stream, struct xmldsigEXIDocument* exiDoc); | ||||
|  | ||||
| #if DEPLOY_XMLDSIG_CODEC_FRAGMENT == SUPPORT_YES | ||||
| int decode_xmldsigExiFragment(bitstream_t* stream, struct xmldsigEXIFragment* exiFrag); | ||||
| #endif /* DEPLOY_XMLDSIG_CODEC_FRAGMENT */ | ||||
|  | ||||
| #endif /* DEPLOY_XMLDSIG_CODEC */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										3589
									
								
								src/xmldsig/xmldsigEXIDatatypesEncoder.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3589
									
								
								src/xmldsig/xmldsigEXIDatatypesEncoder.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										66
									
								
								src/xmldsig/xmldsigEXIDatatypesEncoder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								src/xmldsig/xmldsigEXIDatatypesEncoder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| /* | ||||
|  * Copyright (C) 2007-2018 Siemens AG | ||||
|  * | ||||
|  * This 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.4  | ||||
|  * @contact Richard.Kuntschke@siemens.com | ||||
|  * | ||||
|  * <p>Code generated by EXIdizer</p> | ||||
|  * <p>Schema: xmldsig-core-schema.xsd</p> | ||||
|  * | ||||
|  * | ||||
|  ********************************************************************/ | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * \file 	EXIDatatypesEncoder.h | ||||
|  * \brief 	Encoder for datatype definitions | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef EXI_xmldsig_DATATYPES_ENCODER_H | ||||
| #define EXI_xmldsig_DATATYPES_ENCODER_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "xmldsigEXIDatatypes.h" | ||||
|  | ||||
| #if DEPLOY_XMLDSIG_CODEC == SUPPORT_YES | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| #include "EXITypes.h" | ||||
|  | ||||
| int encode_xmldsigExiDocument(bitstream_t* stream, struct xmldsigEXIDocument* exiDoc); | ||||
|  | ||||
| #if DEPLOY_XMLDSIG_CODEC_FRAGMENT == SUPPORT_YES | ||||
| int encode_xmldsigExiFragment(bitstream_t* stream, struct xmldsigEXIFragment* exiFrag); | ||||
| #endif /* DEPLOY_XMLDSIG_CODEC_FRAGMENT */ | ||||
|  | ||||
|  | ||||
| #endif /* DEPLOY_XMLDSIG_CODEC */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
		Reference in New Issue
	
	Block a user