mirror of
https://github.com/Martin-P/OpenV2G.git
synced 2024-11-18 12:53:58 +00:00
0.3.1 release (V2G service)
git-svn-id: https://svn.code.sf.net/p/openv2g/code/trunk@30 d9f2db14-54d0-4bde-b00c-16405c910529
This commit is contained in:
parent
cbdba43af3
commit
19d0d4c9b4
10 changed files with 7546 additions and 0 deletions
79
src/service/v2g_service.h
Normal file
79
src/service/v2g_service.h
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007-2010 Siemens AG
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
*
|
||||||
|
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||||
|
* @version 0.3.1
|
||||||
|
* @contact Joerg.Heuer@siemens.com
|
||||||
|
*
|
||||||
|
********************************************************************/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef EXI_SERVICE_H_
|
||||||
|
#define EXI_SERVICE_H_
|
||||||
|
|
||||||
|
#include "v2g_serviceDataTypes.h"
|
||||||
|
#include "EXITypes.h"
|
||||||
|
|
||||||
|
struct uniqueIDPath
|
||||||
|
{
|
||||||
|
int id[10];
|
||||||
|
size_t pos;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct EXIService
|
||||||
|
{
|
||||||
|
/* in-/ out-stream */
|
||||||
|
bitstream_t inStream;
|
||||||
|
bitstream_t outStream;
|
||||||
|
|
||||||
|
/* EXI */
|
||||||
|
exi_state_t stateDecode;
|
||||||
|
exi_state_t stateEncode;
|
||||||
|
exi_event_t event;
|
||||||
|
eqname_t eqn;
|
||||||
|
exi_value_t val;
|
||||||
|
|
||||||
|
/* v2g message data structure */
|
||||||
|
struct EXIDocumentType exiMsg;
|
||||||
|
|
||||||
|
/* unique id for ambiguous elements */
|
||||||
|
struct uniqueIDPath idPath;
|
||||||
|
|
||||||
|
/* error code */
|
||||||
|
uint8_t errorCode;
|
||||||
|
|
||||||
|
/* offset for transport header data */
|
||||||
|
uint16_t transportHeaderOffset;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* define error codes (TODO: define precise error codes) */
|
||||||
|
#define EXI_NON_VALID_MESSAGE 0x01
|
||||||
|
#define EXI_SERIALIZATION_FAILED 0x02
|
||||||
|
|
||||||
|
#define EXI_UNKNOWN_ERROR 0xFF
|
||||||
|
|
||||||
|
#endif /* EXI_SERVICE_H_ */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
44
src/service/v2g_serviceClientDataTransmitter.h
Normal file
44
src/service/v2g_serviceClientDataTransmitter.h
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007-2010 Siemens AG
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
*
|
||||||
|
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||||
|
* @version 0.3.1
|
||||||
|
* @contact Joerg.Heuer@siemens.com
|
||||||
|
*
|
||||||
|
********************************************************************/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef V2G_SERVICECLIENTDATATRANSMITTER_H_
|
||||||
|
#define V2G_SERVICECLIENTDATATRANSMITTER_H_
|
||||||
|
|
||||||
|
#include "EXITypes.h"
|
||||||
|
|
||||||
|
/* This method has to be implemented!
|
||||||
|
* This method sends EXI stream (outStream) to the EVSE and receives response stream (inStream)*/
|
||||||
|
int serviceDataTransmitter(uint8_t* outStream, uint16_t outStreamLength, uint8_t* inStream);
|
||||||
|
|
||||||
|
#endif /* V2G_SERVICECLIENTDATATRANSMITTER_H_ */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
1698
src/service/v2g_serviceClientStubs.c
Normal file
1698
src/service/v2g_serviceClientStubs.c
Normal file
File diff suppressed because it is too large
Load diff
158
src/service/v2g_serviceClientStubs.h
Normal file
158
src/service/v2g_serviceClientStubs.h
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007-2010 Siemens AG
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
*
|
||||||
|
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||||
|
* @version 0.3.1
|
||||||
|
* @contact Joerg.Heuer@siemens.com
|
||||||
|
*
|
||||||
|
********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef SERVICECLIENTSTUBS_H
|
||||||
|
#define SERVICECLIENTSTUBS_H
|
||||||
|
|
||||||
|
#include "v2g_service.h"
|
||||||
|
#include "v2g_serviceDataTypes.h"
|
||||||
|
#include "v2g_serviceClientStubs.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calls the remote sessionSetup method
|
||||||
|
* \param service struct EXIService* Service data structure (has to be initialized before)
|
||||||
|
* \param header struct HeaderType* Header data structure
|
||||||
|
* \param params struct SessionSetupReqType* Request data for the server (has to be set up before)
|
||||||
|
* \param result struct SessionSetupResType* Contains the response data from the server
|
||||||
|
* \return 0 = 0K; -1 = ERROR */
|
||||||
|
int call_sessionSetup(struct EXIService* service, struct HeaderType* header, struct SessionSetupReqType* params, struct SessionSetupResType* result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calls the remote serviceDiscovery method
|
||||||
|
* \param service struct EXIService* Service data structure (has to be initialized before)
|
||||||
|
* \param header struct HeaderType* Header data structure
|
||||||
|
* \param params struct ServiceDiscoveryReqType* Request data for the server (has to be set up before)
|
||||||
|
* \param result struct ServiceDiscoveryResType* Contains the response data from the server
|
||||||
|
* \return 0 = 0K; -1 = ERROR */
|
||||||
|
int call_serviceDiscovery(struct EXIService* service, struct HeaderType* header, struct ServiceDiscoveryReqType* params, struct ServiceDiscoveryResType* result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calls the remote selectedServicePayment method
|
||||||
|
* \param service struct EXIService* Service data structure (has to be initialized before)
|
||||||
|
* \param header struct HeaderType* Header data structure
|
||||||
|
* \param params struct ServicePaymentSelectionReqType* Request data for the server (has to be set up before)
|
||||||
|
* \param result struct ServicePaymentSelectionResType* Contains the response data from the server
|
||||||
|
* \return 0 = 0K; -1 = ERROR */
|
||||||
|
int call_selectedServicePayment(struct EXIService* service, struct HeaderType* header, struct ServicePaymentSelectionReqType* params, struct ServicePaymentSelectionResType* result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calls the remote paymentDetails method
|
||||||
|
* \param service struct EXIService* Service data structure (has to be initialized before)
|
||||||
|
* \param header struct HeaderType* Header data structure
|
||||||
|
* \param params struct PaymentDetailsReqType* Request data for the server (has to be set up before)
|
||||||
|
* \param result struct PaymentDetailsResType* Contains the response data from the server
|
||||||
|
* \return 0 = 0K; -1 = ERROR */
|
||||||
|
int call_paymentDetails(struct EXIService* service, struct HeaderType* header, struct PaymentDetailsReqType* params, struct PaymentDetailsResType* result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calls the remote powerDiscovery method
|
||||||
|
* \param service struct EXIService* Service data structure (has to be initialized before)
|
||||||
|
* \param header struct HeaderType* Header data structure
|
||||||
|
* \param params struct PowerDiscoveryReqType* Request data for the server (has to be set up before)
|
||||||
|
* \param result struct PowerDiscoveryResType* Contains the response data from the server
|
||||||
|
* \return 0 = 0K; -1 = ERROR */
|
||||||
|
int call_powerDiscovery(struct EXIService* service, struct HeaderType* header, struct PowerDiscoveryReqType* params, struct PowerDiscoveryResType* result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calls the remote lineLock method
|
||||||
|
* \param service struct EXIService* Service data structure (has to be initialized before)
|
||||||
|
* \param header struct HeaderType* Header data structure
|
||||||
|
* \param params struct LineLockReqType* Request data for the server (has to be set up before)
|
||||||
|
* \param result struct LineLockResType* Contains the response data from the server
|
||||||
|
* \return 0 = 0K; -1 = ERROR */
|
||||||
|
int call_lineLock(struct EXIService* service, struct HeaderType* header, struct LineLockReqType* params, struct LineLockResType* result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calls the remote powerDelivery method
|
||||||
|
* \param service struct EXIService* Service data structure (has to be initialized before)
|
||||||
|
* \param header struct HeaderType* Header data structure
|
||||||
|
* \param params struct PowerDeliveryReqType* Request data for the server (has to be set up before)
|
||||||
|
* \param result struct PowerDeliveryResType* Contains the response data from the server
|
||||||
|
* \return 0 = 0K; -1 = ERROR */
|
||||||
|
int call_powerDelivery(struct EXIService* service, struct HeaderType* header, struct PowerDeliveryReqType* params, struct PowerDeliveryResType* result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calls the remote meteringStatus method
|
||||||
|
* \param service struct EXIService* Service data structure (has to be initialized before)
|
||||||
|
* \param header struct HeaderType* Header data structure
|
||||||
|
* \param result struct MeteringStatusResType* Contains the response data from the server
|
||||||
|
* \return 0 = 0K; -1 = ERROR */
|
||||||
|
int call_meteringStatus(struct EXIService* service, struct HeaderType* header, struct MeteringStatusResType* result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Calls the remote meteringReceipt method
|
||||||
|
* \param service struct EXIService* Service data structure (has to be initialized before)
|
||||||
|
* \param header struct HeaderType* Header data structure
|
||||||
|
* \param params struct MeteringReceiptReqType* Request data for the server (has to be set up before)
|
||||||
|
* \param result struct MeteringReceiptResType* Contains the response data from the server
|
||||||
|
* \return 0 = 0K; -1 = ERROR */
|
||||||
|
int call_meteringReceipt(struct EXIService* service, struct HeaderType* header, struct MeteringReceiptReqType* params, struct MeteringReceiptResType* result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Initialize the v2g client */
|
||||||
|
int init_v2gServiceClient(struct EXIService* service, bytes_t bytes, string_ucs_t string, uint8_t* inStream, size_t max_inStream_size, uint8_t* outStream, size_t max_outStream_size, uint16_t transportHeaderOffset);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
2996
src/service/v2g_serviceDataSerialization.c
Normal file
2996
src/service/v2g_serviceDataSerialization.c
Normal file
File diff suppressed because it is too large
Load diff
357
src/service/v2g_serviceDataTypes.c
Normal file
357
src/service/v2g_serviceDataTypes.c
Normal file
|
@ -0,0 +1,357 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007-2010 Siemens AG
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
*
|
||||||
|
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||||
|
* @version 0.3.1
|
||||||
|
* @contact Joerg.Heuer@siemens.com
|
||||||
|
*
|
||||||
|
********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#include "EXITypes.h"
|
||||||
|
#include "v2g_serviceDataTypes.h"
|
||||||
|
|
||||||
|
|
||||||
|
static void init_SessionInformationType_SessionID(struct SessionInformationType_SessionID* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_SessionInformationType_ServiceSessionID(struct SessionInformationType_ServiceSessionID* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_SessionInformationType_ProtocolVersion(struct SessionInformationType_ProtocolVersion* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_SessionInformationType(struct SessionInformationType* type)
|
||||||
|
{
|
||||||
|
init_SessionInformationType_SessionID(&(type->SessionID));
|
||||||
|
init_SessionInformationType_ServiceSessionID(&(type->ServiceSessionID));
|
||||||
|
type->isused.ServiceSessionID=0;
|
||||||
|
init_SessionInformationType_ProtocolVersion(&(type->ProtocolVersion));
|
||||||
|
type->isused.ProtocolVersion=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_NotificationType_FaultMsg(struct NotificationType_FaultMsg* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_NotificationType(struct NotificationType* type)
|
||||||
|
{
|
||||||
|
type->isused.FaultCode=0;
|
||||||
|
init_NotificationType_FaultMsg(&(type->FaultMsg));
|
||||||
|
type->isused.FaultMsg=0;
|
||||||
|
type->isused.EventList=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_HeaderType(struct HeaderType* type)
|
||||||
|
{
|
||||||
|
init_SessionInformationType(&(type->SessionInformation));
|
||||||
|
init_NotificationType(&(type->Notification));
|
||||||
|
type->isused.Notification=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_SessionSetupReqType_PEVID(struct SessionSetupReqType_PEVID* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_SessionSetupReqType(struct SessionSetupReqType* type)
|
||||||
|
{
|
||||||
|
init_SessionSetupReqType_PEVID(&(type->PEVID));
|
||||||
|
type->isused.PEVID=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_SessionSetupResType_EVSEID(struct SessionSetupResType_EVSEID* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_SessionSetupResType(struct SessionSetupResType* type)
|
||||||
|
{
|
||||||
|
init_SessionSetupResType_EVSEID(&(type->EVSEID));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_ServiceDiscoveryReqType_ServiceScope(struct ServiceDiscoveryReqType_ServiceScope* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_ServiceDiscoveryReqType(struct ServiceDiscoveryReqType* type)
|
||||||
|
{
|
||||||
|
type->isused.ServiceType=0;
|
||||||
|
init_ServiceDiscoveryReqType_ServiceScope(&(type->ServiceScope));
|
||||||
|
type->isused.ServiceScope=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_ServiceDescriptionType_ServiceID(struct ServiceDescriptionType_ServiceID* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_ServiceDescriptionType_ServiceName(struct ServiceDescriptionType_ServiceName* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_ServiceDescriptionType_ServiceScope(struct ServiceDescriptionType_ServiceScope* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_ServiceDescriptionType(struct ServiceDescriptionType* type)
|
||||||
|
{
|
||||||
|
init_ServiceDescriptionType_ServiceID(&(type->ServiceID));
|
||||||
|
init_ServiceDescriptionType_ServiceName(&(type->ServiceName));
|
||||||
|
type->isused.ServiceName=0;
|
||||||
|
type->isused.ServiceType=0;
|
||||||
|
init_ServiceDescriptionType_ServiceScope(&(type->ServiceScope));
|
||||||
|
type->isused.ServiceScope=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_ServiceListType(struct ServiceListType* type)
|
||||||
|
{
|
||||||
|
int i_loop;
|
||||||
|
|
||||||
|
for(i_loop=0; i_loop<8;i_loop++)
|
||||||
|
{
|
||||||
|
init_ServiceDescriptionType(&(type->Service[i_loop]));
|
||||||
|
}
|
||||||
|
|
||||||
|
type->arraylen.Service=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_ServiceDiscoveryResType(struct ServiceDiscoveryResType* type)
|
||||||
|
{
|
||||||
|
init_ServiceListType(&(type->ServiceList));
|
||||||
|
type->isused.ServiceList=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_ServicePaymentSelectionReqType(struct ServicePaymentSelectionReqType* type)
|
||||||
|
{
|
||||||
|
init_ServiceListType(&(type->ServiceList));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_PaymentDetailsReqType_ContractID(struct PaymentDetailsReqType_ContractID* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_PaymentDetailsReqType(struct PaymentDetailsReqType* type)
|
||||||
|
{
|
||||||
|
init_PaymentDetailsReqType_ContractID(&(type->ContractID));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_PowerDiscoveryReqType(struct PowerDiscoveryReqType* type)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_PowerDiscoveryResType_EnergyProvider(struct PowerDiscoveryResType_EnergyProvider* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_TariffTableType_Currency(struct TariffTableType_Currency* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_TariffDescrType_TariffDescription(struct TariffDescrType_TariffDescription* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_TariffEntryType(struct TariffEntryType* type)
|
||||||
|
{
|
||||||
|
type->isused.EPrice=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_TariffEntriesType(struct TariffEntriesType* type)
|
||||||
|
{
|
||||||
|
int i_loop;
|
||||||
|
|
||||||
|
for(i_loop=0; i_loop<8;i_loop++)
|
||||||
|
{
|
||||||
|
init_TariffEntryType(&(type->TariffEntry[i_loop]));
|
||||||
|
}
|
||||||
|
|
||||||
|
type->arraylen.TariffEntry=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_TariffDescrType(struct TariffDescrType* type)
|
||||||
|
{
|
||||||
|
init_TariffDescrType_TariffDescription(&(type->TariffDescription));
|
||||||
|
type->isused.TariffDescription=0;
|
||||||
|
init_TariffEntriesType(&(type->TariffEntries));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_TariffTableType(struct TariffTableType* type)
|
||||||
|
{
|
||||||
|
int i_loop;
|
||||||
|
|
||||||
|
init_TariffTableType_Currency(&(type->Currency));
|
||||||
|
for(i_loop=0; i_loop<6;i_loop++)
|
||||||
|
{
|
||||||
|
init_TariffDescrType(&(type->Tariff[i_loop]));
|
||||||
|
}
|
||||||
|
|
||||||
|
type->arraylen.Tariff=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_PowerDiscoveryResType(struct PowerDiscoveryResType* type)
|
||||||
|
{
|
||||||
|
init_PowerDiscoveryResType_EnergyProvider(&(type->EnergyProvider));
|
||||||
|
type->isused.EnergyProvider=0;
|
||||||
|
init_TariffTableType(&(type->TariffTable));
|
||||||
|
type->isused.TariffTable=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_LineLockReqType(struct LineLockReqType* type)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_LineLockResType(struct LineLockResType* type)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_PowerDeliveryReqType(struct PowerDeliveryReqType* type)
|
||||||
|
{
|
||||||
|
type->isused.Tariff=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_MeteringStatusResType_EVSEID(struct MeteringStatusResType_EVSEID* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_MeterInfoType_MeterID(struct MeterInfoType_MeterID* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_MeterInfoType(struct MeterInfoType* type)
|
||||||
|
{
|
||||||
|
init_MeterInfoType_MeterID(&(type->MeterID));
|
||||||
|
type->isused.MeterID=0;
|
||||||
|
type->isused.MeterReading=0;
|
||||||
|
type->isused.MeterStatus=0;
|
||||||
|
type->isused.TMeter=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_MeteringStatusResType(struct MeteringStatusResType* type)
|
||||||
|
{
|
||||||
|
init_MeteringStatusResType_EVSEID(&(type->EVSEID));
|
||||||
|
type->isused.PCurrent=0;
|
||||||
|
init_MeterInfoType(&(type->MeterInfo));
|
||||||
|
type->isused.MeterInfo=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_MeteringReceiptReqType_PEVID(struct MeteringReceiptReqType_PEVID* type)
|
||||||
|
{
|
||||||
|
type->arraylen.data=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_MeteringReceiptReqType(struct MeteringReceiptReqType* type)
|
||||||
|
{
|
||||||
|
init_MeteringReceiptReqType_PEVID(&(type->PEVID));
|
||||||
|
type->isused.PEVID=0;
|
||||||
|
type->isused.TCurrent=0;
|
||||||
|
init_MeterInfoType(&(type->MeterInfo));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_BodyType(struct BodyType* type)
|
||||||
|
{
|
||||||
|
type->isused.SessionSetupReq=0;
|
||||||
|
type->isused.SessionSetupRes=0;
|
||||||
|
type->isused.ServiceDiscoveryReq=0;
|
||||||
|
type->isused.ServiceDiscoveryRes=0;
|
||||||
|
type->isused.ServicePaymentSelectionReq=0;
|
||||||
|
type->isused.ServicePaymentSelectionRes=0;
|
||||||
|
type->isused.PaymentDetailsReq=0;
|
||||||
|
type->isused.PaymentDetailsRes=0;
|
||||||
|
type->isused.PowerDiscoveryReq=0;
|
||||||
|
type->isused.PowerDiscoveryRes=0;
|
||||||
|
type->isused.LineLockReq=0;
|
||||||
|
type->isused.LineLockRes=0;
|
||||||
|
type->isused.PowerDeliveryReq=0;
|
||||||
|
type->isused.PowerDeliveryRes=0;
|
||||||
|
type->isused.MeteringStatusReq=0;
|
||||||
|
type->isused.MeteringStatusRes=0;
|
||||||
|
type->isused.MeteringReceiptReq=0;
|
||||||
|
type->isused.MeteringReceiptRes=0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_AnonType_V2G_Message(struct AnonType_V2G_Message* type)
|
||||||
|
{
|
||||||
|
init_BodyType(&(type->Body));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_EXIDocumentType(struct EXIDocumentType* type)
|
||||||
|
{
|
||||||
|
init_AnonType_V2G_Message(&(type->V2G_Message));
|
||||||
|
|
||||||
|
}
|
924
src/service/v2g_serviceDataTypes.h
Normal file
924
src/service/v2g_serviceDataTypes.h
Normal file
|
@ -0,0 +1,924 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007-2010 Siemens AG
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
*
|
||||||
|
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||||
|
* @version 0.3.1
|
||||||
|
* @contact Joerg.Heuer@siemens.com
|
||||||
|
*
|
||||||
|
********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef SERVICEDATATYPES_H
|
||||||
|
#define SERVICEDATATYPES_H
|
||||||
|
|
||||||
|
#include "EXITypes.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
enum faultCodeType
|
||||||
|
{
|
||||||
|
ParsingError_faultCodeType,
|
||||||
|
V2GProtocolVersionNotSupported_faultCodeType,
|
||||||
|
UnknownError_faultCodeType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum eventEntryType
|
||||||
|
{
|
||||||
|
InitiateSessionSetup_eventEntryType,
|
||||||
|
InitiateServiceDiscovery_eventEntryType,
|
||||||
|
InitiatePowerDiscovery_eventEntryType,
|
||||||
|
InitiateLineLock_eventEntryType,
|
||||||
|
InitiatePowerDelivery_eventEntryType,
|
||||||
|
InitiateInitiateMeteringStatus_eventEntryType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum responseCode_SessionSetupType
|
||||||
|
{
|
||||||
|
OK_SessionSetup_responseCode_SessionSetupType,
|
||||||
|
OK_NewSessionEstablished_responseCode_SessionSetupType,
|
||||||
|
OK_OldSessionJoined_responseCode_SessionSetupType,
|
||||||
|
FAILED_UnknownSession_responseCode_SessionSetupType,
|
||||||
|
FAILED_SessionEstablishmentError_responseCode_SessionSetupType,
|
||||||
|
FAILED_UnknownError_InSessionSetup_responseCode_SessionSetupType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum serviceTypeType
|
||||||
|
{
|
||||||
|
PEV_Recharge_serviceTypeType,
|
||||||
|
Remote_Customer_Support_serviceTypeType,
|
||||||
|
Internet_serviceTypeType,
|
||||||
|
Other_serviceTypeType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum responseCode_ServiceDiscoveryType
|
||||||
|
{
|
||||||
|
OK_ServiceDiscovery_responseCode_ServiceDiscoveryType,
|
||||||
|
FAILED_NoServicesOfThisType_responseCode_ServiceDiscoveryType,
|
||||||
|
FAILED_NoServicesInThisScope_responseCode_ServiceDiscoveryType,
|
||||||
|
FAILED_NoServicesOfThisTypeScope_responseCode_ServiceDiscoveryType,
|
||||||
|
FAILED_NoServicesFound_responseCode_ServiceDiscoveryType,
|
||||||
|
FAILED_UnknownError_InServiceDiscovery_responseCode_ServiceDiscoveryType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum responseCode_ServicePaymentSelectionType
|
||||||
|
{
|
||||||
|
OK_ServicePaymentSelection_responseCode_ServicePaymentSelectionType,
|
||||||
|
FAILED_ServiceSelectionInvalid_responseCode_ServicePaymentSelectionType,
|
||||||
|
FAILED_PaymentSelectionInvalid_responseCode_ServicePaymentSelectionType,
|
||||||
|
FAILED_UnknownError_InServicePaymentSelection_responseCode_ServicePaymentSelectionType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum responseCode_PaymentDetailsType
|
||||||
|
{
|
||||||
|
OK_PaymentDetails_responseCode_PaymentDetailsType,
|
||||||
|
FAILED_PaymentDetailsInvalid_responseCode_PaymentDetailsType,
|
||||||
|
FAILED_UnknownError_responseCode_PaymentDetailsType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum unitMultiplierType
|
||||||
|
{
|
||||||
|
d_unitMultiplierType,
|
||||||
|
c_unitMultiplierType,
|
||||||
|
m_unitMultiplierType,
|
||||||
|
micro_unitMultiplierType,
|
||||||
|
n_unitMultiplierType,
|
||||||
|
p_unitMultiplierType,
|
||||||
|
k_unitMultiplierType,
|
||||||
|
M_unitMultiplierType,
|
||||||
|
G_unitMultiplierType,
|
||||||
|
T_unitMultiplierType,
|
||||||
|
none_unitMultiplierType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum unitSymbolType
|
||||||
|
{
|
||||||
|
A_unitSymbolType,
|
||||||
|
deg_unitSymbolType,
|
||||||
|
F_unitSymbolType,
|
||||||
|
g_unitSymbolType,
|
||||||
|
h_unitSymbolType,
|
||||||
|
J_unitSymbolType,
|
||||||
|
J_s_unitSymbolType,
|
||||||
|
kg_J_unitSymbolType,
|
||||||
|
min_unitSymbolType,
|
||||||
|
N_unitSymbolType,
|
||||||
|
ohm_unitSymbolType,
|
||||||
|
s_unitSymbolType,
|
||||||
|
S_unitSymbolType,
|
||||||
|
s_1_unitSymbolType,
|
||||||
|
V_unitSymbolType,
|
||||||
|
V_VAr_unitSymbolType,
|
||||||
|
VA_unitSymbolType,
|
||||||
|
VAh_unitSymbolType,
|
||||||
|
VAr_unitSymbolType,
|
||||||
|
VArh_unitSymbolType,
|
||||||
|
W_unitSymbolType,
|
||||||
|
W_Hz_unitSymbolType,
|
||||||
|
W_s_unitSymbolType,
|
||||||
|
Wh_unitSymbolType,
|
||||||
|
Ah_unitSymbolType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum responseCode_PowerDiscoveryType
|
||||||
|
{
|
||||||
|
OK_PowerDiscovery_responseCode_PowerDiscoveryType,
|
||||||
|
FAILED_UnknownError_InPowerDiscovery_responseCode_PowerDiscoveryType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum tariffIDType
|
||||||
|
{
|
||||||
|
Standard_charge_tariffIDType,
|
||||||
|
Fast_charge_tariffIDType,
|
||||||
|
Green_charge_tariffIDType,
|
||||||
|
Grid_friendly_charge_tariffIDType,
|
||||||
|
Freely_parameterisable_charge_tariffIDType,
|
||||||
|
Charge_under_reserve_tariffIDType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum responseCode_LineLockType
|
||||||
|
{
|
||||||
|
OK_LineLock_responseCode_LineLockType,
|
||||||
|
FAILED_LineLockNotApplied_responseCode_LineLockType,
|
||||||
|
FAILED_UnknownError_InLineLock_responseCode_LineLockType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum responseCode_PowerDeliveryType
|
||||||
|
{
|
||||||
|
OK_PowerDelivery_responseCode_PowerDeliveryType,
|
||||||
|
FAILED_PowerDeliveryNotApplied_responseCode_PowerDeliveryType,
|
||||||
|
FAILED_TariffSelectionInvalid_responseCode_PowerDeliveryType,
|
||||||
|
FAILED_ChargingProfileInvalid_responseCode_PowerDeliveryType,
|
||||||
|
FAILED_UnknownError_InPowerDelivery_responseCode_PowerDeliveryType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum responseCode_MeteringStatusType
|
||||||
|
{
|
||||||
|
OK_MeteringStatus_responseCode_MeteringStatusType,
|
||||||
|
FAILED_UnknownError_InMeteringStatus_responseCode_MeteringStatusType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum responseCode_MeteringReceiptType
|
||||||
|
{
|
||||||
|
OK_MeteringReceipt_responseCode_MeteringReceiptType,
|
||||||
|
FAILED_UnknownError_MeteringReceipt_responseCode_MeteringReceiptType
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct arraylen_SessionInformationType_SessionID
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SessionInformationType_SessionID
|
||||||
|
{
|
||||||
|
uint8_t data[8];
|
||||||
|
struct arraylen_SessionInformationType_SessionID arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_SessionInformationType_ServiceSessionID
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SessionInformationType_ServiceSessionID
|
||||||
|
{
|
||||||
|
uint8_t data[8];
|
||||||
|
struct arraylen_SessionInformationType_ServiceSessionID arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_SessionInformationType
|
||||||
|
{
|
||||||
|
unsigned int ServiceSessionID:1;
|
||||||
|
unsigned int ProtocolVersion:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_SessionInformationType_ProtocolVersion
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SessionInformationType_ProtocolVersion
|
||||||
|
{
|
||||||
|
uint32_t data[5];
|
||||||
|
struct arraylen_SessionInformationType_ProtocolVersion arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SessionInformationType
|
||||||
|
{
|
||||||
|
struct SessionInformationType_SessionID SessionID;
|
||||||
|
struct SessionInformationType_ServiceSessionID ServiceSessionID;
|
||||||
|
struct SessionInformationType_ProtocolVersion ProtocolVersion;
|
||||||
|
struct selection_SessionInformationType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_NotificationType
|
||||||
|
{
|
||||||
|
unsigned int FaultCode:1;
|
||||||
|
unsigned int FaultMsg:1;
|
||||||
|
unsigned int EventList:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_NotificationType_FaultMsg
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NotificationType_FaultMsg
|
||||||
|
{
|
||||||
|
uint32_t data[256];
|
||||||
|
struct arraylen_NotificationType_FaultMsg arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct EventListType
|
||||||
|
{
|
||||||
|
enum eventEntryType Event;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NotificationType
|
||||||
|
{
|
||||||
|
enum faultCodeType FaultCode;
|
||||||
|
struct NotificationType_FaultMsg FaultMsg;
|
||||||
|
struct EventListType EventList;
|
||||||
|
struct selection_NotificationType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_HeaderType
|
||||||
|
{
|
||||||
|
unsigned int Notification:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct HeaderType
|
||||||
|
{
|
||||||
|
struct SessionInformationType SessionInformation;
|
||||||
|
struct NotificationType Notification;
|
||||||
|
struct selection_HeaderType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_SessionSetupReqType_PEVID
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SessionSetupReqType_PEVID
|
||||||
|
{
|
||||||
|
uint32_t data[32];
|
||||||
|
struct arraylen_SessionSetupReqType_PEVID arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_SessionSetupReqType
|
||||||
|
{
|
||||||
|
unsigned int PEVID:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PEVStatusType
|
||||||
|
{
|
||||||
|
int ConnectorLocked;
|
||||||
|
int ChargerStandby;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SessionSetupReqType
|
||||||
|
{
|
||||||
|
struct SessionSetupReqType_PEVID PEVID;
|
||||||
|
struct PEVStatusType PEVStatus;
|
||||||
|
struct selection_SessionSetupReqType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_BodyType
|
||||||
|
{
|
||||||
|
unsigned int SessionSetupReq:1;
|
||||||
|
unsigned int SessionSetupRes:1;
|
||||||
|
unsigned int ServiceDiscoveryReq:1;
|
||||||
|
unsigned int ServiceDiscoveryRes:1;
|
||||||
|
unsigned int ServicePaymentSelectionReq:1;
|
||||||
|
unsigned int ServicePaymentSelectionRes:1;
|
||||||
|
unsigned int PaymentDetailsReq:1;
|
||||||
|
unsigned int PaymentDetailsRes:1;
|
||||||
|
unsigned int PowerDiscoveryReq:1;
|
||||||
|
unsigned int PowerDiscoveryRes:1;
|
||||||
|
unsigned int LineLockReq:1;
|
||||||
|
unsigned int LineLockRes:1;
|
||||||
|
unsigned int PowerDeliveryReq:1;
|
||||||
|
unsigned int PowerDeliveryRes:1;
|
||||||
|
unsigned int MeteringStatusReq:1;
|
||||||
|
unsigned int MeteringStatusRes:1;
|
||||||
|
unsigned int MeteringReceiptReq:1;
|
||||||
|
unsigned int MeteringReceiptRes:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_SessionSetupResType_EVSEID
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SessionSetupResType_EVSEID
|
||||||
|
{
|
||||||
|
uint8_t data[32];
|
||||||
|
struct arraylen_SessionSetupResType_EVSEID arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct EVSEStatusType
|
||||||
|
{
|
||||||
|
int FatalError;
|
||||||
|
int EVSEStandby;
|
||||||
|
int ConnectorLocked;
|
||||||
|
int PowerSwitchClosed;
|
||||||
|
int RCD;
|
||||||
|
int32_t ShutDownTime;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SessionSetupResType
|
||||||
|
{
|
||||||
|
enum responseCode_SessionSetupType ResponseCode;
|
||||||
|
struct SessionSetupResType_EVSEID EVSEID;
|
||||||
|
struct EVSEStatusType EVSEStatus;
|
||||||
|
int32_t TCurrent;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_ServiceDiscoveryReqType
|
||||||
|
{
|
||||||
|
unsigned int ServiceType:1;
|
||||||
|
unsigned int ServiceScope:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_ServiceDiscoveryReqType_ServiceScope
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ServiceDiscoveryReqType_ServiceScope
|
||||||
|
{
|
||||||
|
uint32_t data[20];
|
||||||
|
struct arraylen_ServiceDiscoveryReqType_ServiceScope arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ServiceDiscoveryReqType
|
||||||
|
{
|
||||||
|
enum serviceTypeType ServiceType;
|
||||||
|
struct ServiceDiscoveryReqType_ServiceScope ServiceScope;
|
||||||
|
struct selection_ServiceDiscoveryReqType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_ServiceDescriptionType_ServiceID
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ServiceDescriptionType_ServiceID
|
||||||
|
{
|
||||||
|
uint8_t data[8];
|
||||||
|
struct arraylen_ServiceDescriptionType_ServiceID arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_ServiceDescriptionType_ServiceName
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ServiceDescriptionType_ServiceName
|
||||||
|
{
|
||||||
|
uint32_t data[20];
|
||||||
|
struct arraylen_ServiceDescriptionType_ServiceName arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_ServiceDescriptionType
|
||||||
|
{
|
||||||
|
unsigned int ServiceName:1;
|
||||||
|
unsigned int ServiceType:1;
|
||||||
|
unsigned int ServiceScope:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_ServiceDescriptionType_ServiceScope
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ServiceDescriptionType_ServiceScope
|
||||||
|
{
|
||||||
|
uint32_t data[20];
|
||||||
|
struct arraylen_ServiceDescriptionType_ServiceScope arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ServiceDescriptionType
|
||||||
|
{
|
||||||
|
struct ServiceDescriptionType_ServiceID ServiceID;
|
||||||
|
struct ServiceDescriptionType_ServiceName ServiceName;
|
||||||
|
enum serviceTypeType ServiceType;
|
||||||
|
struct ServiceDescriptionType_ServiceScope ServiceScope;
|
||||||
|
struct selection_ServiceDescriptionType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_ServiceListType
|
||||||
|
{
|
||||||
|
size_t Service;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ServiceListType
|
||||||
|
{
|
||||||
|
struct ServiceDescriptionType Service[8];
|
||||||
|
struct arraylen_ServiceListType arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_ServiceDiscoveryResType
|
||||||
|
{
|
||||||
|
unsigned int ServiceList:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ServiceDiscoveryResType
|
||||||
|
{
|
||||||
|
enum responseCode_ServiceDiscoveryType ResponseCode;
|
||||||
|
struct ServiceListType ServiceList;
|
||||||
|
struct selection_ServiceDiscoveryResType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ServicePaymentSelectionReqType
|
||||||
|
{
|
||||||
|
struct ServiceListType ServiceList;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ServicePaymentSelectionResType
|
||||||
|
{
|
||||||
|
enum responseCode_ServicePaymentSelectionType ResponseCode;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_PaymentDetailsReqType_ContractID
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PaymentDetailsReqType_ContractID
|
||||||
|
{
|
||||||
|
uint32_t data[128];
|
||||||
|
struct arraylen_PaymentDetailsReqType_ContractID arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PaymentDetailsReqType
|
||||||
|
{
|
||||||
|
struct PaymentDetailsReqType_ContractID ContractID;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PaymentDetailsResType
|
||||||
|
{
|
||||||
|
enum responseCode_PaymentDetailsType ResponseCode;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct FloatingValueType
|
||||||
|
{
|
||||||
|
enum unitMultiplierType Multiplier;
|
||||||
|
enum unitSymbolType Unit;
|
||||||
|
int32_t Value;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PowerDiscoveryReqType
|
||||||
|
{
|
||||||
|
struct PEVStatusType PEVStatus;
|
||||||
|
int32_t EoC;
|
||||||
|
struct FloatingValueType EAmount;
|
||||||
|
struct FloatingValueType PEVMaxPower;
|
||||||
|
int16_t PEVMaxPhases;
|
||||||
|
struct FloatingValueType PEVMaxVoltage;
|
||||||
|
struct FloatingValueType PEVMinVoltage;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_PowerDiscoveryResType_EnergyProvider
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PowerDiscoveryResType_EnergyProvider
|
||||||
|
{
|
||||||
|
uint32_t data[20];
|
||||||
|
struct arraylen_PowerDiscoveryResType_EnergyProvider arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_PowerDiscoveryResType
|
||||||
|
{
|
||||||
|
unsigned int EnergyProvider:1;
|
||||||
|
unsigned int TariffTable:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_TariffTableType_Currency
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TariffTableType_Currency
|
||||||
|
{
|
||||||
|
uint32_t data[3];
|
||||||
|
struct arraylen_TariffTableType_Currency arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_TariffDescrType_TariffDescription
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TariffDescrType_TariffDescription
|
||||||
|
{
|
||||||
|
uint32_t data[32];
|
||||||
|
struct arraylen_TariffDescrType_TariffDescription arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_TariffDescrType
|
||||||
|
{
|
||||||
|
unsigned int TariffDescription:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_TariffEntryType
|
||||||
|
{
|
||||||
|
unsigned int EPrice:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TariffEntryType
|
||||||
|
{
|
||||||
|
uint32_t TariffStart;
|
||||||
|
struct FloatingValueType TariffPMax;
|
||||||
|
struct FloatingValueType EPrice;
|
||||||
|
struct selection_TariffEntryType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_TariffEntriesType
|
||||||
|
{
|
||||||
|
size_t TariffEntry;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TariffEntriesType
|
||||||
|
{
|
||||||
|
struct TariffEntryType TariffEntry[8];
|
||||||
|
struct arraylen_TariffEntriesType arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TariffDescrType
|
||||||
|
{
|
||||||
|
enum tariffIDType TariffID;
|
||||||
|
struct TariffDescrType_TariffDescription TariffDescription;
|
||||||
|
struct TariffEntriesType TariffEntries;
|
||||||
|
struct selection_TariffDescrType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_TariffTableType
|
||||||
|
{
|
||||||
|
size_t Tariff;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TariffTableType
|
||||||
|
{
|
||||||
|
struct TariffTableType_Currency Currency;
|
||||||
|
struct TariffDescrType Tariff[6];
|
||||||
|
struct arraylen_TariffTableType arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PowerDiscoveryResType
|
||||||
|
{
|
||||||
|
enum responseCode_PowerDiscoveryType ResponseCode;
|
||||||
|
struct EVSEStatusType EVSEStatus;
|
||||||
|
struct FloatingValueType EVSEVoltage;
|
||||||
|
struct FloatingValueType EVSEIMax;
|
||||||
|
int16_t EVSEMaxPhases;
|
||||||
|
struct PowerDiscoveryResType_EnergyProvider EnergyProvider;
|
||||||
|
struct TariffTableType TariffTable;
|
||||||
|
struct selection_PowerDiscoveryResType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct LineLockReqType
|
||||||
|
{
|
||||||
|
struct PEVStatusType PEVStatus;
|
||||||
|
int ReqLockStatus;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct LineLockResType
|
||||||
|
{
|
||||||
|
enum responseCode_LineLockType ResponseCode;
|
||||||
|
struct EVSEStatusType EVSEStatus;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_PowerDeliveryReqType
|
||||||
|
{
|
||||||
|
unsigned int Tariff:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PowerDeliveryReqType
|
||||||
|
{
|
||||||
|
struct PEVStatusType PEVStatus;
|
||||||
|
int ReqSwitchStatus;
|
||||||
|
enum tariffIDType Tariff;
|
||||||
|
struct selection_PowerDeliveryReqType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PowerDeliveryResType
|
||||||
|
{
|
||||||
|
enum responseCode_PowerDeliveryType ResponseCode;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MeteringStatusReqType
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
int NO_MEMBER:1;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_MeteringStatusResType_EVSEID
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MeteringStatusResType_EVSEID
|
||||||
|
{
|
||||||
|
uint8_t data[32];
|
||||||
|
struct arraylen_MeteringStatusResType_EVSEID arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_MeteringStatusResType
|
||||||
|
{
|
||||||
|
unsigned int PCurrent:1;
|
||||||
|
unsigned int MeterInfo:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_MeterInfoType_MeterID
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MeterInfoType_MeterID
|
||||||
|
{
|
||||||
|
uint32_t data[32];
|
||||||
|
struct arraylen_MeterInfoType_MeterID arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_MeterInfoType
|
||||||
|
{
|
||||||
|
unsigned int MeterID:1;
|
||||||
|
unsigned int MeterReading:1;
|
||||||
|
unsigned int MeterStatus:1;
|
||||||
|
unsigned int TMeter:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MeterInfoType
|
||||||
|
{
|
||||||
|
struct MeterInfoType_MeterID MeterID;
|
||||||
|
struct FloatingValueType MeterReading;
|
||||||
|
int16_t MeterStatus;
|
||||||
|
int32_t TMeter;
|
||||||
|
struct selection_MeterInfoType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MeteringStatusResType
|
||||||
|
{
|
||||||
|
enum responseCode_MeteringStatusType ResponseCode;
|
||||||
|
struct MeteringStatusResType_EVSEID EVSEID;
|
||||||
|
struct EVSEStatusType EVSEStatus;
|
||||||
|
int32_t TCurrent;
|
||||||
|
struct FloatingValueType EVSEMaxPower;
|
||||||
|
struct FloatingValueType PCurrent;
|
||||||
|
struct MeterInfoType MeterInfo;
|
||||||
|
struct selection_MeteringStatusResType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arraylen_MeteringReceiptReqType_PEVID
|
||||||
|
{
|
||||||
|
size_t data;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MeteringReceiptReqType_PEVID
|
||||||
|
{
|
||||||
|
uint32_t data[32];
|
||||||
|
struct arraylen_MeteringReceiptReqType_PEVID arraylen;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct selection_MeteringReceiptReqType
|
||||||
|
{
|
||||||
|
unsigned int PEVID:1;
|
||||||
|
unsigned int TCurrent:1;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MeteringReceiptReqType
|
||||||
|
{
|
||||||
|
struct MeteringReceiptReqType_PEVID PEVID;
|
||||||
|
struct PEVStatusType PEVStatus;
|
||||||
|
int32_t TCurrent;
|
||||||
|
enum tariffIDType Tariff;
|
||||||
|
struct MeterInfoType MeterInfo;
|
||||||
|
struct selection_MeteringReceiptReqType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MeteringReceiptResType
|
||||||
|
{
|
||||||
|
enum responseCode_MeteringReceiptType ResponseCode;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct BodyType
|
||||||
|
{
|
||||||
|
struct SessionSetupReqType* SessionSetupReq;
|
||||||
|
struct SessionSetupResType* SessionSetupRes;
|
||||||
|
struct ServiceDiscoveryReqType* ServiceDiscoveryReq;
|
||||||
|
struct ServiceDiscoveryResType* ServiceDiscoveryRes;
|
||||||
|
struct ServicePaymentSelectionReqType* ServicePaymentSelectionReq;
|
||||||
|
struct ServicePaymentSelectionResType* ServicePaymentSelectionRes;
|
||||||
|
struct PaymentDetailsReqType* PaymentDetailsReq;
|
||||||
|
struct PaymentDetailsResType* PaymentDetailsRes;
|
||||||
|
struct PowerDiscoveryReqType* PowerDiscoveryReq;
|
||||||
|
struct PowerDiscoveryResType* PowerDiscoveryRes;
|
||||||
|
struct LineLockReqType* LineLockReq;
|
||||||
|
struct LineLockResType* LineLockRes;
|
||||||
|
struct PowerDeliveryReqType* PowerDeliveryReq;
|
||||||
|
struct PowerDeliveryResType* PowerDeliveryRes;
|
||||||
|
struct MeteringStatusReqType* MeteringStatusReq;
|
||||||
|
struct MeteringStatusResType* MeteringStatusRes;
|
||||||
|
struct MeteringReceiptReqType* MeteringReceiptReq;
|
||||||
|
struct MeteringReceiptResType* MeteringReceiptRes;
|
||||||
|
struct selection_BodyType isused;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct AnonType_V2G_Message
|
||||||
|
{
|
||||||
|
struct HeaderType* Header;
|
||||||
|
struct BodyType Body;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct EXIDocumentType
|
||||||
|
{
|
||||||
|
struct AnonType_V2G_Message V2G_Message;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
1178
src/service/v2g_serviceDispatcher.c
Normal file
1178
src/service/v2g_serviceDispatcher.c
Normal file
File diff suppressed because it is too large
Load diff
43
src/service/v2g_serviceDispatcher.h
Normal file
43
src/service/v2g_serviceDispatcher.h
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007-2010 Siemens AG
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
*
|
||||||
|
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||||
|
* @version 0.3.1
|
||||||
|
* @contact Joerg.Heuer@siemens.com
|
||||||
|
*
|
||||||
|
********************************************************************/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef V2GSERVER_H_
|
||||||
|
#define V2GSERVER_H_
|
||||||
|
|
||||||
|
#include "v2g_serviceDataTypes.h"
|
||||||
|
|
||||||
|
|
||||||
|
int init_v2gservice(struct EXIService* service,bytes_t bytes, string_ucs_t string, uint16_t transportHeaderOffset);
|
||||||
|
int messageDispatcher(struct EXIService* service, uint8_t* inStream, uint16_t sizeInStream, uint8_t* outStream, uint16_t sizeOutStream, uint16_t* outPos);
|
||||||
|
|
||||||
|
#endif /* V2GSERVER_H_ */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
69
src/service/v2g_serviceMethods.h
Normal file
69
src/service/v2g_serviceMethods.h
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007-2010 Siemens AG
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
*
|
||||||
|
* @author Sebastian.Kaebisch.EXT@siemens.com
|
||||||
|
* @version 0.3.1
|
||||||
|
* @contact Joerg.Heuer@siemens.com
|
||||||
|
*
|
||||||
|
********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef SERVICEMETHODS_H
|
||||||
|
#define SERVICEMETHODS_H
|
||||||
|
|
||||||
|
#include "v2g_serviceDataTypes.h"
|
||||||
|
#include "EXITypes.h"
|
||||||
|
|
||||||
|
/* This service methods has to be implemented by the EVSE server */
|
||||||
|
int sessionSetup(struct SessionSetupReqType* param, struct SessionSetupResType* result);
|
||||||
|
|
||||||
|
int serviceDiscovery(struct ServiceDiscoveryReqType* param, struct ServiceDiscoveryResType* result);
|
||||||
|
|
||||||
|
int selectedServicePayment(struct ServicePaymentSelectionReqType* param, struct ServicePaymentSelectionResType* result);
|
||||||
|
|
||||||
|
int paymentDetails(struct PaymentDetailsReqType* param, struct PaymentDetailsResType* result);
|
||||||
|
|
||||||
|
int powerDiscovery(struct PowerDiscoveryReqType* param, struct PowerDiscoveryResType* result);
|
||||||
|
|
||||||
|
int lineLock(struct LineLockReqType* param, struct LineLockResType* result);
|
||||||
|
|
||||||
|
int powerDelivery(struct PowerDeliveryReqType* param, struct PowerDeliveryResType* result);
|
||||||
|
|
||||||
|
int meteringStatus(struct MeteringStatusReqType* param, struct MeteringStatusResType* result);
|
||||||
|
|
||||||
|
int meteringReceipt(struct MeteringReceiptReqType* param, struct MeteringReceiptResType* result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
Loading…
Reference in a new issue