|
|
@@ -0,0 +1,7504 @@
|
|
|
+/*
|
|
|
+ * Copyright (C) 2007-2013 Siemens AG
|
|
|
+ *
|
|
|
+ * This program is free software: you can redistribute it and/or modify
|
|
|
+ * it under the terms of the GNU Lesser General Public License as published
|
|
|
+ * by the Free Software Foundation, either version 3 of the License, or
|
|
|
+ * (at your option) any later version.
|
|
|
+ *
|
|
|
+ * This program is distributed in the hope that it will be useful,
|
|
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
+ * GNU Lesser General Public License for more details.
|
|
|
+ * GNU Lesser General Public License for more details.
|
|
|
+ *
|
|
|
+ * You should have received a copy of the GNU Lesser General Public License
|
|
|
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
+ */
|
|
|
+
|
|
|
+/*******************************************************************
|
|
|
+ *
|
|
|
+ * @author Sebastian.Kaebisch@siemens.com
|
|
|
+ * @version 0.8
|
|
|
+ * @contact Joerg.Heuer@siemens.com
|
|
|
+ *
|
|
|
+ * <p>Code generated by EXISeGen</p>
|
|
|
+ *
|
|
|
+ ********************************************************************/
|
|
|
+
|
|
|
+
|
|
|
+#include "v2g_service.h"
|
|
|
+#include "v2g_dataTypes.h"
|
|
|
+#include "EXITypes.h"
|
|
|
+#include "v2gEXIEncoder.h"
|
|
|
+#include "v2gQNameDefines.h"
|
|
|
+#include "StringNameTable.h"
|
|
|
+#include <string.h>
|
|
|
+
|
|
|
+ uint16_t numberOfLocalStringsEncode[EXI_v2gMAX_NUMBER_OF_QNAMES];
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_NotificationType(struct NotificationType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element FaultCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 332))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->FaultCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character FaultCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of FaultCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.FaultMsg)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element FaultMsg */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 333))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->FaultMsg.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->FaultMsg.data,type->FaultMsg.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character FaultMsg */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of FaultMsg */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_CanonicalizationMethodType(struct CanonicalizationMethodType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Algorithm.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Algorithm.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 0,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SignatureMethodType(struct SignatureMethodType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ uint32_t temp[1];
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Algorithm.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Algorithm.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 0,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = 0;
|
|
|
+
|
|
|
+ temp[0]='\0';
|
|
|
+ memcpy(service->val.str.miss.codepoints, temp,0);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));*/
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_DigestMethodType(struct DigestMethodType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Algorithm.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Algorithm.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 0,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ReferenceType(struct ReferenceType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ if(type->isused.attr_Id)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 2,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.attr_Type)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Type.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Type.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 5,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.attr_URI)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_URI.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_URI.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 6,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DigestMethod */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 64))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DigestMethod */
|
|
|
+ if(serialize_DigestMethodType( &(type->DigestMethod),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DigestMethod */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DigestValue */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 66))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_BASE64;
|
|
|
+ service->val.binary.len = type->DigestValue.arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->DigestValue.data,type->DigestValue.arraylen.data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character DigestValue */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DigestValue */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SignedInfoType(struct SignedInfoType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ if(type->isused.attr_Id)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 2,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element CanonicalizationMethod */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 59))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of CanonicalizationMethod */
|
|
|
+ if(serialize_CanonicalizationMethodType( &(type->CanonicalizationMethod),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of CanonicalizationMethod */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SignatureMethod */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 102))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SignatureMethod */
|
|
|
+ if(serialize_SignatureMethodType( &(type->SignatureMethod),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SignatureMethod */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.Reference;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Reference */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 93))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of Reference */
|
|
|
+ if(serialize_ReferenceType(&(type->Reference[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Reference */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SignatureType(struct SignatureType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ if(type->isused.attr_Id)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 2,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SignedInfo */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 111))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SignedInfo */
|
|
|
+ if(serialize_SignedInfoType( &(type->SignedInfo),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SignedInfo */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SignatureValue */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 109))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_BASE64;
|
|
|
+ service->val.binary.len = type->SignatureValue.arraylen.data;
|
|
|
+ service->val.binary.data= type->SignatureValue.data;
|
|
|
+
|
|
|
+ /* encode character */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SignatureValue */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_MessageHeaderType(struct MessageHeaderType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SessionID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 447))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_HEX;
|
|
|
+ service->val.binary.len = type->SessionID.arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->SessionID.data,type->SessionID.arraylen.data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character SessionID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SessionID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.Notification)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Notification */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 446))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of Notification */
|
|
|
+ if(serialize_NotificationType( &(type->Notification),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Notification */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.Signature)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Signature */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 101))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of Signature */
|
|
|
+ if(serialize_SignatureType( (type->Signature),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Signature */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SessionSetupReqType(struct SessionSetupReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVCCID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 172))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_HEX;
|
|
|
+ service->val.binary.len = type->EVCCID.arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->EVCCID.data,type->EVCCID.arraylen.data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVCCID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVCCID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SessionSetupResType(struct SessionSetupResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 177))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->EVSEID.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->EVSEID.data,type->EVSEID.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSEID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.EVSETimeStamp)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSETimeStamp */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 186))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_INTEGER;
|
|
|
+ service->val.integer.val.int64=type->EVSETimeStamp;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_64;
|
|
|
+
|
|
|
+ /* encode character EVSETimeStamp */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSETimeStamp */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ServiceDiscoveryReqType(struct ServiceDiscoveryReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ if(type->isused.ServiceScope)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceScope */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 239))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->ServiceScope.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->ServiceScope.data,type->ServiceScope.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ServiceScope */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceScope */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ServiceCategory)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceCategory */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 227))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ServiceCategory;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ServiceCategory */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceCategory */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PaymentOptionListType(struct PaymentOptionListType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.PaymentOption;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PaymentOption */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 358))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->PaymentOption[i_loop];
|
|
|
+
|
|
|
+ /* encode character PaymentOption */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PaymentOption */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SupportedEnergyTransferModeType(struct SupportedEnergyTransferModeType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.EnergyTransferMode;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EnergyTransferMode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 328))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->EnergyTransferMode[i_loop];
|
|
|
+
|
|
|
+ /* encode character EnergyTransferMode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EnergyTransferMode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ChargeServiceType(struct ChargeServiceType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 386))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint16=type->ServiceID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character ServiceID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.ServiceName)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceName */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 388))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->ServiceName.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->ServiceName.data,type->ServiceName.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ServiceName */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceName */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceCategory */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 385))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ServiceCategory;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ServiceCategory */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceCategory */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.ServiceScope)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceScope */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 390))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->ServiceScope.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->ServiceScope.data,type->ServiceScope.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ServiceScope */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceScope */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element FreeService */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 334))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->FreeService;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character FreeService */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of FreeService */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SupportedEnergyTransferMode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 395))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SupportedEnergyTransferMode */
|
|
|
+ if(serialize_SupportedEnergyTransferModeType( &(type->SupportedEnergyTransferMode),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SupportedEnergyTransferMode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ServiceType(struct ServiceType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 386))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint16=type->ServiceID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character ServiceID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.ServiceName)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceName */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 388))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->ServiceName.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->ServiceName.data,type->ServiceName.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ServiceName */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceName */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceCategory */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 385))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ServiceCategory;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ServiceCategory */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceCategory */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.ServiceScope)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceScope */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 390))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->ServiceScope.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->ServiceScope.data,type->ServiceScope.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ServiceScope */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceScope */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element FreeService */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 334))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->FreeService;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character FreeService */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of FreeService */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ServiceListType(struct ServiceListType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.Service;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Service */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 384))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of Service */
|
|
|
+ if(serialize_ServiceType(&(type->Service[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Service */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ServiceDiscoveryResType(struct ServiceDiscoveryResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PaymentOptionList */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 204))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PaymentOptionList */
|
|
|
+ if(serialize_PaymentOptionListType( &(type->PaymentOptionList),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PaymentOptionList */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargeService */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 155))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ChargeService */
|
|
|
+ if(serialize_ChargeServiceType( &(type->ChargeService),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargeService */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.ServiceList)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceList */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 237))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ServiceList */
|
|
|
+ if(serialize_ServiceListType( &(type->ServiceList),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceList */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ServiceDetailReqType(struct ServiceDetailReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 236))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint16=type->ServiceID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character ServiceID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PhysicalValueType(struct PhysicalValueType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Multiplier */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 343))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.int8=type->Multiplier;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character Multiplier */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Multiplier */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Unit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 399))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->Unit;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character Unit */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Unit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Value */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 400))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_INTEGER;
|
|
|
+ service->val.integer.val.int16=type->Value;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character Value */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Value */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ParameterType(struct ParameterType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Name.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Name.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 344,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.boolValue)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element boolValue */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 403))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->boolValue;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character boolValue */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of boolValue */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.byteValue)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element byteValue */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 404))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.int8=type->byteValue;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character byteValue */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of byteValue */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.shortValue)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element shortValue */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 433))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_INTEGER;
|
|
|
+ service->val.integer.val.int16=type->shortValue;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character shortValue */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of shortValue */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.intValue)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element intValue */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 418))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_INTEGER;
|
|
|
+ service->val.integer.val.int32=type->intValue;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_32;
|
|
|
+
|
|
|
+ /* encode character intValue */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of intValue */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.physicalValue)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element physicalValue */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 425))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of physicalValue */
|
|
|
+ if(serialize_PhysicalValueType( &(type->physicalValue),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of physicalValue */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.stringValue)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element stringValue */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 437))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->stringValue.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->stringValue.data;
|
|
|
+
|
|
|
+ /* encode character stringValue */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of stringValue */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ParameterSetType(struct ParameterSetType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ParameterSetID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 355))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_INTEGER;
|
|
|
+ service->val.integer.val.int16=type->ParameterSetID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character ParameterSetID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ParameterSetID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.Parameter;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Parameter */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 353))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of Parameter */
|
|
|
+ if(serialize_ParameterType(&(type->Parameter[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Parameter */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ServiceParameterListType(struct ServiceParameterListType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.ParameterSet;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ParameterSet */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 354))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ParameterSet */
|
|
|
+ if(serialize_ParameterSetType(&(type->ParameterSet[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ParameterSet */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ServiceDetailResType(struct ServiceDetailResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 236))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint16=type->ServiceID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character ServiceID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.ServiceParameterList)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceParameterList */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 238))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ServiceParameterList */
|
|
|
+ if(serialize_ServiceParameterListType( &(type->ServiceParameterList),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceParameterList */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SelectedServiceType(struct SelectedServiceType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 386))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint16=type->ServiceID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character ServiceID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.ParameterSetID)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ParameterSetID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 355))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_INTEGER;
|
|
|
+ service->val.integer.val.int16=type->ParameterSetID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character ParameterSetID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ParameterSetID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SelectedServiceListType(struct SelectedServiceListType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.SelectedService;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SelectedService */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 381))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SelectedService */
|
|
|
+ if(serialize_SelectedServiceType(&(type->SelectedService[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SelectedService */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PaymentServiceSelectionReqType(struct PaymentServiceSelectionReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SelectedPaymentOption */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 225))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->SelectedPaymentOption;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character SelectedPaymentOption */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SelectedPaymentOption */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SelectedServiceList */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 226))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SelectedServiceList */
|
|
|
+ if(serialize_SelectedServiceListType( &(type->SelectedServiceList),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SelectedServiceList */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PaymentServiceSelectionResType(struct PaymentServiceSelectionResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SubCertificatesType(struct SubCertificatesType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.Certificate;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Certificate */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 262))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_BASE64;
|
|
|
+ service->val.binary.len = type->Certificate[i_loop].arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->Certificate[i_loop].data,type->Certificate[i_loop].arraylen.data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character Certificate */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Certificate */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_CertificateChainType(struct CertificateChainType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ if(type->isused.attr_Id)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 336,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Certificate */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 262))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_BASE64;
|
|
|
+ service->val.binary.len = type->Certificate.arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->Certificate.data,type->Certificate.arraylen.data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character Certificate */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Certificate */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.SubCertificates)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SubCertificates */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 393))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SubCertificates */
|
|
|
+ if(serialize_SubCertificatesType( &(type->SubCertificates),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SubCertificates */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PaymentDetailsReqType(struct PaymentDetailsReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element eMAID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 253))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->eMAID.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->eMAID.data,type->eMAID.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character eMAID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of eMAID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ContractSignatureCertChain */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 163))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ContractSignatureCertChain */
|
|
|
+ if(serialize_CertificateChainType( &(type->ContractSignatureCertChain),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ContractSignatureCertChain */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PaymentDetailsResType(struct PaymentDetailsResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element GenChallenge */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 190))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_BASE64;
|
|
|
+ service->val.binary.len = type->GenChallenge.arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->GenChallenge.data,type->GenChallenge.arraylen.data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character GenChallenge */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of GenChallenge */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSETimeStamp */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 186))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_INTEGER;
|
|
|
+ service->val.integer.val.int64=type->EVSETimeStamp;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_64;
|
|
|
+
|
|
|
+ /* encode character EVSETimeStamp */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSETimeStamp */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_AuthorizationReqType(struct AuthorizationReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ if(type->isused.attr_Id)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 191,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.GenChallenge)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element GenChallenge */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 190))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_BASE64;
|
|
|
+ service->val.binary.len = type->GenChallenge.arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->GenChallenge.data,type->GenChallenge.arraylen.data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character GenChallenge */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of GenChallenge */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_AuthorizationResType(struct AuthorizationResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEProcessing */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 185))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->EVSEProcessing;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSEProcessing */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEProcessing */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_AC_EVChargeParameterType(struct AC_EVChargeParameterType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ if(type->isused.DepartureTime)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DepartureTime */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 287))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint32=type->DepartureTime;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_32;
|
|
|
+
|
|
|
+ /* encode character DepartureTime */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DepartureTime */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EAmount */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 289))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EAmount */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EAmount),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EAmount */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVMaxVoltage */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 298))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVMaxVoltage */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVMaxVoltage),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVMaxVoltage */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVMaxCurrent */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 297))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVMaxCurrent */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVMaxCurrent),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVMaxCurrent */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVMinCurrent */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 302))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVMinCurrent */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVMinCurrent),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVMinCurrent */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_DC_EVStatusType(struct DC_EVStatusType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVReady */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 306))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->EVReady;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVReady */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVReady */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVErrorCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 296))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->EVErrorCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVErrorCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVErrorCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVRESSSOC */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 305))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.int8=type->EVRESSSOC;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character EVRESSSOC */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVRESSSOC */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_DC_EVChargeParameterType(struct DC_EVChargeParameterType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ if(type->isused.DepartureTime)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DepartureTime */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 287))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint32=type->DepartureTime;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_32;
|
|
|
+
|
|
|
+ /* encode character DepartureTime */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DepartureTime */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 285))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVStatus */
|
|
|
+ if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVMaximumCurrentLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 299))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVMaximumCurrentLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVMaximumCurrentLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVMaximumCurrentLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.EVMaximumPowerLimit)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVMaximumPowerLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 300))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVMaximumPowerLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVMaximumPowerLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVMaximumPowerLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVMaximumVoltageLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 301))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVMaximumVoltageLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVMaximumVoltageLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVMaximumVoltageLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.EVEnergyCapacity)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVEnergyCapacity */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 294))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVEnergyCapacity */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVEnergyCapacity),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVEnergyCapacity */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.EVEnergyRequest)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVEnergyRequest */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 295))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVEnergyRequest */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVEnergyRequest),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVEnergyRequest */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.FullSOC)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element FullSOC */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 335))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.int8=type->FullSOC;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character FullSOC */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of FullSOC */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.BulkSOC)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element BulkSOC */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 261))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.int8=type->BulkSOC;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character BulkSOC */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of BulkSOC */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ChargeParameterDiscoveryReqType(struct ChargeParameterDiscoveryReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ if(type->isused.MaxEntriesSAScheduleTuple)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element MaxEntriesSAScheduleTuple */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 193))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint16=type->MaxEntriesSAScheduleTuple;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character MaxEntriesSAScheduleTuple */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of MaxEntriesSAScheduleTuple */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element RequestedEnergyTransferMode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 220))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->RequestedEnergyTransferMode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character RequestedEnergyTransferMode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of RequestedEnergyTransferMode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.AC_EVChargeParameter)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element AC_EVChargeParameter */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 254))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of AC_EVChargeParameter */
|
|
|
+ if(serialize_AC_EVChargeParameterType( (type->AC_EVChargeParameter),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of AC_EVChargeParameter */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.DC_EVChargeParameter)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVChargeParameter */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 275))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVChargeParameter */
|
|
|
+ if(serialize_DC_EVChargeParameterType( (type->DC_EVChargeParameter),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVChargeParameter */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_RelativeTimeIntervalType(struct RelativeTimeIntervalType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element start */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 435))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint32=type->start;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_32;
|
|
|
+
|
|
|
+ /* encode character start */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of start */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.duration)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element duration */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 411))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint32=type->duration;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_32;
|
|
|
+
|
|
|
+ /* encode character duration */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of duration */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PMaxScheduleEntryType(struct PMaxScheduleEntryType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element RelativeTimeInterval */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 364))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of RelativeTimeInterval */
|
|
|
+ if(serialize_RelativeTimeIntervalType( &(type->RelativeTimeInterval),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of RelativeTimeInterval */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PMax */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 348))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PMax */
|
|
|
+ if(serialize_PhysicalValueType( &(type->PMax),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PMax */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PMaxScheduleType(struct PMaxScheduleType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.PMaxScheduleEntry;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PMaxScheduleEntry */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 350))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PMaxScheduleEntry */
|
|
|
+ if(serialize_PMaxScheduleEntryType(&(type->PMaxScheduleEntry[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PMaxScheduleEntry */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_CostType(struct CostType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element costKind */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 408))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->costKind;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character costKind */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of costKind */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element amount */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 401))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint32=type->amount;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_32;
|
|
|
+
|
|
|
+ /* encode character amount */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of amount */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.amountMultiplier)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element amountMultiplier */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 402))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.int8=type->amountMultiplier;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character amountMultiplier */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of amountMultiplier */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ConsumptionCostType(struct ConsumptionCostType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element startValue */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 436))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of startValue */
|
|
|
+ if(serialize_PhysicalValueType( &(type->startValue),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of startValue */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.Cost;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Cost */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 273))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of Cost */
|
|
|
+ if(serialize_CostType(&(type->Cost[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Cost */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SalesTariffEntryType(struct SalesTariffEntryType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element RelativeTimeInterval */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 364))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of RelativeTimeInterval */
|
|
|
+ if(serialize_RelativeTimeIntervalType( &(type->RelativeTimeInterval),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of RelativeTimeInterval */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.EPriceLevel)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EPriceLevel */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 291))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint8=type->EPriceLevel;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character EPriceLevel */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EPriceLevel */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ConsumptionCost)
|
|
|
+ {
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.ConsumptionCost;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ConsumptionCost */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 270))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ConsumptionCost */
|
|
|
+ if(serialize_ConsumptionCostType(&(type->ConsumptionCost[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ConsumptionCost */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SalesTariffType(struct SalesTariffType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ if(type->isused.attr_Id)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 336,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SalesTariffID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 379))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint8=type->SalesTariffID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character SalesTariffID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SalesTariffID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.SalesTariffDescription)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SalesTariffDescription */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 376))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->SalesTariffDescription.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->SalesTariffDescription.data,type->SalesTariffDescription.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character SalesTariffDescription */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SalesTariffDescription */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.NumEPriceLevels)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element NumEPriceLevels */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 347))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint8=type->NumEPriceLevels;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character NumEPriceLevels */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of NumEPriceLevels */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.SalesTariffEntry;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SalesTariffEntry */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 377))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SalesTariffEntry */
|
|
|
+ if(serialize_SalesTariffEntryType(&(type->SalesTariffEntry[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SalesTariffEntry */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SAScheduleTupleType(struct SAScheduleTupleType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SAScheduleTupleID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 371))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint8=type->SAScheduleTupleID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character SAScheduleTupleID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SAScheduleTupleID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PMaxSchedule */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 349))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PMaxSchedule */
|
|
|
+ if(serialize_PMaxScheduleType( &(type->PMaxSchedule),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PMaxSchedule */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.SalesTariff)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SalesTariff */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 375))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SalesTariff */
|
|
|
+ if(serialize_SalesTariffType( (type->SalesTariff),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SalesTariff */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SAScheduleListType(struct SAScheduleListType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.SAScheduleTuple;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SAScheduleTuple */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 370))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SAScheduleTuple */
|
|
|
+ if(serialize_SAScheduleTupleType(&(type->SAScheduleTuple[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SAScheduleTuple */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_AC_EVSEStatusType(struct AC_EVSEStatusType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element NotificationMaxDelay */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 345))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint16=type->NotificationMaxDelay;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character NotificationMaxDelay */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of NotificationMaxDelay */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSENotification */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 319))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->EVSENotification;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSENotification */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSENotification */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element RCD */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 363))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->RCD;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character RCD */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of RCD */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_AC_EVSEChargeParameterType(struct AC_EVSEChargeParameterType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element AC_EVSEStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 258))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of AC_EVSEStatus */
|
|
|
+ if(serialize_AC_EVSEStatusType( &(type->AC_EVSEStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of AC_EVSEStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSENominalVoltage */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 318))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSENominalVoltage */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSENominalVoltage),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSENominalVoltage */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEMaxCurrent */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 312))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEMaxCurrent */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEMaxCurrent),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEMaxCurrent */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_DC_EVSEStatusType(struct DC_EVSEStatusType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element NotificationMaxDelay */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 345))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint16=type->NotificationMaxDelay;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character NotificationMaxDelay */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of NotificationMaxDelay */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSENotification */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 319))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->EVSENotification;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSENotification */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSENotification */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.EVSEIsolationStatus)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEIsolationStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 311))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->EVSEIsolationStatus;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSEIsolationStatus */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEIsolationStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEStatusCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 324))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->EVSEStatusCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSEStatusCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEStatusCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_DC_EVSEChargeParameterType(struct DC_EVSEChargeParameterType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVSEStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 282))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVSEStatus */
|
|
|
+ if(serialize_DC_EVSEStatusType( &(type->DC_EVSEStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVSEStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEMaximumCurrentLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 313))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEMaximumCurrentLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEMaximumCurrentLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEMaximumCurrentLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEMaximumPowerLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 314))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEMaximumPowerLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEMaximumPowerLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEMaximumPowerLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEMaximumVoltageLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 315))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEMaximumVoltageLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEMaximumVoltageLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEMaximumVoltageLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEMinimumCurrentLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 316))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEMinimumCurrentLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEMinimumCurrentLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEMinimumCurrentLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEMinimumVoltageLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 317))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEMinimumVoltageLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEMinimumVoltageLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEMinimumVoltageLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.EVSECurrentRegulationTolerance)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSECurrentRegulationTolerance */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 309))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSECurrentRegulationTolerance */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSECurrentRegulationTolerance),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSECurrentRegulationTolerance */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEPeakCurrentRipple */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 321))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEPeakCurrentRipple */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEPeakCurrentRipple),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEPeakCurrentRipple */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.EVSEEnergyToBeDelivered)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEEnergyToBeDelivered */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 310))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEEnergyToBeDelivered */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEEnergyToBeDelivered),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEEnergyToBeDelivered */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ChargeParameterDiscoveryResType(struct ChargeParameterDiscoveryResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEProcessing */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 185))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->EVSEProcessing;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSEProcessing */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEProcessing */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.SAScheduleList)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SAScheduleList */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 368))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SAScheduleList */
|
|
|
+ if(serialize_SAScheduleListType( (type->SAScheduleList),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SAScheduleList */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.AC_EVSEChargeParameter)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element AC_EVSEChargeParameter */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 256))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of AC_EVSEChargeParameter */
|
|
|
+ if(serialize_AC_EVSEChargeParameterType( (type->AC_EVSEChargeParameter),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of AC_EVSEChargeParameter */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.DC_EVSEChargeParameter)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVSEChargeParameter */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 280))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVSEChargeParameter */
|
|
|
+ if(serialize_DC_EVSEChargeParameterType( (type->DC_EVSEChargeParameter),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVSEChargeParameter */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ProfileEntryType(struct ProfileEntryType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargingProfileEntryStart */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 268))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint32=type->ChargingProfileEntryStart;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_32;
|
|
|
+
|
|
|
+ /* encode character ChargingProfileEntryStart */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargingProfileEntryStart */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargingProfileEntryMaxPower */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 267))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ChargingProfileEntryMaxPower */
|
|
|
+ if(serialize_PhysicalValueType( &(type->ChargingProfileEntryMaxPower),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargingProfileEntryMaxPower */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.ChargingProfileEntryMaxNumberOfPhasesInUse)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargingProfileEntryMaxNumberOfPhasesInUse */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 266))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.int8=type->ChargingProfileEntryMaxNumberOfPhasesInUse;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character ChargingProfileEntryMaxNumberOfPhasesInUse */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargingProfileEntryMaxNumberOfPhasesInUse */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ChargingProfileType(struct ChargingProfileType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.ProfileEntry;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ProfileEntry */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 361))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ProfileEntry */
|
|
|
+ if(serialize_ProfileEntryType(&(type->ProfileEntry[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ProfileEntry */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_DC_EVPowerDeliveryParameterType(struct DC_EVPowerDeliveryParameterType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 285))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVStatus */
|
|
|
+ if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.BulkChargingComplete)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element BulkChargingComplete */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 260))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->BulkChargingComplete;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character BulkChargingComplete */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of BulkChargingComplete */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargingComplete */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 265))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->ChargingComplete;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ChargingComplete */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargingComplete */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PowerDeliveryReqType(struct PowerDeliveryReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargeProgress */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 154))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ChargeProgress;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ChargeProgress */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargeProgress */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SAScheduleTupleID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 224))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint8=type->SAScheduleTupleID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character SAScheduleTupleID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SAScheduleTupleID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.ChargingProfile)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargingProfile */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 157))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ChargingProfile */
|
|
|
+ if(serialize_ChargingProfileType( &(type->ChargingProfile),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargingProfile */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.DC_EVPowerDeliveryParameter)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVPowerDeliveryParameter */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 278))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVPowerDeliveryParameter */
|
|
|
+ if(serialize_DC_EVPowerDeliveryParameterType( (type->DC_EVPowerDeliveryParameter),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVPowerDeliveryParameter */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PowerDeliveryResType(struct PowerDeliveryResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.AC_EVSEStatus)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element AC_EVSEStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 258))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of AC_EVSEStatus */
|
|
|
+ if(serialize_AC_EVSEStatusType( (type->AC_EVSEStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of AC_EVSEStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.DC_EVSEStatus)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVSEStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 282))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVSEStatus */
|
|
|
+ if(serialize_DC_EVSEStatusType( (type->DC_EVSEStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVSEStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_MeterInfoType(struct MeterInfoType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element MeterID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 339))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->MeterID.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->MeterID.data,type->MeterID.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character MeterID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of MeterID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.MeterReading)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element MeterReading */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 341))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint64=type->MeterReading;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_64;
|
|
|
+
|
|
|
+ /* encode character MeterReading */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of MeterReading */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.SigMeterReading)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SigMeterReading */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 392))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_BASE64;
|
|
|
+ service->val.binary.len = type->SigMeterReading.arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->SigMeterReading.data,type->SigMeterReading.arraylen.data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character SigMeterReading */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SigMeterReading */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.MeterStatus)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element MeterStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 342))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_INTEGER;
|
|
|
+ service->val.integer.val.int16=type->MeterStatus;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character MeterStatus */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of MeterStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.TMeter)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element TMeter */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 397))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_INTEGER;
|
|
|
+ service->val.integer.val.int64=type->TMeter;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_64;
|
|
|
+
|
|
|
+ /* encode character TMeter */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of TMeter */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_MeteringReceiptReqType(struct MeteringReceiptReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ if(type->isused.attr_Id)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 191,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SessionID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 240))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_HEX;
|
|
|
+ service->val.binary.len = type->SessionID.arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->SessionID.data,type->SessionID.arraylen.data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character SessionID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SessionID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.SAScheduleTupleID)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SAScheduleTupleID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 224))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint8=type->SAScheduleTupleID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character SAScheduleTupleID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SAScheduleTupleID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element MeterInfo */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 194))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of MeterInfo */
|
|
|
+ if(serialize_MeterInfoType( &(type->MeterInfo),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of MeterInfo */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_MeteringReceiptResType(struct MeteringReceiptResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.AC_EVSEStatus)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element AC_EVSEStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 258))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of AC_EVSEStatus */
|
|
|
+ if(serialize_AC_EVSEStatusType( (type->AC_EVSEStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of AC_EVSEStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.DC_EVSEStatus)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVSEStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 282))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVSEStatus */
|
|
|
+ if(serialize_DC_EVSEStatusType( (type->DC_EVSEStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVSEStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SessionStopReqType(struct SessionStopReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargingSession */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 158))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ChargingSession;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ChargingSession */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargingSession */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_SessionStopResType(struct SessionStopResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_X509IssuerSerialType(struct X509IssuerSerialType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element X509IssuerName */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 121))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->X509IssuerName.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->X509IssuerName.data;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character X509IssuerName */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of X509IssuerName */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element X509SerialNumber */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 125))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_INTEGER;
|
|
|
+ service->val.integer.val.int64=type->X509SerialNumber;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_64;
|
|
|
+
|
|
|
+ /* encode character X509SerialNumber */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of X509SerialNumber */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ListOfRootCertificateIDsType(struct ListOfRootCertificateIDsType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ size_t i_loop;
|
|
|
+
|
|
|
+ for(i_loop=0;i_loop < type->arraylen.RootCertificateID;i_loop++)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element RootCertificateID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 366))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of RootCertificateID */
|
|
|
+ if(serialize_X509IssuerSerialType(&(type->RootCertificateID[i_loop]),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of RootCertificateID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_CertificateUpdateReqType(struct CertificateUpdateReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 191,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ContractSignatureCertChain */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 163))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ContractSignatureCertChain */
|
|
|
+ if(serialize_CertificateChainType( &(type->ContractSignatureCertChain),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ContractSignatureCertChain */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element eMAID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 253))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->eMAID.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->eMAID.data,type->eMAID.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character eMAID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of eMAID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ListOfRootCertificateIDs */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 192))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ListOfRootCertificateIDs */
|
|
|
+ if(serialize_ListOfRootCertificateIDsType( &(type->ListOfRootCertificateIDs),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ListOfRootCertificateIDs */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ContractSignatureEncryptedPrivateKeyType(struct ContractSignatureEncryptedPrivateKeyType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 336,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_BASE64;
|
|
|
+ service->val.binary.len = type->arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->data,type->arraylen.data);
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_DiffieHellmanPublickeyType(struct DiffieHellmanPublickeyType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 336,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_BASE64;
|
|
|
+ service->val.binary.len = type->arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->data,type->arraylen.data);
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_EMAIDType(struct EMAIDType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 336,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ };
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->data;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_CertificateUpdateResType(struct CertificateUpdateResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SAProvisioningCertificateChain */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 223))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SAProvisioningCertificateChain */
|
|
|
+ if(serialize_CertificateChainType( &(type->SAProvisioningCertificateChain),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SAProvisioningCertificateChain */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ContractSignatureCertChain */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 163))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ContractSignatureCertChain */
|
|
|
+ if(serialize_CertificateChainType( &(type->ContractSignatureCertChain),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ContractSignatureCertChain */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ContractSignatureEncryptedPrivateKey */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 164))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ContractSignatureEncryptedPrivateKey */
|
|
|
+ if(serialize_ContractSignatureEncryptedPrivateKeyType( &(type->ContractSignatureEncryptedPrivateKey),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ContractSignatureEncryptedPrivateKey */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DHpublickey */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 171))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DHpublickey */
|
|
|
+ if(serialize_DiffieHellmanPublickeyType( &(type->DHpublickey),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DHpublickey */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element eMAID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 253))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of eMAID */
|
|
|
+ if(serialize_EMAIDType( &(type->eMAID),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of eMAID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.RetryCounter)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element RetryCounter */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 222))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_INTEGER;
|
|
|
+ service->val.integer.val.int16=type->RetryCounter;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_INTEGER_16;
|
|
|
+
|
|
|
+ /* encode character RetryCounter */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of RetryCounter */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_CertificateInstallationReqType(struct CertificateInstallationReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->attr_Id.arraylen.data;
|
|
|
+ service->val.str.miss.codepoints= type->attr_Id.data;
|
|
|
+ if (exiv2gEncodeAttribute(&(service->outStream), &(service->stateEncode), 191,&(service->val)))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element OEMProvisioningCert */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 199))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ service->val.type = EXI_DATATYPE_BINARY_BASE64;
|
|
|
+ service->val.binary.len = type->OEMProvisioningCert.arraylen.data;
|
|
|
+ memcpy(service->val.binary.data, type->OEMProvisioningCert.data,type->OEMProvisioningCert.arraylen.data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character OEMProvisioningCert */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of OEMProvisioningCert */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ListOfRootCertificateIDs */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 192))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ListOfRootCertificateIDs */
|
|
|
+ if(serialize_ListOfRootCertificateIDsType( &(type->ListOfRootCertificateIDs),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ListOfRootCertificateIDs */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_CertificateInstallationResType(struct CertificateInstallationResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SAProvisioningCertificateChain */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 223))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SAProvisioningCertificateChain */
|
|
|
+ if(serialize_CertificateChainType( &(type->SAProvisioningCertificateChain),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SAProvisioningCertificateChain */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ContractSignatureCertChain */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 163))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ContractSignatureCertChain */
|
|
|
+ if(serialize_CertificateChainType( &(type->ContractSignatureCertChain),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ContractSignatureCertChain */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ContractSignatureEncryptedPrivateKey */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 164))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ContractSignatureEncryptedPrivateKey */
|
|
|
+ if(serialize_ContractSignatureEncryptedPrivateKeyType( &(type->ContractSignatureEncryptedPrivateKey),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ContractSignatureEncryptedPrivateKey */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DHpublickey */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 171))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DHpublickey */
|
|
|
+ if(serialize_DiffieHellmanPublickeyType( &(type->DHpublickey),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DHpublickey */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element eMAID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 253))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode children of eMAID */
|
|
|
+ if(serialize_EMAIDType( &(type->eMAID),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of eMAID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ChargingStatusReqType(struct ChargingStatusReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_ChargingStatusResType(struct ChargingStatusResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 177))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->EVSEID.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->EVSEID.data,type->EVSEID.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSEID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SAScheduleTupleID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 224))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint8=type->SAScheduleTupleID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character SAScheduleTupleID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SAScheduleTupleID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.EVSEMaxCurrent)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEMaxCurrent */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 178))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEMaxCurrent */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEMaxCurrent),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEMaxCurrent */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.MeterInfo)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element MeterInfo */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 194))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of MeterInfo */
|
|
|
+ if(serialize_MeterInfoType( &(type->MeterInfo),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of MeterInfo */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ReceiptRequired)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ReceiptRequired */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 217))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->ReceiptRequired;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ReceiptRequired */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ReceiptRequired */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element AC_EVSEStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 129))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of AC_EVSEStatus */
|
|
|
+ if(serialize_AC_EVSEStatusType( &(type->AC_EVSEStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of AC_EVSEStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_CableCheckReqType(struct CableCheckReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 170))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVStatus */
|
|
|
+ if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_CableCheckResType(struct CableCheckResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVSEStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 169))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVSEStatus */
|
|
|
+ if(serialize_DC_EVSEStatusType( &(type->DC_EVSEStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVSEStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEProcessing */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 185))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->EVSEProcessing;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSEProcessing */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEProcessing */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PreChargeReqType(struct PreChargeReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 170))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVStatus */
|
|
|
+ if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVTargetVoltage */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 189))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVTargetVoltage */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVTargetVoltage),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVTargetVoltage */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVTargetCurrent */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 188))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVTargetCurrent */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVTargetCurrent),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVTargetCurrent */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_PreChargeResType(struct PreChargeResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVSEStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 169))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVSEStatus */
|
|
|
+ if(serialize_DC_EVSEStatusType( &(type->DC_EVSEStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVSEStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEPresentVoltage */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 184))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEPresentVoltage */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEPresentVoltage),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEPresentVoltage */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_CurrentDemandReqType(struct CurrentDemandReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 170))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVStatus */
|
|
|
+ if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVTargetCurrent */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 188))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVTargetCurrent */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVTargetCurrent),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVTargetCurrent */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.EVMaximumVoltageLimit)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVMaximumVoltageLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 175))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVMaximumVoltageLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVMaximumVoltageLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVMaximumVoltageLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.EVMaximumCurrentLimit)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVMaximumCurrentLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 173))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVMaximumCurrentLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVMaximumCurrentLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVMaximumCurrentLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.EVMaximumPowerLimit)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVMaximumPowerLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 174))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVMaximumPowerLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVMaximumPowerLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVMaximumPowerLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.BulkChargingComplete)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element BulkChargingComplete */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 137))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->BulkChargingComplete;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character BulkChargingComplete */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of BulkChargingComplete */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargingComplete */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 156))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->ChargingComplete;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ChargingComplete */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargingComplete */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.RemainingTimeToFullSoC)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element RemainingTimeToFullSoC */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 219))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of RemainingTimeToFullSoC */
|
|
|
+ if(serialize_PhysicalValueType( &(type->RemainingTimeToFullSoC),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of RemainingTimeToFullSoC */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.RemainingTimeToBulkSoC)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element RemainingTimeToBulkSoC */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 218))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of RemainingTimeToBulkSoC */
|
|
|
+ if(serialize_PhysicalValueType( &(type->RemainingTimeToBulkSoC),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of RemainingTimeToBulkSoC */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVTargetVoltage */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 189))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVTargetVoltage */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVTargetVoltage),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVTargetVoltage */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_CurrentDemandResType(struct CurrentDemandResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVSEStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 169))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVSEStatus */
|
|
|
+ if(serialize_DC_EVSEStatusType( &(type->DC_EVSEStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVSEStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEPresentVoltage */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 184))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEPresentVoltage */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEPresentVoltage),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEPresentVoltage */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEPresentCurrent */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 183))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEPresentCurrent */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEPresentCurrent),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEPresentCurrent */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSECurrentLimitAchieved */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 176))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->EVSECurrentLimitAchieved;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSECurrentLimitAchieved */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSECurrentLimitAchieved */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEVoltageLimitAchieved */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 187))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->EVSEVoltageLimitAchieved;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSEVoltageLimitAchieved */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEVoltageLimitAchieved */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEPowerLimitAchieved */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 182))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->EVSEPowerLimitAchieved;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSEPowerLimitAchieved */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEPowerLimitAchieved */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.EVSEMaximumVoltageLimit)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEMaximumVoltageLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 181))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEMaximumVoltageLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEMaximumVoltageLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEMaximumVoltageLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.EVSEMaximumCurrentLimit)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEMaximumCurrentLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 179))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEMaximumCurrentLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEMaximumCurrentLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEMaximumCurrentLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.EVSEMaximumPowerLimit)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEMaximumPowerLimit */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 180))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEMaximumPowerLimit */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEMaximumPowerLimit),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEMaximumPowerLimit */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 177))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_STRING;
|
|
|
+ service->val.str.type = EXI_STRING_VALUE_MISS;
|
|
|
+ service->val.str.miss.len = type->EVSEID.arraylen.data;
|
|
|
+ memcpy(service->val.str.miss.codepoints, type->EVSEID.data,type->EVSEID.arraylen.data*sizeof(uint32_t));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character EVSEID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SAScheduleTupleID */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 224))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_NBIT_UNSIGNED_INTEGER;
|
|
|
+ service->val.integer.val.uint8=type->SAScheduleTupleID;
|
|
|
+
|
|
|
+ service->val.integer.type = EXI_UNSIGNED_INTEGER_8;
|
|
|
+
|
|
|
+ /* encode character SAScheduleTupleID */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SAScheduleTupleID */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+ if(type->isused.MeterInfo)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element MeterInfo */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 194))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of MeterInfo */
|
|
|
+ if(serialize_MeterInfoType( &(type->MeterInfo),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of MeterInfo */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ReceiptRequired)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ReceiptRequired */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 217))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_BOOLEAN;
|
|
|
+ service->val.boolean=type->ReceiptRequired;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ReceiptRequired */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ReceiptRequired */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_WeldingDetectionReqType(struct WeldingDetectionReqType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 170))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVStatus */
|
|
|
+ if(serialize_DC_EVStatusType( &(type->DC_EVStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_WeldingDetectionResType(struct WeldingDetectionResType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ResponseCode */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 221))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ service->val.type = EXI_DATATYPE_ENUMERATION;
|
|
|
+ service->val.enumeration=type->ResponseCode;
|
|
|
+
|
|
|
+
|
|
|
+ /* encode character ResponseCode */
|
|
|
+ if (exiv2gEncodeCharacters(&(service->outStream), &(service->stateEncode), &(service->val)))
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ResponseCode */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element DC_EVSEStatus */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 169))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of DC_EVSEStatus */
|
|
|
+ if(serialize_DC_EVSEStatusType( &(type->DC_EVSEStatus),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of DC_EVSEStatus */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element EVSEPresentVoltage */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 184))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of EVSEPresentVoltage */
|
|
|
+ if(serialize_PhysicalValueType( &(type->EVSEPresentVoltage),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of EVSEPresentVoltage */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_BodyType(struct BodyType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ if(type->isused.SessionSetupReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SessionSetupReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 241))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SessionSetupReq */
|
|
|
+ if(serialize_SessionSetupReqType( (type->SessionSetupReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SessionSetupReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.SessionSetupRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SessionSetupRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 243))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SessionSetupRes */
|
|
|
+ if(serialize_SessionSetupResType( (type->SessionSetupRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SessionSetupRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ServiceDiscoveryReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceDiscoveryReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 232))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ServiceDiscoveryReq */
|
|
|
+ if(serialize_ServiceDiscoveryReqType( (type->ServiceDiscoveryReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceDiscoveryReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ServiceDiscoveryRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceDiscoveryRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 234))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ServiceDiscoveryRes */
|
|
|
+ if(serialize_ServiceDiscoveryResType( (type->ServiceDiscoveryRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceDiscoveryRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ServiceDetailReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceDetailReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 228))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ServiceDetailReq */
|
|
|
+ if(serialize_ServiceDetailReqType( (type->ServiceDetailReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceDetailReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ServiceDetailRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ServiceDetailRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 230))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ServiceDetailRes */
|
|
|
+ if(serialize_ServiceDetailResType( (type->ServiceDetailRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ServiceDetailRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.PaymentServiceSelectionReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PaymentServiceSelectionReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 205))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PaymentServiceSelectionReq */
|
|
|
+ if(serialize_PaymentServiceSelectionReqType( (type->PaymentServiceSelectionReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PaymentServiceSelectionReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.PaymentServiceSelectionRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PaymentServiceSelectionRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 207))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PaymentServiceSelectionRes */
|
|
|
+ if(serialize_PaymentServiceSelectionResType( (type->PaymentServiceSelectionRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PaymentServiceSelectionRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.PaymentDetailsReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PaymentDetailsReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 200))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PaymentDetailsReq */
|
|
|
+ if(serialize_PaymentDetailsReqType( (type->PaymentDetailsReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PaymentDetailsReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.PaymentDetailsRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PaymentDetailsRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 202))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PaymentDetailsRes */
|
|
|
+ if(serialize_PaymentDetailsResType( (type->PaymentDetailsRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PaymentDetailsRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.AuthorizationReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element AuthorizationReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 130))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of AuthorizationReq */
|
|
|
+ if(serialize_AuthorizationReqType( (type->AuthorizationReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of AuthorizationReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.AuthorizationRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element AuthorizationRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 132))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of AuthorizationRes */
|
|
|
+ if(serialize_AuthorizationResType( (type->AuthorizationRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of AuthorizationRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ChargeParameterDiscoveryReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargeParameterDiscoveryReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 150))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ChargeParameterDiscoveryReq */
|
|
|
+ if(serialize_ChargeParameterDiscoveryReqType( (type->ChargeParameterDiscoveryReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargeParameterDiscoveryReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ChargeParameterDiscoveryRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargeParameterDiscoveryRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 152))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ChargeParameterDiscoveryRes */
|
|
|
+ if(serialize_ChargeParameterDiscoveryResType( (type->ChargeParameterDiscoveryRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargeParameterDiscoveryRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.PowerDeliveryReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PowerDeliveryReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 209))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PowerDeliveryReq */
|
|
|
+ if(serialize_PowerDeliveryReqType( (type->PowerDeliveryReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PowerDeliveryReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.PowerDeliveryRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PowerDeliveryRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 211))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PowerDeliveryRes */
|
|
|
+ if(serialize_PowerDeliveryResType( (type->PowerDeliveryRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PowerDeliveryRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.MeteringReceiptReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element MeteringReceiptReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 195))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of MeteringReceiptReq */
|
|
|
+ if(serialize_MeteringReceiptReqType( (type->MeteringReceiptReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of MeteringReceiptReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.MeteringReceiptRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element MeteringReceiptRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 197))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of MeteringReceiptRes */
|
|
|
+ if(serialize_MeteringReceiptResType( (type->MeteringReceiptRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of MeteringReceiptRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.SessionStopReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SessionStopReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 245))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SessionStopReq */
|
|
|
+ if(serialize_SessionStopReqType( (type->SessionStopReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SessionStopReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.SessionStopRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element SessionStopRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 247))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of SessionStopRes */
|
|
|
+ if(serialize_SessionStopResType( (type->SessionStopRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of SessionStopRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.CertificateUpdateReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element CertificateUpdateReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 146))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of CertificateUpdateReq */
|
|
|
+ if(serialize_CertificateUpdateReqType( (type->CertificateUpdateReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of CertificateUpdateReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.CertificateUpdateRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element CertificateUpdateRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 148))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of CertificateUpdateRes */
|
|
|
+ if(serialize_CertificateUpdateResType( (type->CertificateUpdateRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of CertificateUpdateRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.CertificateInstallationReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element CertificateInstallationReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 142))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of CertificateInstallationReq */
|
|
|
+ if(serialize_CertificateInstallationReqType( (type->CertificateInstallationReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of CertificateInstallationReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.CertificateInstallationRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element CertificateInstallationRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 144))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of CertificateInstallationRes */
|
|
|
+ if(serialize_CertificateInstallationResType( (type->CertificateInstallationRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of CertificateInstallationRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ChargingStatusReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargingStatusReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 159))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ChargingStatusReq */
|
|
|
+ if(serialize_ChargingStatusReqType( (type->ChargingStatusReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargingStatusReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.ChargingStatusRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element ChargingStatusRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 161))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of ChargingStatusRes */
|
|
|
+ if(serialize_ChargingStatusResType( (type->ChargingStatusRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of ChargingStatusRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.CableCheckReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element CableCheckReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 138))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of CableCheckReq */
|
|
|
+ if(serialize_CableCheckReqType( (type->CableCheckReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of CableCheckReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.CableCheckRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element CableCheckRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 140))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of CableCheckRes */
|
|
|
+ if(serialize_CableCheckResType( (type->CableCheckRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of CableCheckRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.PreChargeReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PreChargeReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 213))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PreChargeReq */
|
|
|
+ if(serialize_PreChargeReqType( (type->PreChargeReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PreChargeReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.PreChargeRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element PreChargeRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 215))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of PreChargeRes */
|
|
|
+ if(serialize_PreChargeResType( (type->PreChargeRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of PreChargeRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.CurrentDemandReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element CurrentDemandReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 165))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of CurrentDemandReq */
|
|
|
+ if(serialize_CurrentDemandReqType( (type->CurrentDemandReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of CurrentDemandReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.CurrentDemandRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element CurrentDemandRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 167))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of CurrentDemandRes */
|
|
|
+ if(serialize_CurrentDemandResType( (type->CurrentDemandRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of CurrentDemandRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.WeldingDetectionReq)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element WeldingDetectionReq */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 249))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of WeldingDetectionReq */
|
|
|
+ if(serialize_WeldingDetectionReqType( (type->WeldingDetectionReq),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of WeldingDetectionReq */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type->isused.WeldingDetectionRes)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element WeldingDetectionRes */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 251))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of WeldingDetectionRes */
|
|
|
+ if(serialize_WeldingDetectionResType( (type->WeldingDetectionRes),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of WeldingDetectionRes */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_AnonType_V2G_Message(struct AnonType_V2G_Message* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Header */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 443))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of Header */
|
|
|
+ if(serialize_MessageHeaderType( (type->Header),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Header */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element Body */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 442))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of Body */
|
|
|
+ if(serialize_BodyType( &(type->Body),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of Body */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static int serialize_EXIDocumentType(struct EXIDocumentType* type,
|
|
|
+struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode start element V2G_Message */
|
|
|
+ if (exiv2gEncodeStartElement(&(service->outStream), &(service->stateEncode), 444))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* encode children of V2G_Message */
|
|
|
+ if(serialize_AnonType_V2G_Message( &(type->V2G_Message),service))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end element of V2G_Message */
|
|
|
+ exiv2gEncodeEndElement(&(service->outStream), &(service->stateEncode));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* serialize data to EXI stream */
|
|
|
+static int serialize_message(struct EXIService* service)
|
|
|
+{
|
|
|
+
|
|
|
+ /* encode start document */
|
|
|
+ if (exiv2gEncodeStartDocument(&(service->outStream), &(service->stateEncode)) )
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode root element of V2G_Message */
|
|
|
+ if (serialize_EXIDocumentType(&(service->exiMsg), service))
|
|
|
+
|
|
|
+
|
|
|
+ {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* encode end document */
|
|
|
+ if (exiv2gEncodeEndDocument(&(service->outStream), &(service->stateEncode))) {
|
|
|
+
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|