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:
2025-09-09 23:46:47 +09:00
commit 7edb3cde54
172 changed files with 249903 additions and 0 deletions

View 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

View 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

View 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

View 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

View 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

View 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
View 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

View 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
View 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

View 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
View 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
View 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

File diff suppressed because it is too large Load Diff

441
src/codec/DecoderChannel.h Normal file
View 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
View 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 */

View 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

View 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

View 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

View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View 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

File diff suppressed because one or more lines are too long

View 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
View 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

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View 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

File diff suppressed because one or more lines are too long

View 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

File diff suppressed because it is too large Load Diff

4189
src/iso2/iso2EXIDatatypes.h Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View 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

File diff suppressed because one or more lines are too long

View 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
View 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
View 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
View 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

File diff suppressed because it is too large Load Diff

92
src/transport/v2gtp.c Normal file
View 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
View 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

View 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

View 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

File diff suppressed because it is too large Load Diff

View 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

File diff suppressed because it is too large Load Diff

View 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