add files
This commit is contained in:
6
temp/V2Gdecoder/META-INF/MANIFEST.MF
Normal file
6
temp/V2Gdecoder/META-INF/MANIFEST.MF
Normal file
@@ -0,0 +1,6 @@
|
||||
Manifest-Version: 1.0
|
||||
Archiver-Version: Plexus Archiver
|
||||
Built-By: fluxius
|
||||
Created-By: Apache Maven 3.5.0
|
||||
Build-Jdk: 1.8.0_191
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>rise-v2g-shared</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -0,0 +1,5 @@
|
||||
#Generated by Maven
|
||||
#Thu Jan 24 11:57:05 CET 2019
|
||||
version=1.1.4-SNAPSHOT
|
||||
groupId=com.v2gclarity.risev2g
|
||||
artifactId=rise-v2g-shared
|
||||
@@ -0,0 +1,59 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
|
||||
<parent>
|
||||
<groupId>com.v2gclarity.risev2g</groupId>
|
||||
<artifactId>rise-v2g-parent</artifactId>
|
||||
<version>1.1.4-SNAPSHOT</version>
|
||||
<relativePath>../RISE-V2G-PARENT</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>rise-v2g-shared</artifactId>
|
||||
<name>rise-v2g-shared</name>
|
||||
|
||||
<repositories>
|
||||
<!-- OpenEXI jars deployed in the /repo folder of RISE-V2G-Shared.
|
||||
See https://devcenter.heroku.com/articles/local-maven-dependencies for how to deploy .jars locally which are not
|
||||
published in a public Maven repo. -->
|
||||
<repository>
|
||||
<id>project.local</id>
|
||||
<name>project</name>
|
||||
<url>file:${project.basedir}/repo</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.siemens.ct.exi</groupId>
|
||||
<artifactId>exificient</artifactId>
|
||||
<version>0.9.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>xerces</groupId>
|
||||
<artifactId>xercesImpl</artifactId>
|
||||
<version>2.12.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-api</artifactId>
|
||||
<version>2.17.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-core</artifactId>
|
||||
<version>2.17.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.openexi</groupId>
|
||||
<artifactId>nagasena</artifactId>
|
||||
<version>0000.0002.0052.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.openexi</groupId>
|
||||
<artifactId>nagasena-rta</artifactId>
|
||||
<version>0000.0002.0052.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
95
temp/V2Gdecoder/README.md
Normal file
95
temp/V2Gdecoder/README.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# V2Gdecoder
|
||||
|
||||
V2Gdecoder is a tool aimed to encode and decode V2G messages that commonly use EXI to compress exchanged XML files between a car Power-Line Communication module and a charging station.
|
||||
|
||||
This tool is based on [RISE V2G shared library](https://github.com/V2GClarity/RISE-V2G) to easily parse messages.
|
||||
|
||||
A release is available with a compiled Java Runtime binary there: https://github.com/FlUxIuS/V2Gdecoder/releases
|
||||
|
||||
## How to compile or execute
|
||||
Install maven.
|
||||
|
||||
To compile:
|
||||
|
||||
```mvn compile assembly:single```
|
||||
|
||||
To execute:
|
||||
|
||||
```java -jar target/V2Gdecoder-jar-with-dependencies.jar```
|
||||
|
||||
If you wish to update risev2g version to something >1.2.6:
|
||||
|
||||
```
|
||||
git clone https://github.com/V2GClarity/RISE-V2G/
|
||||
cd RISE-V2G/RISE-V2G-PARENT
|
||||
mvn install
|
||||
```
|
||||
|
||||
Now copy RISE-V2G-Shared in our project:
|
||||
|
||||
```cp RISE-V2G/RISE-V2G-Shared/target/rise-v2g-shared-1.2.6.jar src/lib/com.v2gclarity.risev2g/```
|
||||
|
||||
Be aware that you might have to do some changes to the code.
|
||||
|
||||
## How to use
|
||||
|
||||
V2Gdecoder supports many methods to encode XML/decode EXI data as follows:
|
||||
|
||||
```
|
||||
$ java -jar V2Gdecoder.jar -h
|
||||
Unrecognized option: -h
|
||||
usage: V2GEXI Helper
|
||||
-e,--exi EXI format
|
||||
-f,--file <arg> input file path
|
||||
-o,--output output file in a dedicated path
|
||||
-s,--string <arg> string to decode
|
||||
-w,--web Webserver
|
||||
-x,--xml XML format
|
||||
```
|
||||
|
||||
To get it work, the directory "./schemas", containing V2G grammar, should be in tool's root directory.
|
||||
|
||||
### Decoding data
|
||||
|
||||
A compressed EXI data can be decoded as follows:
|
||||
|
||||
```
|
||||
$ java -jar V2Gdecoder.jar -e -s 809802107f860d7bae65dd8a891a1d1d1c0e8bcbddddddcb9dcccb9bdc99cbd5148bd8d85b9bdb9a58d85b0b595e1a50d5a1d1d1c0e8bcbddddddcb9dcccb9bdc99cbcc8c0c0c4bcc0d0bde1b5b191cda59cb5b5bdc9948d958d91cd84b5cda184c8d4d9002b4b21890623696431024687474703a2f2f7777772e77332e6f72672f54522f63616e6f6e6963616c2d6578694852d0e8e8e0745e5eeeeeee5cee665cdee4ce5e646060625e60685ef0dad8cadcc646e6d0c2646a6c84165aa773adf12a841e302f171698e9c4d1e6bb2afdac13826f13ba6a09532c82a2841400000000000501c030a0161005696431001000100240880e201081203840110260a88032940000081030c08018503f03102400c0c3010031039804461800080
|
||||
<?xml version="1.0" encoding="UTF-8"?><ns7:V2G_Message xmlns:ns7="urn:iso:15118:2:2013:MsgDef" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns3="http://www.w3.org/2001/XMLSchema" xmlns:ns4="http://www.w3.org/2000/09/xmldsig#" xmlns:ns5="urn:iso:15118:2:2013:MsgBody" xmlns:ns6="urn:iso:15118:2:2013:MsgDataTypes" xmlns:ns8="urn:iso:15118:2:2013:MsgHeader"><ns7:Header><ns8:SessionID>41FE1835EEB99776</ns8:SessionID><ns4:Signature><ns4:SignedInfo><ns4:CanonicalizationMethod Algorithm="http://www.w3.org/TR/canonical-exi"/><ns4:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256"/><ns4:Reference Id="id1" URI="#id1"><ns4:Transforms><ns4:Transform Algorithm="http://www.w3.org/TR/canonical-exi"/></ns4:Transforms><ns4:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ns4:DigestValue>stU7nW+JVCDxgXi4tMdOJo812VftYJwTeJ3TUEqZZBU=</ns4:DigestValue></ns4:Reference></ns4:SignedInfo><ns4:SignatureValue/></ns4:Signature></ns7:Header><ns7:Body><ns5:ChargeParameterDiscoveryRes><ns5:ResponseCode>OK</ns5:ResponseCode><ns5:EVSEProcessing>Finished</ns5:EVSEProcessing><ns6:SAScheduleList><ns6:SAScheduleTuple><ns6:SAScheduleTupleID>1</ns6:SAScheduleTupleID><ns6:PMaxSchedule><ns6:PMaxScheduleEntry><ns6:RelativeTimeInterval><ns6:start>0</ns6:start><ns6:duration>7200</ns6:duration></ns6:RelativeTimeInterval><ns6:PMax><ns6:Multiplier>3</ns6:Multiplier><ns6:Unit>W</ns6:Unit><ns6:Value>11</ns6:Value></ns6:PMax></ns6:PMaxScheduleEntry></ns6:PMaxSchedule><ns6:SalesTariff ns6:Id="id1"><ns6:SalesTariffID>1</ns6:SalesTariffID><ns6:SalesTariffEntry><ns6:RelativeTimeInterval><ns6:start>0</ns6:start></ns6:RelativeTimeInterval><ns6:EPriceLevel>1</ns6:EPriceLevel></ns6:SalesTariffEntry><ns6:SalesTariffEntry><ns6:RelativeTimeInterval><ns6:start>1800</ns6:start></ns6:RelativeTimeInterval><ns6:EPriceLevel>4</ns6:EPriceLevel></ns6:SalesTariffEntry><ns6:SalesTariffEntry><ns6:RelativeTimeInterval><ns6:start>3600</ns6:start></ns6:RelativeTimeInterval><ns6:EPriceLevel>2</ns6:EPriceLevel></ns6:SalesTariffEntry><ns6:SalesTariffEntry><ns6:RelativeTimeInterval><ns6:start>5400</ns6:start></ns6:RelativeTimeInterval><ns6:EPriceLevel>3</ns6:EPriceLevel></ns6:SalesTariffEntry></ns6:SalesTariff></ns6:SAScheduleTuple></ns6:SAScheduleList><ns6:DC_EVSEChargeParameter><ns6:DC_EVSEStatus><ns6:NotificationMaxDelay>0</ns6:NotificationMaxDelay><ns6:EVSENotification>None</ns6:EVSENotification><ns6:EVSEIsolationStatus>Valid</ns6:EVSEIsolationStatus><ns6:EVSEStatusCode>EVSE_Ready</ns6:EVSEStatusCode></ns6:DC_EVSEStatus><ns6:EVSEMaximumCurrentLimit><ns6:Multiplier>0</ns6:Multiplier><ns6:Unit>A</ns6:Unit><ns6:Value>32</ns6:Value></ns6:EVSEMaximumCurrentLimit><ns6:EVSEMaximumPowerLimit><ns6:Multiplier>3</ns6:Multiplier><ns6:Unit>W</ns6:Unit><ns6:Value>63</ns6:Value></ns6:EVSEMaximumPowerLimit><ns6:EVSEMaximumVoltageLimit><ns6:Multiplier>0</ns6:Multiplier><ns6:Unit>V</ns6:Unit><ns6:Value>400</ns6:Value></ns6:EVSEMaximumVoltageLimit><ns6:EVSEMinimumCurrentLimit><ns6:Multiplier>0</ns6:Multiplier><ns6:Unit>A</ns6:Unit><ns6:Value>16</ns6:Value></ns6:EVSEMinimumCurrentLimit><ns6:EVSEMinimumVoltageLimit><ns6:Multiplier>0</ns6:Multiplier><ns6:Unit>V</ns6:Unit><ns6:Value>230</ns6:Value></ns6:EVSEMinimumVoltageLimit><ns6:EVSEPeakCurrentRipple><ns6:Multiplier>0</ns6:Multiplier><ns6:Unit>A</ns6:Unit><ns6:Value>0</ns6:Value></ns6:EVSEPeakCurrentRipple></ns6:DC_EVSEChargeParameter></ns5:ChargeParameterDiscoveryRes></ns7:Body></ns7:V2G_Message>
|
||||
```
|
||||
By using parameters like "file" and "output", data can be taken from input file and exported in an output path respectively.
|
||||
|
||||
### Encoding data
|
||||
|
||||
In the inverse, the encoding feature can be used as follows:
|
||||
```
|
||||
$ java -jar V2Gdecoder.jar -x -s '<?xml version="1.0" encoding="UTF-8"?><ns4:supportedAppProtocolReq xmlns:ns4="urn:iso:15118:2:2010:AppProtocol" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns3="http://www.w3.org/2001/XMLSchema"><AppProtocol><ProtocolNamespace>urn:din:70121:2012:MsgDef</ProtocolNamespace><VersionNumberMajor>2</VersionNumberMajor><VersionNumberMinor>0</VersionNumberMinor><SchemaID>0</SchemaID><Priority>1</Priority></AppProtocol><AppProtocol><ProtocolNamespace>urn:iso:15118:2:2013:MsgDef</ProtocolNamespace><VersionNumberMajor>2</VersionNumberMajor><VersionNumberMinor>0</VersionNumberMinor><SchemaID>1</SchemaID><Priority>2</Priority></AppProtocol></ns4:supportedAppProtocolReq>'
|
||||
|
||||
8000DBAB9371D3234B71D1B981899189D191818991D26B9B3A232B30020000000001D75726E3A69736F3A31353131383A323A323031333A4D73674465660040000080880
|
||||
```
|
||||
|
||||
### Using the web service
|
||||
|
||||
The tool can be runned as follows:
|
||||
```
|
||||
$ java -jar V2Gdecoder_test.jar -w
|
||||
```
|
||||
This opens a local port TCP 9000.
|
||||
|
||||
You can then use your favorite tool/interpreter to send EXI data to get the reply as follows:
|
||||
```
|
||||
In [1]: import requests
|
||||
In [2]: r = requests.post("http://localhost:9000", headers={"Format":"EXI"}, data="809802107f860d7bae65d
|
||||
...: d8a891a1d1d1c0e8bcbddddddcb9dcccb9bdc99cbd5148bd8d85b9bdb9a58d85b0b595e1a50d5a1d1d1c0e8bcbdddddd
|
||||
...: cb9dcccb9bdc99cbcc8c0c0c4bcc0d0bde1b5b191cda59cb5b5bdc9948d958d91cd84b5cda184c8d4d9002b4b2189062
|
||||
...: 3696431024687474703a2f2f7777772e77332e6f72672f54522f63616e6f6e6963616c2d6578694852d0e8e8e0745e5e
|
||||
...: eeeeee5cee665cdee4ce5e646060625e60685ef0dad8cadcc646e6d0c2646a6c84165aa773adf12a841e302f171698e9
|
||||
...: c4d1e6bb2afdac13826f13ba6a09532c82a2841400000000000501c030a0161005696431001000100240880e20108120
|
||||
...: 3840110260a88032940000081030c08018503f03102400c0c3010031039804461800080")
|
||||
In [3]: r.text
|
||||
Out[3]: u'<?xml version="1.0" encoding="UTF-8"?><ns7:V2G_Message xmlns:ns7="urn:iso:15118:2:2013:MsgDef" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns3="http://www.w3.org/2001/XMLSchema" xmlns:ns4="http://www.w3.org/2000/09/xmldsig#" xmlns:ns5="urn:iso:15118:2:2013:MsgBody" xmlns:ns6="urn:iso:15118:2:2013:MsgDataTypes" xmlns:ns8="urn:iso:15118:2:2013:MsgHeader"><ns7:Header><ns8:SessionID>41FE1835EEB99776</ns8:SessionID><ns4:Signature><ns4:SignedInfo><ns4:CanonicalizationMethod Algorithm="http://www.w3.org/TR/canonical-exi"/><ns4:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256"/><ns4:Reference Id="id1" URI="#id1"><ns4:Transforms><ns4:Transform Algorithm="http://www.w3.org/TR/canonical-exi"/></ns4:Transforms><ns4:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ns4:DigestValue>stU7nW+JVCDxgXi4tMdOJo812VftYJwTeJ3TUEqZZBU=</ns4:DigestValue></ns4:Reference></ns4:SignedInfo><ns4:SignatureValue/></ns4:Signature></ns7:Header><ns7:Body><ns5:ChargeParameterDiscoveryRes><ns5:ResponseCode>OK</ns5:ResponseCode><ns5:EVSEProcessing>Finished</ns5:EVSEProcessing><ns6:SAScheduleList><ns6:SAScheduleTuple><ns6:SAScheduleTupleID>1</ns6:SAScheduleTupleID><ns6:PMaxSchedule><ns6:PMaxScheduleEntry><ns6:RelativeTimeInterval><ns6:start>0</ns6:start><ns6:duration>7200</ns6:duration></ns6:RelativeTimeInterval><ns6:PMax><ns6:Multiplier>3</ns6:Multiplier><ns6:Unit>W</ns6:Unit><ns6:Value>11</ns6:Value></ns6:PMax></ns6:PMaxScheduleEntry></ns6:PMaxSchedule><ns6:SalesTariff ns6:Id="id1"><ns6:SalesTariffID>1</ns6:SalesTariffID><ns6:SalesTariffEntry><ns6:RelativeTimeInterval><ns6:start>0</ns6:start></ns6:RelativeTimeInterval><ns6:EPriceLevel>1</ns6:EPriceLevel></ns6:SalesTariffEntry><ns6:SalesTariffEntry><ns6:RelativeTimeInterval><ns6:start>1800</ns6:start></ns6:RelativeTimeInterval><ns6:EPriceLevel>4</ns6:EPriceLevel></ns6:SalesTariffEntry><ns6:SalesTariffEntry><ns6:RelativeTimeInterval><ns6:start>3600</ns6:start></ns6:RelativeTimeInterval><ns6:EPriceLevel>2</ns6:EPriceLevel></ns6:SalesTariffEntry><ns6:SalesTariffEntry><ns6:RelativeTimeInterval><ns6:start>5400</ns6:start></ns6:RelativeTimeInterval><ns6:EPriceLevel>3</ns6:EPriceLevel></ns6:SalesTariffEntry></ns6:SalesTariff></ns6:SAScheduleTuple></ns6:SAScheduleList><ns6:DC_EVSEChargeParameter><ns6:DC_EVSEStatus><ns6:NotificationMaxDelay>0</ns6:NotificationMaxDelay><ns6:EVSENotification>None</ns6:EVSENotification><ns6:EVSEIsolationStatus>Valid</ns6:EVSEIsolationStatus><ns6:EVSEStatusCode>EVSE_Ready</ns6:EVSEStatusCode></ns6:DC_EVSEStatus><ns6:EVSEMaximumCurrentLimit><ns6:Multiplier>0</ns6:Multiplier><ns6:Unit>A</ns6:Unit><ns6:Value>32</ns6:Value></ns6:EVSEMaximumCurrentLimit><ns6:EVSEMaximumPowerLimit><ns6:Multiplier>3</ns6:Multiplier><ns6:Unit>W</ns6:Unit><ns6:Value>63</ns6:Value></ns6:EVSEMaximumPowerLimit><ns6:EVSEMaximumVoltageLimit><ns6:Multiplier>0</ns6:Multiplier><ns6:Unit>V</ns6:Unit><ns6:Value>400</ns6:Value></ns6:EVSEMaximumVoltageLimit><ns6:EVSEMinimumCurrentLimit><ns6:Multiplier>0</ns6:Multiplier><ns6:Unit>A</ns6:Unit><ns6:Value>16</ns6:Value></ns6:EVSEMinimumCurrentLimit><ns6:EVSEMinimumVoltageLimit><ns6:Multiplier>0</ns6:Multiplier><ns6:Unit>V</ns6:Unit><ns6:Value>230</ns6:Value></ns6:EVSEMinimumVoltageLimit><ns6:EVSEPeakCurrentRipple><ns6:Multiplier>0</ns6:Multiplier><ns6:Unit>A</ns6:Unit><ns6:Value>0</ns6:Value></ns6:EVSEPeakCurrentRipple></ns6:DC_EVSEChargeParameter></ns5:ChargeParameterDiscoveryRes></ns7:Body></ns7:V2G_Message>'
|
||||
```
|
||||
|
||||
## Issues when decoding data
|
||||
|
||||
XML definition schemas are available in the "./schemas" directory. Unfortunately, a lot of constructors use very old definitions. To fix the issue, you can make your own definition or try to contact us for more information.
|
||||
113
temp/V2Gdecoder/pom.xml
Normal file
113
temp/V2Gdecoder/pom.xml
Normal file
@@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.fluxlus.V2Gdecoder</groupId>
|
||||
<artifactId>V2Gdecoder</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
<name>V2Gdecoder</name>
|
||||
<url>https://github.com/FlUxIuS/V2Gdecoder</url>
|
||||
|
||||
<packaging>jar</packaging> <!-- new -->
|
||||
<description>V2Gdecoder description. </description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>1.7</maven.compiler.source>
|
||||
<maven.compiler.target>1.7</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>project-local-repo</id>
|
||||
<url>file://${project.basedir}/src/lib/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-core</artifactId>
|
||||
<version>2.17.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.v2gclarity.risev2g</groupId>
|
||||
<artifactId>rise-v2g-shared</artifactId>
|
||||
<version>1.2.6</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/com.siemens.ct.exi/exificient -->
|
||||
<dependency>
|
||||
<groupId>com.siemens.ct.exi</groupId>
|
||||
<artifactId>exificient</artifactId>
|
||||
<version>1.0.4</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/commons-cli/commons-cli -->
|
||||
<dependency>
|
||||
<groupId>commons-cli</groupId>
|
||||
<artifactId>commons-cli</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>V2Gdecoder</finalName> <!-- added now-->
|
||||
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
|
||||
<plugins>
|
||||
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
|
||||
<plugin>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
</plugin>
|
||||
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
|
||||
<plugin>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>3.0.2</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.22.1</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addClasspath>true</addClasspath>
|
||||
<mainClass>com.fluxlus.V2Gdecoder.V2Gdecoder</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
<descriptorRefs>
|
||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||
</descriptorRefs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<!-- <plugin>
|
||||
<artifactId>maven-install-plugin</artifactId>
|
||||
<version>2.5.2</version>
|
||||
</plugin> -->
|
||||
<plugin>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<version>2.8.2</version>
|
||||
</plugin>
|
||||
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
|
||||
<plugin>
|
||||
<artifactId>maven-site-plugin</artifactId>
|
||||
<version>3.7.1</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-project-info-reports-plugin</artifactId>
|
||||
<version>3.0.0</version>
|
||||
</plugin>
|
||||
<!-- https://mvnrepository.com/artifact/com.siemens.ct.exi/exificient-core -->
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
</project>
|
||||
14
temp/V2Gdecoder/schemas/ReadMe.txt
Normal file
14
temp/V2Gdecoder/schemas/ReadMe.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
1. Generated the Java classes from V2G_CI_MsgDef.xsd into the package v2gMessages.msgDef.
|
||||
This creates all message types defined in
|
||||
- V2G_CI_MsgDef
|
||||
- V2G_CI_MsgHeader
|
||||
- V2G_CI_MsgBody
|
||||
- V2G_CI_MsgDataTypes
|
||||
- xldsig-core-schema.xsd
|
||||
|
||||
|
||||
2. Generated the Java classes from V2G_CI_AppProtocol.xsd into the package v2gMessages.appProtocol
|
||||
(because of the class ResponseCodeType, which is defined in both schema files and would therefore
|
||||
raise conflicts).
|
||||
|
||||
3. Add SECCDiscoveryReq.java and SECCDiscoveryRes.java to the package v2gMessages.
|
||||
55
temp/V2Gdecoder/schemas/V2G_CI_AppProtocol.xsd
Normal file
55
temp/V2Gdecoder/schemas/V2G_CI_AppProtocol.xsd
Normal file
@@ -0,0 +1,55 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2010:AppProtocol"
|
||||
targetNamespace="urn:iso:15118:2:2010:AppProtocol">
|
||||
<xs:element name="supportedAppProtocolReq">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="AppProtocol" type="AppProtocolType" maxOccurs="20"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="supportedAppProtocolRes">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="responseCodeType"/>
|
||||
<xs:element name="SchemaID" type="idType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:complexType name="AppProtocolType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ProtocolNamespace" type="protocolNamespaceType"/>
|
||||
<xs:element name="VersionNumberMajor" type="xs:unsignedInt"/>
|
||||
<xs:element name="VersionNumberMinor" type="xs:unsignedInt"/>
|
||||
<xs:element name="SchemaID" type="idType"/>
|
||||
<xs:element name="Priority" type="priorityType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="idType">
|
||||
<xs:restriction base="xs:unsignedByte"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="protocolNameType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="30"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="protocolNamespaceType">
|
||||
<xs:restriction base="xs:anyURI">
|
||||
<xs:maxLength value="100"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="priorityType">
|
||||
<xs:restriction base="xs:unsignedByte">
|
||||
<xs:minInclusive value="1"/>
|
||||
<xs:maxInclusive value="20"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="responseCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="OK_SuccessfulNegotiation"/>
|
||||
<xs:enumeration value="OK_SuccessfulNegotiationWithMinorDeviation"/>
|
||||
<xs:enumeration value="Failed_NoNegotiation"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
497
temp/V2Gdecoder/schemas/V2G_CI_MsgBody.xsd
Normal file
497
temp/V2Gdecoder/schemas/V2G_CI_MsgBody.xsd
Normal file
@@ -0,0 +1,497 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2013:MsgBody"
|
||||
xmlns:v2gci_d="urn:iso:15118:2:2013:MsgDef"
|
||||
xmlns:v2gci_t="urn:iso:15118:2:2013:MsgDataTypes"
|
||||
targetNamespace="urn:iso:15118:2:2013:MsgBody"
|
||||
elementFormDefault="qualified" attributeFormDefault="qualified">
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgDataTypes" schemaLocation="V2G_CI_MsgDataTypes.xsd"/>
|
||||
<!-- Body -->
|
||||
<xs:complexType name="BodyType">
|
||||
<xs:sequence>
|
||||
<xs:element ref="BodyElement" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="BodyElement" type="BodyBaseType" abstract="true"/>
|
||||
<xs:complexType name="BodyBaseType" abstract="true"/>
|
||||
<!-- ....................... -->
|
||||
<!-- Common Messages (AC/DC) -->
|
||||
<!-- ....................... -->
|
||||
<!-- -->
|
||||
<!-- Session Setup -->
|
||||
<!-- -->
|
||||
<xs:element name="SessionSetupReq" type="SessionSetupReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="SessionSetupReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EVCCID" type="v2gci_t:evccIDType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="SessionSetupRes" type="SessionSetupResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="SessionSetupResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="EVSEID" type="v2gci_t:evseIDType"/>
|
||||
<xs:element name="EVSETimeStamp" type="xs:long" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Service Discovery -->
|
||||
<!-- -->
|
||||
<xs:element name="ServiceDiscoveryReq" type="ServiceDiscoveryReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ServiceDiscoveryReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceScope" type="v2gci_t:serviceScopeType" minOccurs="0"/>
|
||||
<xs:element name="ServiceCategory" type="v2gci_t:serviceCategoryType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ServiceDiscoveryRes" type="ServiceDiscoveryResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ServiceDiscoveryResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="PaymentOptionList" type="v2gci_t:PaymentOptionListType"/>
|
||||
<xs:element name="ChargeService" type="v2gci_t:ChargeServiceType"/>
|
||||
<!--<xs:element name="ServiceList" type="v2gci_t:ServiceTagListType" minOccurs="0"/> -->
|
||||
<xs:element name="ServiceList" type="v2gci_t:ServiceListType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Service Detail -->
|
||||
<!-- -->
|
||||
<xs:element name="ServiceDetailReq" type="ServiceDetailReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ServiceDetailReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceID" type="v2gci_t:serviceIDType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ServiceDetailRes" type="ServiceDetailResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ServiceDetailResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="ServiceID" type="v2gci_t:serviceIDType"/>
|
||||
<xs:element name="ServiceParameterList" type="v2gci_t:ServiceParameterListType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Service Payment & Selection -->
|
||||
<!-- -->
|
||||
<xs:element name="PaymentServiceSelectionReq" type="PaymentServiceSelectionReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PaymentServiceSelectionReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SelectedPaymentOption" type="v2gci_t:paymentOptionType"/>
|
||||
<xs:element name="SelectedServiceList" type="v2gci_t:SelectedServiceListType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PaymentServiceSelectionRes" type="PaymentServiceSelectionResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PaymentServiceSelectionResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Payment Details -->
|
||||
<!-- -->
|
||||
<xs:element name="PaymentDetailsReq" type="PaymentDetailsReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PaymentDetailsReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="eMAID" type="v2gci_t:eMAIDType"/>
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PaymentDetailsRes" type="PaymentDetailsResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PaymentDetailsResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="GenChallenge" type="v2gci_t:genChallengeType"/>
|
||||
<xs:element name="EVSETimeStamp" type="xs:long"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Authorization-->
|
||||
<!-- -->
|
||||
<xs:element name="AuthorizationReq" type="AuthorizationReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="AuthorizationReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="GenChallenge" type="v2gci_t:genChallengeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="AuthorizationRes" type="AuthorizationResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="AuthorizationResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="EVSEProcessing" type="v2gci_t:EVSEProcessingType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Charge Parameter Discovery -->
|
||||
<!-- -->
|
||||
<xs:element name="ChargeParameterDiscoveryReq" type="ChargeParameterDiscoveryReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ChargeParameterDiscoveryReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="MaxEntriesSAScheduleTuple" type="xs:unsignedShort" minOccurs="0"/>
|
||||
<!-- new -->
|
||||
<xs:element name="RequestedEnergyTransferMode" type="v2gci_t:EnergyTransferModeType"/>
|
||||
<xs:element ref="v2gci_t:EVChargeParameter"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ChargeParameterDiscoveryRes" type="ChargeParameterDiscoveryResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ChargeParameterDiscoveryResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="EVSEProcessing" type="v2gci_t:EVSEProcessingType"/>
|
||||
<xs:element ref="v2gci_t:SASchedules" minOccurs="0"/>
|
||||
<xs:element ref="v2gci_t:EVSEChargeParameter"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Power Delivery -->
|
||||
<!-- -->
|
||||
<xs:element name="PowerDeliveryReq" type="PowerDeliveryReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PowerDeliveryReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargeProgress" type="v2gci_t:chargeProgressType"/>
|
||||
<xs:element name="SAScheduleTupleID" type="v2gci_t:SAIDType"/>
|
||||
<xs:element name="ChargingProfile" type="v2gci_t:ChargingProfileType" minOccurs="0"/>
|
||||
<xs:element ref="v2gci_t:EVPowerDeliveryParameter" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PowerDeliveryRes" type="PowerDeliveryResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PowerDeliveryResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element ref="v2gci_t:EVSEStatus"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Metering Receipt -->
|
||||
<!-- -->
|
||||
<xs:element name="MeteringReceiptReq" type="MeteringReceiptReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="MeteringReceiptReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SessionID" type="v2gci_t:sessionIDType"/>
|
||||
<xs:element name="SAScheduleTupleID" type="v2gci_t:SAIDType" minOccurs="0"/>
|
||||
<xs:element name="MeterInfo" type="v2gci_t:MeterInfoType"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="MeteringReceiptRes" type="MeteringReceiptResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="MeteringReceiptResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element ref="v2gci_t:EVSEStatus"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- SessionStop -->
|
||||
<!-- -->
|
||||
<xs:element name="SessionStopReq" type="SessionStopReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="SessionStopReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargingSession" type="v2gci_t:chargingSessionType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="SessionStopRes" type="SessionStopResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="SessionStopResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Certificate Update -->
|
||||
<!-- -->
|
||||
<xs:element name="CertificateUpdateReq" type="CertificateUpdateReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CertificateUpdateReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
<xs:element name="eMAID" type="v2gci_t:eMAIDType"/>
|
||||
<xs:element name="ListOfRootCertificateIDs" type="v2gci_t:ListOfRootCertificateIDsType"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CertificateUpdateRes" type="CertificateUpdateResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CertificateUpdateResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="SAProvisioningCertificateChain" type="v2gci_t:CertificateChainType"/>
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
<xs:element name="ContractSignatureEncryptedPrivateKey" type="v2gci_t:ContractSignatureEncryptedPrivateKeyType"/>
|
||||
<xs:element name="DHpublickey" type="v2gci_t:DiffieHellmanPublickeyType"/>
|
||||
<xs:element name="eMAID" type="v2gci_t:EMAIDType"/>
|
||||
<xs:element name="RetryCounter" type="xs:short" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Certificate Installation -->
|
||||
<!-- -->
|
||||
<xs:element name="CertificateInstallationReq" type="CertificateInstallationReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CertificateInstallationReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="OEMProvisioningCert" type="v2gci_t:certificateType"/>
|
||||
<xs:element name="ListOfRootCertificateIDs" type="v2gci_t:ListOfRootCertificateIDsType"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CertificateInstallationRes" type="CertificateInstallationResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CertificateInstallationResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="SAProvisioningCertificateChain" type="v2gci_t:CertificateChainType"/>
|
||||
<!-- new -->
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
<xs:element name="ContractSignatureEncryptedPrivateKey" type="v2gci_t:ContractSignatureEncryptedPrivateKeyType"/>
|
||||
<xs:element name="DHpublickey" type="v2gci_t:DiffieHellmanPublickeyType"/>
|
||||
<xs:element name="eMAID" type="v2gci_t:EMAIDType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- ....................... -->
|
||||
<!-- AC-Messages -->
|
||||
<!-- ....................... -->
|
||||
<!-- -->
|
||||
<!-- Charging Status -->
|
||||
<!-- -->
|
||||
<xs:element name="ChargingStatusReq" type="ChargingStatusReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ChargingStatusReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ChargingStatusRes" type="ChargingStatusResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ChargingStatusResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="EVSEID" type="v2gci_t:evseIDType"/>
|
||||
<xs:element name="SAScheduleTupleID" type="v2gci_t:SAIDType"/>
|
||||
<xs:element name="EVSEMaxCurrent" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="MeterInfo" type="v2gci_t:MeterInfoType" minOccurs="0"/>
|
||||
<xs:element name="ReceiptRequired" type="xs:boolean" minOccurs="0"/>
|
||||
<xs:element name="AC_EVSEStatus" type="v2gci_t:AC_EVSEStatusType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- ....................... -->
|
||||
<!-- DC-Messages -->
|
||||
<!-- ....................... -->
|
||||
<!-- -->
|
||||
<!-- Cable Check -->
|
||||
<!-- -->
|
||||
<xs:element name="CableCheckReq" type="CableCheckReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CableCheckReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CableCheckRes" type="CableCheckResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CableCheckResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEProcessing" type="v2gci_t:EVSEProcessingType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Pre-Charge -->
|
||||
<!-- -->
|
||||
<xs:element name="PreChargeReq" type="PreChargeReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PreChargeReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
<xs:element name="EVTargetVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVTargetCurrent" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PreChargeRes" type="PreChargeResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PreChargeResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEPresentVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Current Demand -->
|
||||
<!-- -->
|
||||
<xs:element name="CurrentDemandReq" type="CurrentDemandReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CurrentDemandReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
<xs:element name="EVTargetCurrent" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVMaximumVoltageLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVMaximumCurrentLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVMaximumPowerLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="BulkChargingComplete" type="xs:boolean" minOccurs="0"/>
|
||||
<xs:element name="ChargingComplete" type="xs:boolean"/>
|
||||
<xs:element name="RemainingTimeToFullSoC" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="RemainingTimeToBulkSoC" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVTargetVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CurrentDemandRes" type="CurrentDemandResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CurrentDemandResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEPresentVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVSEPresentCurrent" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVSECurrentLimitAchieved" type="xs:boolean"/>
|
||||
<xs:element name="EVSEVoltageLimitAchieved" type="xs:boolean"/>
|
||||
<xs:element name="EVSEPowerLimitAchieved" type="xs:boolean"/>
|
||||
<xs:element name="EVSEMaximumVoltageLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEMaximumCurrentLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEMaximumPowerLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEID" type="v2gci_t:evseIDType"/>
|
||||
<xs:element name="SAScheduleTupleID" type="v2gci_t:SAIDType"/>
|
||||
<xs:element name="MeterInfo" type="v2gci_t:MeterInfoType" minOccurs="0"/>
|
||||
<xs:element name="ReceiptRequired" type="xs:boolean" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Welding Detection -->
|
||||
<!-- -->
|
||||
<xs:element name="WeldingDetectionReq" type="WeldingDetectionReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="WeldingDetectionReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="WeldingDetectionRes" type="WeldingDetectionResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="WeldingDetectionResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEPresentVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
721
temp/V2Gdecoder/schemas/V2G_CI_MsgDataTypes.xsd
Normal file
721
temp/V2Gdecoder/schemas/V2G_CI_MsgDataTypes.xsd
Normal file
@@ -0,0 +1,721 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2013:MsgDataTypes"
|
||||
xmlns:xmlsig="http://www.w3.org/2000/09/xmldsig#"
|
||||
targetNamespace="urn:iso:15118:2:2013:MsgDataTypes"
|
||||
elementFormDefault="qualified" attributeFormDefault="qualified">
|
||||
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
|
||||
<!-- =================== -->
|
||||
<!-- Complex types -->
|
||||
<!-- =================== -->
|
||||
<!-- -->
|
||||
<!-- service-related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="ServiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceID" type="serviceIDType"/>
|
||||
<xs:element name="ServiceName" type="serviceNameType" minOccurs="0"/>
|
||||
<xs:element name="ServiceCategory" type="serviceCategoryType"/>
|
||||
<xs:element name="ServiceScope" type="serviceScopeType" minOccurs="0"/>
|
||||
<xs:element name="FreeService" type="xs:boolean"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ServiceListType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Service" type="ServiceType" maxOccurs="8"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SelectedServiceListType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SelectedService" type="SelectedServiceType" maxOccurs="16"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SelectedServiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceID" type="serviceIDType"/>
|
||||
<xs:element name="ParameterSetID" type="xs:short" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ServiceParameterListType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ParameterSet" type="ParameterSetType" maxOccurs="255"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ParameterSetType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ParameterSetID" type="xs:short"/>
|
||||
<xs:element name="Parameter" type="ParameterType" maxOccurs="16"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ParameterType">
|
||||
<xs:choice>
|
||||
<xs:element name="boolValue" type="xs:boolean"/>
|
||||
<xs:element name="byteValue" type="xs:byte"/>
|
||||
<xs:element name="shortValue" type="xs:short"/>
|
||||
<xs:element name="intValue" type="xs:int"/>
|
||||
<xs:element name="physicalValue" type="PhysicalValueType"/>
|
||||
<xs:element name="stringValue" type="xs:string"/>
|
||||
</xs:choice>
|
||||
<xs:attribute name="Name" type="xs:string" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ChargeServiceType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ServiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SupportedEnergyTransferMode" type="SupportedEnergyTransferModeType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupportedEnergyTransferModeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EnergyTransferMode" type="EnergyTransferModeType" maxOccurs="6"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- security related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="ContractSignatureEncryptedPrivateKeyType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="privateKeyType">
|
||||
<xs:attribute name="Id" type="xs:ID" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DiffieHellmanPublickeyType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="dHpublickeyType">
|
||||
<xs:attribute name="Id" type="xs:ID" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="EMAIDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="eMAIDType">
|
||||
<xs:attribute name="Id" type="xs:ID" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CertificateChainType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Certificate" type="certificateType"/>
|
||||
<xs:element name="SubCertificates" type="SubCertificatesType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SubCertificatesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Certificate" type="certificateType" maxOccurs="4"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ListOfRootCertificateIDsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="RootCertificateID" type="xmlsig:X509IssuerSerialType" maxOccurs="20"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- metering related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="MeterInfoType">
|
||||
<xs:sequence>
|
||||
<xs:element name="MeterID" type="meterIDType"/>
|
||||
<xs:element name="MeterReading" type="xs:unsignedLong" minOccurs="0"/>
|
||||
<xs:element name="SigMeterReading" type="sigMeterReadingType" minOccurs="0"/>
|
||||
<xs:element name="MeterStatus" type="meterStatusType" minOccurs="0"/>
|
||||
<xs:element name="TMeter" type="xs:long" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Physical value type -->
|
||||
<!-- -->
|
||||
<xs:complexType name="PhysicalValueType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Multiplier" type="unitMultiplierType"/>
|
||||
<xs:element name="Unit" type="unitSymbolType"/>
|
||||
<xs:element name="Value" type="xs:short"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- header related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="NotificationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="FaultCode" type="faultCodeType"/>
|
||||
<xs:element name="FaultMsg" type="faultMsgType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Tariff related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="SASchedulesType" abstract="true"/>
|
||||
<xs:element name="SASchedules" type="SASchedulesType" abstract="true"/>
|
||||
<xs:element name="SAScheduleList" type="SAScheduleListType" substitutionGroup="SASchedules"/>
|
||||
<xs:complexType name="SAScheduleListType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="SASchedulesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SAScheduleTuple" type="SAScheduleTupleType" maxOccurs="3"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SAScheduleTupleType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SAScheduleTupleID" type="SAIDType"/>
|
||||
<xs:element name="PMaxSchedule" type="PMaxScheduleType"/>
|
||||
<xs:element name="SalesTariff" type="SalesTariffType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SalesTariffType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SalesTariffID" type="SAIDType"/>
|
||||
<xs:element name="SalesTariffDescription" type="tariffDescriptionType" minOccurs="0"/>
|
||||
<xs:element name="NumEPriceLevels" type="xs:unsignedByte" minOccurs="0"/>
|
||||
<xs:element ref="SalesTariffEntry" maxOccurs="1024"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PMaxScheduleType">
|
||||
<xs:sequence>
|
||||
<xs:element ref="PMaxScheduleEntry" maxOccurs="1024"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="Entry" type="EntryType" abstract="true"/>
|
||||
<xs:complexType name="EntryType" abstract="true">
|
||||
<xs:sequence>
|
||||
<xs:element ref="TimeInterval"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="SalesTariffEntry" type="SalesTariffEntryType" substitutionGroup="Entry"/>
|
||||
<xs:complexType name="SalesTariffEntryType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EntryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EPriceLevel" type="xs:unsignedByte" minOccurs="0"/>
|
||||
<xs:element name="ConsumptionCost" type="ConsumptionCostType" minOccurs="0" maxOccurs="3"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PMaxScheduleEntry" type="PMaxScheduleEntryType" substitutionGroup="Entry"/>
|
||||
<xs:complexType name="PMaxScheduleEntryType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EntryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PMax" type="PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IntervalType" abstract="true"/>
|
||||
<xs:element name="TimeInterval" type="IntervalType" abstract="true"/>
|
||||
<xs:element name="RelativeTimeInterval" type="RelativeTimeIntervalType" substitutionGroup="TimeInterval"/>
|
||||
<xs:complexType name="RelativeTimeIntervalType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="IntervalType">
|
||||
<xs:sequence>
|
||||
<xs:element name="start">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:unsignedInt">
|
||||
<xs:minInclusive value="0"/>
|
||||
<xs:maxInclusive value="16777214"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name="duration" minOccurs="0">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:unsignedInt">
|
||||
<xs:minInclusive value="0"/>
|
||||
<xs:maxInclusive value="86400"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ConsumptionCostType">
|
||||
<xs:sequence>
|
||||
<xs:element name="startValue" type="PhysicalValueType"/>
|
||||
<xs:element name="Cost" type="CostType" maxOccurs="3"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CostType">
|
||||
<xs:sequence>
|
||||
<xs:element name="costKind" type="costKindType"/>
|
||||
<xs:element name="amount" type="xs:unsignedInt"/>
|
||||
<xs:element name="amountMultiplier" type="unitMultiplierType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- EV/EVSE related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="EVSEStatusType" abstract="true">
|
||||
<xs:sequence>
|
||||
<xs:element name="NotificationMaxDelay" type="xs:unsignedShort"/>
|
||||
<xs:element name="EVSENotification" type="EVSENotificationType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="EVSEStatus" type="EVSEStatusType" abstract="true"/>
|
||||
<xs:element name="AC_EVSEStatus" type="AC_EVSEStatusType" substitutionGroup="EVSEStatus"/>
|
||||
<xs:complexType name="AC_EVSEStatusType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEStatusType">
|
||||
<xs:sequence>
|
||||
<xs:element name="RCD" type="xs:boolean"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="EVStatusType" abstract="true"/>
|
||||
<xs:element name="EVStatus" type="EVStatusType" abstract="true"/>
|
||||
<xs:element name="DC_EVSEStatus" type="DC_EVSEStatusType" substitutionGroup="EVSEStatus"/>
|
||||
<xs:complexType name="DC_EVSEStatusType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEStatusType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EVSEIsolationStatus" type="isolationLevelType" minOccurs="0"/>
|
||||
<xs:element name="EVSEStatusCode" type="DC_EVSEStatusCodeType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="DC_EVStatus" type="DC_EVStatusType" substitutionGroup="EVStatus"/>
|
||||
<xs:complexType name="DC_EVStatusType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVStatusType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EVReady" type="xs:boolean"/>
|
||||
<xs:element name="EVErrorCode" type="DC_EVErrorCodeType"/>
|
||||
<xs:element name="EVRESSSOC" type="percentValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- EVSE/EV Charge Parameter related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="EVChargeParameterType" abstract="true">
|
||||
<xs:sequence>
|
||||
<xs:element name="DepartureTime" type="xs:unsignedInt" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="EVChargeParameter" type="EVChargeParameterType" abstract="true"/>
|
||||
<xs:element name="AC_EVChargeParameter" type="AC_EVChargeParameterType" substitutionGroup="EVChargeParameter"/>
|
||||
<xs:complexType name="AC_EVChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EAmount" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMaxVoltage" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMaxCurrent" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMinCurrent" type="PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="DC_EVChargeParameter" type="DC_EVChargeParameterType" substitutionGroup="EVChargeParameter"/>
|
||||
<xs:complexType name="DC_EVChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="DC_EVStatusType"/>
|
||||
<xs:element name="EVMaximumCurrentLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMaximumPowerLimit" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVMaximumVoltageLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVEnergyCapacity" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVEnergyRequest" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="FullSOC" type="percentValueType" minOccurs="0"/>
|
||||
<xs:element name="BulkSOC" type="percentValueType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="EVSEChargeParameterType" abstract="true"/>
|
||||
<xs:element name="EVSEChargeParameter" type="EVSEChargeParameterType" abstract="true"/>
|
||||
<xs:element name="AC_EVSEChargeParameter" type="AC_EVSEChargeParameterType" substitutionGroup="EVSEChargeParameter"/>
|
||||
<xs:complexType name="AC_EVSEChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="AC_EVSEStatus" type="AC_EVSEStatusType"/>
|
||||
<!--<xs:element name="EVSEMaxVoltage" type="PhysicalValueType"/> -->
|
||||
<xs:element name="EVSENominalVoltage" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMaxCurrent" type="PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="DC_EVSEChargeParameter" type="DC_EVSEChargeParameterType" substitutionGroup="EVSEChargeParameter"/>
|
||||
<xs:complexType name="DC_EVSEChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVSEStatus" type="DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEMaximumCurrentLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMaximumPowerLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMaximumVoltageLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMinimumCurrentLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMinimumVoltageLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSECurrentRegulationTolerance" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEPeakCurrentRipple" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEEnergyToBeDelivered" type="PhysicalValueType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- EV Power Delivery related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="EVPowerDeliveryParameterType" abstract="true"/>
|
||||
<xs:element name="EVPowerDeliveryParameter" type="EVPowerDeliveryParameterType" abstract="true"/>
|
||||
<xs:element name="DC_EVPowerDeliveryParameter" type="DC_EVPowerDeliveryParameterType" substitutionGroup="EVPowerDeliveryParameter"/>
|
||||
<xs:complexType name="DC_EVPowerDeliveryParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVPowerDeliveryParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="DC_EVStatusType"/>
|
||||
<xs:element name="BulkChargingComplete" type="xs:boolean" minOccurs="0"/>
|
||||
<xs:element name="ChargingComplete" type="xs:boolean"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- ChargingProfileType -->
|
||||
<!-- -->
|
||||
<xs:complexType name="ChargingProfileType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ProfileEntry" type="ProfileEntryType" maxOccurs="24"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ProfileEntryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargingProfileEntryStart" type="xs:unsignedInt"/>
|
||||
<!-- <xs:element name="ChargingProfileEntryMaxPower" type="PMaxType"/> -->
|
||||
<xs:element name="ChargingProfileEntryMaxPower" type="PhysicalValueType"/>
|
||||
<!-- 2013-06-20 VR: added per DE 101 and AT 5 -->
|
||||
<xs:element name="ChargingProfileEntryMaxNumberOfPhasesInUse" type="maxNumPhasesType" minOccurs="0"/>
|
||||
<!-- end add-->
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- =================== -->
|
||||
<!-- Simple types -->
|
||||
<!-- =================== -->
|
||||
<!-- -->
|
||||
<!-- General Types -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="percentValueType">
|
||||
<xs:restriction base="xs:byte">
|
||||
<xs:minInclusive value="0"/>
|
||||
<xs:maxInclusive value="100"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="faultMsgType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="64"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="EVSEProcessingType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Finished"/>
|
||||
<xs:enumeration value="Ongoing"/>
|
||||
<xs:enumeration value="Ongoing_WaitingForCustomerInteraction"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="EVSENotificationType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="None"/>
|
||||
<xs:enumeration value="StopCharging"/>
|
||||
<xs:enumeration value="ReNegotiation"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="chargeProgressType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Start"/>
|
||||
<xs:enumeration value="Stop"/>
|
||||
<xs:enumeration value="Renegotiate"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="chargingSessionType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Terminate"/>
|
||||
<xs:enumeration value="Pause"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="serviceNameType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="serviceCategoryType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="EVCharging"/>
|
||||
<xs:enumeration value="Internet"/>
|
||||
<xs:enumeration value="ContractCertificate"/>
|
||||
<xs:enumeration value="OtherCustom"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="serviceScopeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="64"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="maxNumPhasesType">
|
||||
<xs:restriction base="xs:byte">
|
||||
<xs:minInclusive value="1"/>
|
||||
<xs:maxInclusive value="3"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="valueType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="bool"/>
|
||||
<xs:enumeration value="byte"/>
|
||||
<xs:enumeration value="short"/>
|
||||
<xs:enumeration value="int"/>
|
||||
<xs:enumeration value="physicalValue"/>
|
||||
<xs:enumeration value="string"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="meterStatusType">
|
||||
<xs:restriction base="xs:short"/>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- EnergyTransferType -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="EnergyTransferModeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AC_single_phase_core"/>
|
||||
<xs:enumeration value="AC_three_phase_core"/>
|
||||
<xs:enumeration value="DC_core"/>
|
||||
<xs:enumeration value="DC_extended"/>
|
||||
<xs:enumeration value="DC_combo_core"/>
|
||||
<xs:enumeration value="DC_unique"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- security types -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="genChallengeType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:length value="16"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="certificateType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="800"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="dHpublickeyType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="65"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="privateKeyType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="48"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="sigMeterReadingType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="64"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Identification Numbers -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="sessionIDType">
|
||||
<xs:restriction base="xs:hexBinary">
|
||||
<xs:maxLength value="8"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="evccIDType">
|
||||
<xs:restriction base="xs:hexBinary">
|
||||
<xs:maxLength value="6"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="evseIDType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="7"/>
|
||||
<xs:maxLength value="37"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="serviceIDType">
|
||||
<xs:restriction base="xs:unsignedShort"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="eMAIDType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="14"/>
|
||||
<xs:maxLength value="15"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="meterIDType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Tariffs and payment -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="SAIDType">
|
||||
<xs:restriction base="xs:unsignedByte">
|
||||
<xs:minInclusive value="1"/>
|
||||
<xs:maxInclusive value="255"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="tariffDescriptionType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="costKindType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="relativePricePercentage"/>
|
||||
<xs:enumeration value="RenewableGenerationPercentage"/>
|
||||
<xs:enumeration value="CarbonDioxideEmission"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PaymentOptionListType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PaymentOption" type="paymentOptionType" minOccurs="1" maxOccurs="2"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="paymentOptionType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Contract"/>
|
||||
<xs:enumeration value="ExternalPayment"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Fault and Response Codes -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="faultCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="ParsingError"/>
|
||||
<xs:enumeration value="NoTLSRootCertificatAvailable"/>
|
||||
<xs:enumeration value="UnknownError"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="responseCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="OK"/>
|
||||
<xs:enumeration value="OK_NewSessionEstablished"/>
|
||||
<xs:enumeration value="OK_OldSessionJoined"/>
|
||||
<xs:enumeration value="OK_CertificateExpiresSoon"/>
|
||||
<xs:enumeration value="FAILED"/>
|
||||
<xs:enumeration value="FAILED_SequenceError"/>
|
||||
<xs:enumeration value="FAILED_ServiceIDInvalid"/>
|
||||
<xs:enumeration value="FAILED_UnknownSession"/>
|
||||
<xs:enumeration value="FAILED_ServiceSelectionInvalid"/>
|
||||
<xs:enumeration value="FAILED_PaymentSelectionInvalid"/>
|
||||
<xs:enumeration value="FAILED_CertificateExpired"/>
|
||||
<xs:enumeration value="FAILED_SignatureError"/>
|
||||
<xs:enumeration value="FAILED_NoCertificateAvailable"/>
|
||||
<xs:enumeration value="FAILED_CertChainError"/>
|
||||
<xs:enumeration value="FAILED_ChallengeInvalid"/>
|
||||
<xs:enumeration value="FAILED_ContractCanceled"/>
|
||||
<xs:enumeration value="FAILED_WrongChargeParameter"/>
|
||||
<xs:enumeration value="FAILED_PowerDeliveryNotApplied"/>
|
||||
<xs:enumeration value="FAILED_TariffSelectionInvalid"/>
|
||||
<xs:enumeration value="FAILED_ChargingProfileInvalid"/>
|
||||
<xs:enumeration value="FAILED_MeteringSignatureNotValid"/>
|
||||
<xs:enumeration value="FAILED_NoChargeServiceSelected"/>
|
||||
<xs:enumeration value="FAILED_WrongEnergyTransferMode"/>
|
||||
<xs:enumeration value="FAILED_ContactorError"/>
|
||||
<xs:enumeration value="FAILED_CertificateNotAllowedAtThisEVSE"/>
|
||||
<xs:enumeration value="FAILED_CertificateRevoked"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Multiplier and Unit Types -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="unitMultiplierType">
|
||||
<xs:restriction base="xs:byte">
|
||||
<xs:minInclusive value="-3"/>
|
||||
<xs:maxInclusive value="3"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="unitSymbolType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="h">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Time in hours</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="m">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Time in minutes</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="s">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Time in seconds</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="A">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Current in Ampere</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="V">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Voltage in Volt</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="W">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Active power in Watt</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="Wh">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Real energy in Watt hours</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- only DC related -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="DC_EVSEStatusCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="EVSE_NotReady"/>
|
||||
<xs:enumeration value="EVSE_Ready"/>
|
||||
<xs:enumeration value="EVSE_Shutdown"/>
|
||||
<xs:enumeration value="EVSE_UtilityInterruptEvent"/>
|
||||
<xs:enumeration value="EVSE_IsolationMonitoringActive"/>
|
||||
<xs:enumeration value="EVSE_EmergencyShutdown"/>
|
||||
<xs:enumeration value="EVSE_Malfunction"/>
|
||||
<xs:enumeration value="Reserved_8"/>
|
||||
<xs:enumeration value="Reserved_9"/>
|
||||
<xs:enumeration value="Reserved_A"/>
|
||||
<xs:enumeration value="Reserved_B"/>
|
||||
<xs:enumeration value="Reserved_C"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="isolationLevelType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Invalid"/>
|
||||
<xs:enumeration value="Valid"/>
|
||||
<xs:enumeration value="Warning"/>
|
||||
<xs:enumeration value="Fault"/>
|
||||
<xs:enumeration value="No_IMD"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="DC_EVErrorCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="NO_ERROR"/>
|
||||
<xs:enumeration value="FAILED_RESSTemperatureInhibit"/>
|
||||
<xs:enumeration value="FAILED_EVShiftPosition"/>
|
||||
<xs:enumeration value="FAILED_ChargerConnectorLockFault"/>
|
||||
<xs:enumeration value="FAILED_EVRESSMalfunction"/>
|
||||
<xs:enumeration value="FAILED_ChargingCurrentdifferential"/>
|
||||
<xs:enumeration value="FAILED_ChargingVoltageOutOfRange"/>
|
||||
<xs:enumeration value="Reserved_A"/>
|
||||
<xs:enumeration value="Reserved_B"/>
|
||||
<xs:enumeration value="Reserved_C"/>
|
||||
<xs:enumeration value="FAILED_ChargingSystemIncompatibility"/>
|
||||
<xs:enumeration value="NoData"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
BIN
temp/V2Gdecoder/schemas/V2G_CI_MsgDef.exig
Normal file
BIN
temp/V2Gdecoder/schemas/V2G_CI_MsgDef.exig
Normal file
Binary file not shown.
18
temp/V2Gdecoder/schemas/V2G_CI_MsgDef.xsd
Normal file
18
temp/V2Gdecoder/schemas/V2G_CI_MsgDef.xsd
Normal file
@@ -0,0 +1,18 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2013:MsgDef" xmlns:v2gci_h="urn:iso:15118:2:2013:MsgHeader"
|
||||
xmlns:v2gci_b="urn:iso:15118:2:2013:MsgBody" targetNamespace="urn:iso:15118:2:2013:MsgDef"
|
||||
elementFormDefault="qualified" attributeFormDefault="qualified" version="15118 2.0">
|
||||
<!-- attributeFormDefault="unqualified" -->
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgHeader" schemaLocation="V2G_CI_MsgHeader.xsd"/>
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgBody" schemaLocation="V2G_CI_MsgBody.xsd"/>
|
||||
<!-- Message Structure -->
|
||||
<xs:element name="V2G_Message">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Header" type="v2gci_h:MessageHeaderType"/>
|
||||
<xs:element name="Body" type="v2gci_b:BodyType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
18
temp/V2Gdecoder/schemas/V2G_CI_MsgHeader.xsd
Normal file
18
temp/V2Gdecoder/schemas/V2G_CI_MsgHeader.xsd
Normal file
@@ -0,0 +1,18 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2013:MsgHeader"
|
||||
xmlns:v2gci_t="urn:iso:15118:2:2013:MsgDataTypes"
|
||||
xmlns:xmlsig="http://www.w3.org/2000/09/xmldsig#"
|
||||
targetNamespace="urn:iso:15118:2:2013:MsgHeader"
|
||||
elementFormDefault="qualified" attributeFormDefault="qualified">
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgDataTypes" schemaLocation="V2G_CI_MsgDataTypes.xsd"/>
|
||||
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
|
||||
<!-- Message Header -->
|
||||
<xs:complexType name="MessageHeaderType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SessionID" type="v2gci_t:sessionIDType"/>
|
||||
<xs:element name="Notification" type="v2gci_t:NotificationType" minOccurs="0"/>
|
||||
<xs:element ref="xmlsig:Signature" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
18
temp/V2Gdecoder/schemas/V2G_DIN_MsgDef.xsd
Normal file
18
temp/V2Gdecoder/schemas/V2G_DIN_MsgDef.xsd
Normal file
@@ -0,0 +1,18 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2013:MsgDef" xmlns:v2gci_h="urn:iso:15118:2:2013:MsgHeader"
|
||||
xmlns:v2gci_b="urn:iso:15118:2:2013:MsgBody" targetNamespace="urn:iso:15118:2:2013:MsgDef"
|
||||
elementFormDefault="qualified" attributeFormDefault="qualified" version="15118 2.0">
|
||||
<!-- attributeFormDefault="unqualified" -->
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgHeader" schemaLocation="V2G_CI_MsgHeader.xsd"/>
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgBody" schemaLocation="V2G_CI_MsgBody.xsd"/>
|
||||
<!-- Message Structure -->
|
||||
<xs:element name="V2G_Message">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Header" type="v2gci_h:MessageHeaderType"/>
|
||||
<xs:element name="Body" type="v2gci_b:BodyType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
14
temp/V2Gdecoder/schemas/old_schemas/old_schemasa/ReadMe.txt
Normal file
14
temp/V2Gdecoder/schemas/old_schemas/old_schemasa/ReadMe.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
1. Generated the Java classes from V2G_CI_MsgDef.xsd into the package v2gMessages.msgDef.
|
||||
This creates all message types defined in
|
||||
- V2G_CI_MsgDef
|
||||
- V2G_CI_MsgHeader
|
||||
- V2G_CI_MsgBody
|
||||
- V2G_CI_MsgDataTypes
|
||||
- xldsig-core-schema.xsd
|
||||
|
||||
|
||||
2. Generated the Java classes from V2G_CI_AppProtocol.xsd into the package v2gMessages.appProtocol
|
||||
(because of the class ResponseCodeType, which is defined in both schema files and would therefore
|
||||
raise conflicts).
|
||||
|
||||
3. Add SECCDiscoveryReq.java and SECCDiscoveryRes.java to the package v2gMessages.
|
||||
@@ -0,0 +1,55 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2010:AppProtocol"
|
||||
targetNamespace="urn:iso:15118:2:2010:AppProtocol">
|
||||
<xs:element name="supportedAppProtocolReq">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="AppProtocol" type="AppProtocolType" maxOccurs="20"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="supportedAppProtocolRes">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="responseCodeType"/>
|
||||
<xs:element name="SchemaID" type="idType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:complexType name="AppProtocolType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ProtocolNamespace" type="protocolNamespaceType"/>
|
||||
<xs:element name="VersionNumberMajor" type="xs:unsignedInt"/>
|
||||
<xs:element name="VersionNumberMinor" type="xs:unsignedInt"/>
|
||||
<xs:element name="SchemaID" type="idType"/>
|
||||
<xs:element name="Priority" type="priorityType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="idType">
|
||||
<xs:restriction base="xs:unsignedByte"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="protocolNameType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="30"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="protocolNamespaceType">
|
||||
<xs:restriction base="xs:anyURI">
|
||||
<xs:maxLength value="100"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="priorityType">
|
||||
<xs:restriction base="xs:unsignedByte">
|
||||
<xs:minInclusive value="1"/>
|
||||
<xs:maxInclusive value="20"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="responseCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="OK_SuccessfulNegotiation"/>
|
||||
<xs:enumeration value="OK_SuccessfulNegotiationWithMinorDeviation"/>
|
||||
<xs:enumeration value="Failed_NoNegotiation"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,497 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2013:MsgBody"
|
||||
xmlns:v2gci_d="urn:iso:15118:2:2013:MsgDef"
|
||||
xmlns:v2gci_t="urn:iso:15118:2:2013:MsgDataTypes"
|
||||
targetNamespace="urn:iso:15118:2:2013:MsgBody"
|
||||
elementFormDefault="qualified" attributeFormDefault="qualified">
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgDataTypes" schemaLocation="V2G_CI_MsgDataTypes.xsd"/>
|
||||
<!-- Body -->
|
||||
<xs:complexType name="BodyType">
|
||||
<xs:sequence>
|
||||
<xs:element ref="BodyElement" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="BodyElement" type="BodyBaseType" abstract="true"/>
|
||||
<xs:complexType name="BodyBaseType" abstract="true"/>
|
||||
<!-- ....................... -->
|
||||
<!-- Common Messages (AC/DC) -->
|
||||
<!-- ....................... -->
|
||||
<!-- -->
|
||||
<!-- Session Setup -->
|
||||
<!-- -->
|
||||
<xs:element name="SessionSetupReq" type="SessionSetupReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="SessionSetupReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EVCCID" type="v2gci_t:evccIDType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="SessionSetupRes" type="SessionSetupResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="SessionSetupResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="EVSEID" type="v2gci_t:evseIDType"/>
|
||||
<xs:element name="EVSETimeStamp" type="xs:long" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Service Discovery -->
|
||||
<!-- -->
|
||||
<xs:element name="ServiceDiscoveryReq" type="ServiceDiscoveryReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ServiceDiscoveryReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceScope" type="v2gci_t:serviceScopeType" minOccurs="0"/>
|
||||
<xs:element name="ServiceCategory" type="v2gci_t:serviceCategoryType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ServiceDiscoveryRes" type="ServiceDiscoveryResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ServiceDiscoveryResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="PaymentOptionList" type="v2gci_t:PaymentOptionListType"/>
|
||||
<xs:element name="ChargeService" type="v2gci_t:ChargeServiceType"/>
|
||||
<!--<xs:element name="ServiceList" type="v2gci_t:ServiceTagListType" minOccurs="0"/> -->
|
||||
<xs:element name="ServiceList" type="v2gci_t:ServiceListType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Service Detail -->
|
||||
<!-- -->
|
||||
<xs:element name="ServiceDetailReq" type="ServiceDetailReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ServiceDetailReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceID" type="v2gci_t:serviceIDType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ServiceDetailRes" type="ServiceDetailResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ServiceDetailResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="ServiceID" type="v2gci_t:serviceIDType"/>
|
||||
<xs:element name="ServiceParameterList" type="v2gci_t:ServiceParameterListType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Service Payment & Selection -->
|
||||
<!-- -->
|
||||
<xs:element name="PaymentServiceSelectionReq" type="PaymentServiceSelectionReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PaymentServiceSelectionReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SelectedPaymentOption" type="v2gci_t:paymentOptionType"/>
|
||||
<xs:element name="SelectedServiceList" type="v2gci_t:SelectedServiceListType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PaymentServiceSelectionRes" type="PaymentServiceSelectionResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PaymentServiceSelectionResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Payment Details -->
|
||||
<!-- -->
|
||||
<xs:element name="PaymentDetailsReq" type="PaymentDetailsReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PaymentDetailsReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="eMAID" type="v2gci_t:eMAIDType"/>
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PaymentDetailsRes" type="PaymentDetailsResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PaymentDetailsResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="GenChallenge" type="v2gci_t:genChallengeType"/>
|
||||
<xs:element name="EVSETimeStamp" type="xs:long"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Authorization-->
|
||||
<!-- -->
|
||||
<xs:element name="AuthorizationReq" type="AuthorizationReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="AuthorizationReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="GenChallenge" type="v2gci_t:genChallengeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="AuthorizationRes" type="AuthorizationResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="AuthorizationResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="EVSEProcessing" type="v2gci_t:EVSEProcessingType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Charge Parameter Discovery -->
|
||||
<!-- -->
|
||||
<xs:element name="ChargeParameterDiscoveryReq" type="ChargeParameterDiscoveryReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ChargeParameterDiscoveryReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="MaxEntriesSAScheduleTuple" type="xs:unsignedShort" minOccurs="0"/>
|
||||
<!-- new -->
|
||||
<xs:element name="RequestedEnergyTransferMode" type="v2gci_t:EnergyTransferModeType"/>
|
||||
<xs:element ref="v2gci_t:EVChargeParameter"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ChargeParameterDiscoveryRes" type="ChargeParameterDiscoveryResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ChargeParameterDiscoveryResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="EVSEProcessing" type="v2gci_t:EVSEProcessingType"/>
|
||||
<xs:element ref="v2gci_t:SASchedules" minOccurs="0"/>
|
||||
<xs:element ref="v2gci_t:EVSEChargeParameter"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Power Delivery -->
|
||||
<!-- -->
|
||||
<xs:element name="PowerDeliveryReq" type="PowerDeliveryReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PowerDeliveryReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargeProgress" type="v2gci_t:chargeProgressType"/>
|
||||
<xs:element name="SAScheduleTupleID" type="v2gci_t:SAIDType"/>
|
||||
<xs:element name="ChargingProfile" type="v2gci_t:ChargingProfileType" minOccurs="0"/>
|
||||
<xs:element ref="v2gci_t:EVPowerDeliveryParameter" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PowerDeliveryRes" type="PowerDeliveryResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PowerDeliveryResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element ref="v2gci_t:EVSEStatus"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Metering Receipt -->
|
||||
<!-- -->
|
||||
<xs:element name="MeteringReceiptReq" type="MeteringReceiptReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="MeteringReceiptReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SessionID" type="v2gci_t:sessionIDType"/>
|
||||
<xs:element name="SAScheduleTupleID" type="v2gci_t:SAIDType" minOccurs="0"/>
|
||||
<xs:element name="MeterInfo" type="v2gci_t:MeterInfoType"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="MeteringReceiptRes" type="MeteringReceiptResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="MeteringReceiptResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element ref="v2gci_t:EVSEStatus"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- SessionStop -->
|
||||
<!-- -->
|
||||
<xs:element name="SessionStopReq" type="SessionStopReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="SessionStopReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargingSession" type="v2gci_t:chargingSessionType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="SessionStopRes" type="SessionStopResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="SessionStopResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Certificate Update -->
|
||||
<!-- -->
|
||||
<xs:element name="CertificateUpdateReq" type="CertificateUpdateReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CertificateUpdateReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
<xs:element name="eMAID" type="v2gci_t:eMAIDType"/>
|
||||
<xs:element name="ListOfRootCertificateIDs" type="v2gci_t:ListOfRootCertificateIDsType"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CertificateUpdateRes" type="CertificateUpdateResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CertificateUpdateResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="SAProvisioningCertificateChain" type="v2gci_t:CertificateChainType"/>
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
<xs:element name="ContractSignatureEncryptedPrivateKey" type="v2gci_t:ContractSignatureEncryptedPrivateKeyType"/>
|
||||
<xs:element name="DHpublickey" type="v2gci_t:DiffieHellmanPublickeyType"/>
|
||||
<xs:element name="eMAID" type="v2gci_t:EMAIDType"/>
|
||||
<xs:element name="RetryCounter" type="xs:short" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Certificate Installation -->
|
||||
<!-- -->
|
||||
<xs:element name="CertificateInstallationReq" type="CertificateInstallationReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CertificateInstallationReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="OEMProvisioningCert" type="v2gci_t:certificateType"/>
|
||||
<xs:element name="ListOfRootCertificateIDs" type="v2gci_t:ListOfRootCertificateIDsType"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CertificateInstallationRes" type="CertificateInstallationResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CertificateInstallationResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="SAProvisioningCertificateChain" type="v2gci_t:CertificateChainType"/>
|
||||
<!-- new -->
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
<xs:element name="ContractSignatureEncryptedPrivateKey" type="v2gci_t:ContractSignatureEncryptedPrivateKeyType"/>
|
||||
<xs:element name="DHpublickey" type="v2gci_t:DiffieHellmanPublickeyType"/>
|
||||
<xs:element name="eMAID" type="v2gci_t:EMAIDType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- ....................... -->
|
||||
<!-- AC-Messages -->
|
||||
<!-- ....................... -->
|
||||
<!-- -->
|
||||
<!-- Charging Status -->
|
||||
<!-- -->
|
||||
<xs:element name="ChargingStatusReq" type="ChargingStatusReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ChargingStatusReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ChargingStatusRes" type="ChargingStatusResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="ChargingStatusResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="EVSEID" type="v2gci_t:evseIDType"/>
|
||||
<xs:element name="SAScheduleTupleID" type="v2gci_t:SAIDType"/>
|
||||
<xs:element name="EVSEMaxCurrent" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="MeterInfo" type="v2gci_t:MeterInfoType" minOccurs="0"/>
|
||||
<xs:element name="ReceiptRequired" type="xs:boolean" minOccurs="0"/>
|
||||
<xs:element name="AC_EVSEStatus" type="v2gci_t:AC_EVSEStatusType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- ....................... -->
|
||||
<!-- DC-Messages -->
|
||||
<!-- ....................... -->
|
||||
<!-- -->
|
||||
<!-- Cable Check -->
|
||||
<!-- -->
|
||||
<xs:element name="CableCheckReq" type="CableCheckReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CableCheckReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CableCheckRes" type="CableCheckResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CableCheckResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEProcessing" type="v2gci_t:EVSEProcessingType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Pre-Charge -->
|
||||
<!-- -->
|
||||
<xs:element name="PreChargeReq" type="PreChargeReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PreChargeReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
<xs:element name="EVTargetVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVTargetCurrent" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PreChargeRes" type="PreChargeResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="PreChargeResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEPresentVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Current Demand -->
|
||||
<!-- -->
|
||||
<xs:element name="CurrentDemandReq" type="CurrentDemandReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CurrentDemandReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
<xs:element name="EVTargetCurrent" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVMaximumVoltageLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVMaximumCurrentLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVMaximumPowerLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="BulkChargingComplete" type="xs:boolean" minOccurs="0"/>
|
||||
<xs:element name="ChargingComplete" type="xs:boolean"/>
|
||||
<xs:element name="RemainingTimeToFullSoC" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="RemainingTimeToBulkSoC" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVTargetVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CurrentDemandRes" type="CurrentDemandResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="CurrentDemandResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEPresentVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVSEPresentCurrent" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVSECurrentLimitAchieved" type="xs:boolean"/>
|
||||
<xs:element name="EVSEVoltageLimitAchieved" type="xs:boolean"/>
|
||||
<xs:element name="EVSEPowerLimitAchieved" type="xs:boolean"/>
|
||||
<xs:element name="EVSEMaximumVoltageLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEMaximumCurrentLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEMaximumPowerLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEID" type="v2gci_t:evseIDType"/>
|
||||
<xs:element name="SAScheduleTupleID" type="v2gci_t:SAIDType"/>
|
||||
<xs:element name="MeterInfo" type="v2gci_t:MeterInfoType" minOccurs="0"/>
|
||||
<xs:element name="ReceiptRequired" type="xs:boolean" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Welding Detection -->
|
||||
<!-- -->
|
||||
<xs:element name="WeldingDetectionReq" type="WeldingDetectionReqType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="WeldingDetectionReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="WeldingDetectionRes" type="WeldingDetectionResType" substitutionGroup="BodyElement"/>
|
||||
<xs:complexType name="WeldingDetectionResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEPresentVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,721 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2013:MsgDataTypes"
|
||||
xmlns:xmlsig="http://www.w3.org/2000/09/xmldsig#"
|
||||
targetNamespace="urn:iso:15118:2:2013:MsgDataTypes"
|
||||
elementFormDefault="qualified" attributeFormDefault="qualified">
|
||||
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
|
||||
<!-- =================== -->
|
||||
<!-- Complex types -->
|
||||
<!-- =================== -->
|
||||
<!-- -->
|
||||
<!-- service-related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="ServiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceID" type="serviceIDType"/>
|
||||
<xs:element name="ServiceName" type="serviceNameType" minOccurs="0"/>
|
||||
<xs:element name="ServiceCategory" type="serviceCategoryType"/>
|
||||
<xs:element name="ServiceScope" type="serviceScopeType" minOccurs="0"/>
|
||||
<xs:element name="FreeService" type="xs:boolean"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ServiceListType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Service" type="ServiceType" maxOccurs="8"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SelectedServiceListType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SelectedService" type="SelectedServiceType" maxOccurs="16"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SelectedServiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceID" type="serviceIDType"/>
|
||||
<xs:element name="ParameterSetID" type="xs:short" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ServiceParameterListType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ParameterSet" type="ParameterSetType" maxOccurs="255"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ParameterSetType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ParameterSetID" type="xs:short"/>
|
||||
<xs:element name="Parameter" type="ParameterType" maxOccurs="16"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ParameterType">
|
||||
<xs:choice>
|
||||
<xs:element name="boolValue" type="xs:boolean"/>
|
||||
<xs:element name="byteValue" type="xs:byte"/>
|
||||
<xs:element name="shortValue" type="xs:short"/>
|
||||
<xs:element name="intValue" type="xs:int"/>
|
||||
<xs:element name="physicalValue" type="PhysicalValueType"/>
|
||||
<xs:element name="stringValue" type="xs:string"/>
|
||||
</xs:choice>
|
||||
<xs:attribute name="Name" type="xs:string" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ChargeServiceType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ServiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SupportedEnergyTransferMode" type="SupportedEnergyTransferModeType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SupportedEnergyTransferModeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EnergyTransferMode" type="EnergyTransferModeType" maxOccurs="6"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- security related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="ContractSignatureEncryptedPrivateKeyType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="privateKeyType">
|
||||
<xs:attribute name="Id" type="xs:ID" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DiffieHellmanPublickeyType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="dHpublickeyType">
|
||||
<xs:attribute name="Id" type="xs:ID" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="EMAIDType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="eMAIDType">
|
||||
<xs:attribute name="Id" type="xs:ID" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CertificateChainType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Certificate" type="certificateType"/>
|
||||
<xs:element name="SubCertificates" type="SubCertificatesType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SubCertificatesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Certificate" type="certificateType" maxOccurs="4"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ListOfRootCertificateIDsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="RootCertificateID" type="xmlsig:X509IssuerSerialType" maxOccurs="20"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- metering related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="MeterInfoType">
|
||||
<xs:sequence>
|
||||
<xs:element name="MeterID" type="meterIDType"/>
|
||||
<xs:element name="MeterReading" type="xs:unsignedLong" minOccurs="0"/>
|
||||
<xs:element name="SigMeterReading" type="sigMeterReadingType" minOccurs="0"/>
|
||||
<xs:element name="MeterStatus" type="meterStatusType" minOccurs="0"/>
|
||||
<xs:element name="TMeter" type="xs:long" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Physical value type -->
|
||||
<!-- -->
|
||||
<xs:complexType name="PhysicalValueType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Multiplier" type="unitMultiplierType"/>
|
||||
<xs:element name="Unit" type="unitSymbolType"/>
|
||||
<xs:element name="Value" type="xs:short"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- header related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="NotificationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="FaultCode" type="faultCodeType"/>
|
||||
<xs:element name="FaultMsg" type="faultMsgType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Tariff related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="SASchedulesType" abstract="true"/>
|
||||
<xs:element name="SASchedules" type="SASchedulesType" abstract="true"/>
|
||||
<xs:element name="SAScheduleList" type="SAScheduleListType" substitutionGroup="SASchedules"/>
|
||||
<xs:complexType name="SAScheduleListType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="SASchedulesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SAScheduleTuple" type="SAScheduleTupleType" maxOccurs="3"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SAScheduleTupleType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SAScheduleTupleID" type="SAIDType"/>
|
||||
<xs:element name="PMaxSchedule" type="PMaxScheduleType"/>
|
||||
<xs:element name="SalesTariff" type="SalesTariffType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SalesTariffType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SalesTariffID" type="SAIDType"/>
|
||||
<xs:element name="SalesTariffDescription" type="tariffDescriptionType" minOccurs="0"/>
|
||||
<xs:element name="NumEPriceLevels" type="xs:unsignedByte" minOccurs="0"/>
|
||||
<xs:element ref="SalesTariffEntry" maxOccurs="1024"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:ID"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PMaxScheduleType">
|
||||
<xs:sequence>
|
||||
<xs:element ref="PMaxScheduleEntry" maxOccurs="1024"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="Entry" type="EntryType" abstract="true"/>
|
||||
<xs:complexType name="EntryType" abstract="true">
|
||||
<xs:sequence>
|
||||
<xs:element ref="TimeInterval"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="SalesTariffEntry" type="SalesTariffEntryType" substitutionGroup="Entry"/>
|
||||
<xs:complexType name="SalesTariffEntryType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EntryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EPriceLevel" type="xs:unsignedByte" minOccurs="0"/>
|
||||
<xs:element name="ConsumptionCost" type="ConsumptionCostType" minOccurs="0" maxOccurs="3"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PMaxScheduleEntry" type="PMaxScheduleEntryType" substitutionGroup="Entry"/>
|
||||
<xs:complexType name="PMaxScheduleEntryType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EntryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PMax" type="PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IntervalType" abstract="true"/>
|
||||
<xs:element name="TimeInterval" type="IntervalType" abstract="true"/>
|
||||
<xs:element name="RelativeTimeInterval" type="RelativeTimeIntervalType" substitutionGroup="TimeInterval"/>
|
||||
<xs:complexType name="RelativeTimeIntervalType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="IntervalType">
|
||||
<xs:sequence>
|
||||
<xs:element name="start">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:unsignedInt">
|
||||
<xs:minInclusive value="0"/>
|
||||
<xs:maxInclusive value="16777214"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name="duration" minOccurs="0">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:unsignedInt">
|
||||
<xs:minInclusive value="0"/>
|
||||
<xs:maxInclusive value="86400"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ConsumptionCostType">
|
||||
<xs:sequence>
|
||||
<xs:element name="startValue" type="PhysicalValueType"/>
|
||||
<xs:element name="Cost" type="CostType" maxOccurs="3"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CostType">
|
||||
<xs:sequence>
|
||||
<xs:element name="costKind" type="costKindType"/>
|
||||
<xs:element name="amount" type="xs:unsignedInt"/>
|
||||
<xs:element name="amountMultiplier" type="unitMultiplierType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- EV/EVSE related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="EVSEStatusType" abstract="true">
|
||||
<xs:sequence>
|
||||
<xs:element name="NotificationMaxDelay" type="xs:unsignedShort"/>
|
||||
<xs:element name="EVSENotification" type="EVSENotificationType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="EVSEStatus" type="EVSEStatusType" abstract="true"/>
|
||||
<xs:element name="AC_EVSEStatus" type="AC_EVSEStatusType" substitutionGroup="EVSEStatus"/>
|
||||
<xs:complexType name="AC_EVSEStatusType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEStatusType">
|
||||
<xs:sequence>
|
||||
<xs:element name="RCD" type="xs:boolean"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="EVStatusType" abstract="true"/>
|
||||
<xs:element name="EVStatus" type="EVStatusType" abstract="true"/>
|
||||
<xs:element name="DC_EVSEStatus" type="DC_EVSEStatusType" substitutionGroup="EVSEStatus"/>
|
||||
<xs:complexType name="DC_EVSEStatusType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEStatusType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EVSEIsolationStatus" type="isolationLevelType" minOccurs="0"/>
|
||||
<xs:element name="EVSEStatusCode" type="DC_EVSEStatusCodeType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="DC_EVStatus" type="DC_EVStatusType" substitutionGroup="EVStatus"/>
|
||||
<xs:complexType name="DC_EVStatusType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVStatusType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EVReady" type="xs:boolean"/>
|
||||
<xs:element name="EVErrorCode" type="DC_EVErrorCodeType"/>
|
||||
<xs:element name="EVRESSSOC" type="percentValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- EVSE/EV Charge Parameter related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="EVChargeParameterType" abstract="true">
|
||||
<xs:sequence>
|
||||
<xs:element name="DepartureTime" type="xs:unsignedInt" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="EVChargeParameter" type="EVChargeParameterType" abstract="true"/>
|
||||
<xs:element name="AC_EVChargeParameter" type="AC_EVChargeParameterType" substitutionGroup="EVChargeParameter"/>
|
||||
<xs:complexType name="AC_EVChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EAmount" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMaxVoltage" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMaxCurrent" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMinCurrent" type="PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="DC_EVChargeParameter" type="DC_EVChargeParameterType" substitutionGroup="EVChargeParameter"/>
|
||||
<xs:complexType name="DC_EVChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="DC_EVStatusType"/>
|
||||
<xs:element name="EVMaximumCurrentLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMaximumPowerLimit" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVMaximumVoltageLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVEnergyCapacity" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVEnergyRequest" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="FullSOC" type="percentValueType" minOccurs="0"/>
|
||||
<xs:element name="BulkSOC" type="percentValueType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="EVSEChargeParameterType" abstract="true"/>
|
||||
<xs:element name="EVSEChargeParameter" type="EVSEChargeParameterType" abstract="true"/>
|
||||
<xs:element name="AC_EVSEChargeParameter" type="AC_EVSEChargeParameterType" substitutionGroup="EVSEChargeParameter"/>
|
||||
<xs:complexType name="AC_EVSEChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="AC_EVSEStatus" type="AC_EVSEStatusType"/>
|
||||
<!--<xs:element name="EVSEMaxVoltage" type="PhysicalValueType"/> -->
|
||||
<xs:element name="EVSENominalVoltage" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMaxCurrent" type="PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="DC_EVSEChargeParameter" type="DC_EVSEChargeParameterType" substitutionGroup="EVSEChargeParameter"/>
|
||||
<xs:complexType name="DC_EVSEChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVSEStatus" type="DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEMaximumCurrentLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMaximumPowerLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMaximumVoltageLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMinimumCurrentLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMinimumVoltageLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSECurrentRegulationTolerance" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEPeakCurrentRipple" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEEnergyToBeDelivered" type="PhysicalValueType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- EV Power Delivery related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="EVPowerDeliveryParameterType" abstract="true"/>
|
||||
<xs:element name="EVPowerDeliveryParameter" type="EVPowerDeliveryParameterType" abstract="true"/>
|
||||
<xs:element name="DC_EVPowerDeliveryParameter" type="DC_EVPowerDeliveryParameterType" substitutionGroup="EVPowerDeliveryParameter"/>
|
||||
<xs:complexType name="DC_EVPowerDeliveryParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVPowerDeliveryParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="DC_EVStatusType"/>
|
||||
<xs:element name="BulkChargingComplete" type="xs:boolean" minOccurs="0"/>
|
||||
<xs:element name="ChargingComplete" type="xs:boolean"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- ChargingProfileType -->
|
||||
<!-- -->
|
||||
<xs:complexType name="ChargingProfileType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ProfileEntry" type="ProfileEntryType" maxOccurs="24"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ProfileEntryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargingProfileEntryStart" type="xs:unsignedInt"/>
|
||||
<!-- <xs:element name="ChargingProfileEntryMaxPower" type="PMaxType"/> -->
|
||||
<xs:element name="ChargingProfileEntryMaxPower" type="PhysicalValueType"/>
|
||||
<!-- 2013-06-20 VR: added per DE 101 and AT 5 -->
|
||||
<xs:element name="ChargingProfileEntryMaxNumberOfPhasesInUse" type="maxNumPhasesType" minOccurs="0"/>
|
||||
<!-- end add-->
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- =================== -->
|
||||
<!-- Simple types -->
|
||||
<!-- =================== -->
|
||||
<!-- -->
|
||||
<!-- General Types -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="percentValueType">
|
||||
<xs:restriction base="xs:byte">
|
||||
<xs:minInclusive value="0"/>
|
||||
<xs:maxInclusive value="100"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="faultMsgType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="64"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="EVSEProcessingType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Finished"/>
|
||||
<xs:enumeration value="Ongoing"/>
|
||||
<xs:enumeration value="Ongoing_WaitingForCustomerInteraction"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="EVSENotificationType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="None"/>
|
||||
<xs:enumeration value="StopCharging"/>
|
||||
<xs:enumeration value="ReNegotiation"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="chargeProgressType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Start"/>
|
||||
<xs:enumeration value="Stop"/>
|
||||
<xs:enumeration value="Renegotiate"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="chargingSessionType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Terminate"/>
|
||||
<xs:enumeration value="Pause"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="serviceNameType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="serviceCategoryType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="EVCharging"/>
|
||||
<xs:enumeration value="Internet"/>
|
||||
<xs:enumeration value="ContractCertificate"/>
|
||||
<xs:enumeration value="OtherCustom"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="serviceScopeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="64"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="maxNumPhasesType">
|
||||
<xs:restriction base="xs:byte">
|
||||
<xs:minInclusive value="1"/>
|
||||
<xs:maxInclusive value="3"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="valueType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="bool"/>
|
||||
<xs:enumeration value="byte"/>
|
||||
<xs:enumeration value="short"/>
|
||||
<xs:enumeration value="int"/>
|
||||
<xs:enumeration value="physicalValue"/>
|
||||
<xs:enumeration value="string"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="meterStatusType">
|
||||
<xs:restriction base="xs:short"/>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- EnergyTransferType -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="EnergyTransferModeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AC_single_phase_core"/>
|
||||
<xs:enumeration value="AC_three_phase_core"/>
|
||||
<xs:enumeration value="DC_core"/>
|
||||
<xs:enumeration value="DC_extended"/>
|
||||
<xs:enumeration value="DC_combo_core"/>
|
||||
<xs:enumeration value="DC_unique"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- security types -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="genChallengeType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:length value="16"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="certificateType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="800"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="dHpublickeyType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="65"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="privateKeyType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="48"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="sigMeterReadingType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="64"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Identification Numbers -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="sessionIDType">
|
||||
<xs:restriction base="xs:hexBinary">
|
||||
<xs:maxLength value="8"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="evccIDType">
|
||||
<xs:restriction base="xs:hexBinary">
|
||||
<xs:maxLength value="6"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="evseIDType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="7"/>
|
||||
<xs:maxLength value="37"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="serviceIDType">
|
||||
<xs:restriction base="xs:unsignedShort"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="eMAIDType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="14"/>
|
||||
<xs:maxLength value="15"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="meterIDType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Tariffs and payment -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="SAIDType">
|
||||
<xs:restriction base="xs:unsignedByte">
|
||||
<xs:minInclusive value="1"/>
|
||||
<xs:maxInclusive value="255"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="tariffDescriptionType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="costKindType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="relativePricePercentage"/>
|
||||
<xs:enumeration value="RenewableGenerationPercentage"/>
|
||||
<xs:enumeration value="CarbonDioxideEmission"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PaymentOptionListType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PaymentOption" type="paymentOptionType" minOccurs="1" maxOccurs="2"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="paymentOptionType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Contract"/>
|
||||
<xs:enumeration value="ExternalPayment"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Fault and Response Codes -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="faultCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="ParsingError"/>
|
||||
<xs:enumeration value="NoTLSRootCertificatAvailable"/>
|
||||
<xs:enumeration value="UnknownError"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="responseCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="OK"/>
|
||||
<xs:enumeration value="OK_NewSessionEstablished"/>
|
||||
<xs:enumeration value="OK_OldSessionJoined"/>
|
||||
<xs:enumeration value="OK_CertificateExpiresSoon"/>
|
||||
<xs:enumeration value="FAILED"/>
|
||||
<xs:enumeration value="FAILED_SequenceError"/>
|
||||
<xs:enumeration value="FAILED_ServiceIDInvalid"/>
|
||||
<xs:enumeration value="FAILED_UnknownSession"/>
|
||||
<xs:enumeration value="FAILED_ServiceSelectionInvalid"/>
|
||||
<xs:enumeration value="FAILED_PaymentSelectionInvalid"/>
|
||||
<xs:enumeration value="FAILED_CertificateExpired"/>
|
||||
<xs:enumeration value="FAILED_SignatureError"/>
|
||||
<xs:enumeration value="FAILED_NoCertificateAvailable"/>
|
||||
<xs:enumeration value="FAILED_CertChainError"/>
|
||||
<xs:enumeration value="FAILED_ChallengeInvalid"/>
|
||||
<xs:enumeration value="FAILED_ContractCanceled"/>
|
||||
<xs:enumeration value="FAILED_WrongChargeParameter"/>
|
||||
<xs:enumeration value="FAILED_PowerDeliveryNotApplied"/>
|
||||
<xs:enumeration value="FAILED_TariffSelectionInvalid"/>
|
||||
<xs:enumeration value="FAILED_ChargingProfileInvalid"/>
|
||||
<xs:enumeration value="FAILED_MeteringSignatureNotValid"/>
|
||||
<xs:enumeration value="FAILED_NoChargeServiceSelected"/>
|
||||
<xs:enumeration value="FAILED_WrongEnergyTransferMode"/>
|
||||
<xs:enumeration value="FAILED_ContactorError"/>
|
||||
<xs:enumeration value="FAILED_CertificateNotAllowedAtThisEVSE"/>
|
||||
<xs:enumeration value="FAILED_CertificateRevoked"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Multiplier and Unit Types -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="unitMultiplierType">
|
||||
<xs:restriction base="xs:byte">
|
||||
<xs:minInclusive value="-3"/>
|
||||
<xs:maxInclusive value="3"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="unitSymbolType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="h">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Time in hours</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="m">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Time in minutes</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="s">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Time in seconds</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="A">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Current in Ampere</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="V">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Voltage in Volt</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="W">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Active power in Watt</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="Wh">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Real energy in Watt hours</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- only DC related -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="DC_EVSEStatusCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="EVSE_NotReady"/>
|
||||
<xs:enumeration value="EVSE_Ready"/>
|
||||
<xs:enumeration value="EVSE_Shutdown"/>
|
||||
<xs:enumeration value="EVSE_UtilityInterruptEvent"/>
|
||||
<xs:enumeration value="EVSE_IsolationMonitoringActive"/>
|
||||
<xs:enumeration value="EVSE_EmergencyShutdown"/>
|
||||
<xs:enumeration value="EVSE_Malfunction"/>
|
||||
<xs:enumeration value="Reserved_8"/>
|
||||
<xs:enumeration value="Reserved_9"/>
|
||||
<xs:enumeration value="Reserved_A"/>
|
||||
<xs:enumeration value="Reserved_B"/>
|
||||
<xs:enumeration value="Reserved_C"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="isolationLevelType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Invalid"/>
|
||||
<xs:enumeration value="Valid"/>
|
||||
<xs:enumeration value="Warning"/>
|
||||
<xs:enumeration value="Fault"/>
|
||||
<xs:enumeration value="No_IMD"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="DC_EVErrorCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="NO_ERROR"/>
|
||||
<xs:enumeration value="FAILED_RESSTemperatureInhibit"/>
|
||||
<xs:enumeration value="FAILED_EVShiftPosition"/>
|
||||
<xs:enumeration value="FAILED_ChargerConnectorLockFault"/>
|
||||
<xs:enumeration value="FAILED_EVRESSMalfunction"/>
|
||||
<xs:enumeration value="FAILED_ChargingCurrentdifferential"/>
|
||||
<xs:enumeration value="FAILED_ChargingVoltageOutOfRange"/>
|
||||
<xs:enumeration value="Reserved_A"/>
|
||||
<xs:enumeration value="Reserved_B"/>
|
||||
<xs:enumeration value="Reserved_C"/>
|
||||
<xs:enumeration value="FAILED_ChargingSystemIncompatibility"/>
|
||||
<xs:enumeration value="NoData"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:din:70121:2012:MsgDef" xmlns:v2gci_h="urn:iso:15118:2:2010:MsgHeader"
|
||||
xmlns:v2gci_b="urn:iso:15118:2:2013:MsgBody" targetNamespace="urn:iso:15118:2:2013:MsgDef"
|
||||
elementFormDefault="qualified" attributeFormDefault="qualified" version="15118 2.0">
|
||||
<!-- attributeFormDefault="unqualified" -->
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgHeader" schemaLocation="V2G_CI_MsgHeader.xsd"/>
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgBody" schemaLocation="V2G_CI_MsgBody.xsd"/>
|
||||
<!-- Message Structure -->
|
||||
<xs:element name="V2G_Message">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Header" type="v2gci_h:MessageHeaderType"/>
|
||||
<xs:element name="Body" type="v2gci_b:BodyType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2013:MsgHeader"
|
||||
xmlns:v2gci_t="urn:iso:15118:2:2013:MsgDataTypes"
|
||||
xmlns:xmlsig="http://www.w3.org/2000/09/xmldsig#"
|
||||
targetNamespace="urn:iso:15118:2:2013:MsgHeader"
|
||||
elementFormDefault="qualified" attributeFormDefault="qualified">
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgDataTypes" schemaLocation="V2G_CI_MsgDataTypes.xsd"/>
|
||||
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
|
||||
<!-- Message Header -->
|
||||
<xs:complexType name="MessageHeaderType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SessionID" type="v2gci_t:sessionIDType"/>
|
||||
<xs:element name="Notification" type="v2gci_t:NotificationType" minOccurs="0"/>
|
||||
<xs:element ref="xmlsig:Signature" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2013:MsgDef" xmlns:v2gci_h="urn:iso:15118:2:2013:MsgHeader"
|
||||
xmlns:v2gci_b="urn:iso:15118:2:2013:MsgBody" targetNamespace="urn:iso:15118:2:2013:MsgDef"
|
||||
elementFormDefault="qualified" attributeFormDefault="qualified" version="15118 2.0">
|
||||
<!-- attributeFormDefault="unqualified" -->
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgHeader" schemaLocation="V2G_CI_MsgHeader.xsd"/>
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgBody" schemaLocation="V2G_CI_MsgBody.xsd"/>
|
||||
<!-- Message Structure -->
|
||||
<xs:element name="V2G_Message">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Header" type="v2gci_h:MessageHeaderType"/>
|
||||
<xs:element name="Body" type="v2gci_b:BodyType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,240 @@
|
||||
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2000/09/xmldsig#" version="0.1" elementFormDefault="qualified">
|
||||
<!-- Basic Types Defined for Signatures -->
|
||||
<simpleType name="CryptoBinary">
|
||||
<restriction base="base64Binary"></restriction>
|
||||
</simpleType>
|
||||
<!-- Start Signature -->
|
||||
<element name="Signature" type="ds:SignatureType"/>
|
||||
<complexType name="SignatureType">
|
||||
<sequence>
|
||||
<element ref="ds:SignedInfo"/>
|
||||
<element ref="ds:SignatureValue"/>
|
||||
<element ref="ds:KeyInfo" minOccurs="0"/>
|
||||
<element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="SignatureValue" type="ds:SignatureValueType"/>
|
||||
<complexType name="SignatureValueType">
|
||||
<simpleContent>
|
||||
<extension base="base64Binary">
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
<!-- Start SignedInfo -->
|
||||
<element name="SignedInfo" type="ds:SignedInfoType"/>
|
||||
<complexType name="SignedInfoType">
|
||||
<sequence>
|
||||
<element ref="ds:CanonicalizationMethod"/>
|
||||
<element ref="ds:SignatureMethod"/>
|
||||
<element ref="ds:Reference" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>
|
||||
<complexType name="CanonicalizationMethodType" mixed="true">
|
||||
<sequence>
|
||||
<any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<!-- (0,unbounded) elements from (1,1) namespace -->
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<element name="SignatureMethod" type="ds:SignatureMethodType"/>
|
||||
<complexType name="SignatureMethodType" mixed="true">
|
||||
<sequence>
|
||||
<element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/>
|
||||
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<!--
|
||||
(0,unbounded) elements from (1,1) external namespace
|
||||
-->
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<!-- Start Reference -->
|
||||
<element name="Reference" type="ds:ReferenceType"/>
|
||||
<complexType name="ReferenceType">
|
||||
<sequence>
|
||||
<element ref="ds:Transforms" minOccurs="0"/>
|
||||
<element ref="ds:DigestMethod"/>
|
||||
<element ref="ds:DigestValue"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
<attribute name="URI" type="anyURI" use="optional"/>
|
||||
<attribute name="Type" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
<element name="Transforms" type="ds:TransformsType"/>
|
||||
<complexType name="TransformsType">
|
||||
<sequence>
|
||||
<element ref="ds:Transform" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<element name="Transform" type="ds:TransformType"/>
|
||||
<complexType name="TransformType" mixed="true">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
<!-- (1,1) elements from (0,unbounded) namespaces -->
|
||||
<element name="XPath" type="string"/>
|
||||
</choice>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<!-- End Reference -->
|
||||
<element name="DigestMethod" type="ds:DigestMethodType"/>
|
||||
<complexType name="DigestMethodType" mixed="true">
|
||||
<sequence>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<element name="DigestValue" type="ds:DigestValueType"/>
|
||||
<simpleType name="DigestValueType">
|
||||
<restriction base="base64Binary"/>
|
||||
</simpleType>
|
||||
<!-- End SignedInfo -->
|
||||
<!-- Start KeyInfo -->
|
||||
<element name="KeyInfo" type="ds:KeyInfoType"/>
|
||||
<complexType name="KeyInfoType" mixed="true">
|
||||
<choice maxOccurs="unbounded">
|
||||
<element ref="ds:KeyName"/>
|
||||
<element ref="ds:KeyValue"/>
|
||||
<element ref="ds:RetrievalMethod"/>
|
||||
<element ref="ds:X509Data"/>
|
||||
<element ref="ds:PGPData"/>
|
||||
<element ref="ds:SPKIData"/>
|
||||
<element ref="ds:MgmtData"/>
|
||||
<any processContents="lax" namespace="##other"/>
|
||||
<!-- (1,1) elements from (0,unbounded) namespaces -->
|
||||
</choice>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="KeyName" type="string"/>
|
||||
<element name="MgmtData" type="string"/>
|
||||
<element name="KeyValue" type="ds:KeyValueType"/>
|
||||
<complexType name="KeyValueType" mixed="true">
|
||||
<choice>
|
||||
<element ref="ds:DSAKeyValue"/>
|
||||
<element ref="ds:RSAKeyValue"/>
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
<element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
|
||||
<complexType name="RetrievalMethodType">
|
||||
<sequence>
|
||||
<element ref="ds:Transforms" minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="URI" type="anyURI"/>
|
||||
<attribute name="Type" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
<!-- Start X509Data -->
|
||||
<element name="X509Data" type="ds:X509DataType"/>
|
||||
<complexType name="X509DataType">
|
||||
<sequence maxOccurs="unbounded">
|
||||
<choice>
|
||||
<element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
|
||||
<element name="X509SKI" type="base64Binary"/>
|
||||
<element name="X509SubjectName" type="string"/>
|
||||
<element name="X509Certificate" type="base64Binary"/>
|
||||
<element name="X509CRL" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
</choice>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<complexType name="X509IssuerSerialType">
|
||||
<sequence>
|
||||
<element name="X509IssuerName" type="string"/>
|
||||
<element name="X509SerialNumber" type="integer"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!-- End X509Data -->
|
||||
<!-- Begin PGPData -->
|
||||
<element name="PGPData" type="ds:PGPDataType"/>
|
||||
<complexType name="PGPDataType">
|
||||
<choice>
|
||||
<sequence>
|
||||
<element name="PGPKeyID" type="base64Binary"/>
|
||||
<element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<sequence>
|
||||
<element name="PGPKeyPacket" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</choice>
|
||||
</complexType>
|
||||
<!-- End PGPData -->
|
||||
<!-- Begin SPKIData -->
|
||||
<element name="SPKIData" type="ds:SPKIDataType"/>
|
||||
<complexType name="SPKIDataType">
|
||||
<sequence maxOccurs="unbounded">
|
||||
<element name="SPKISexp" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!-- End SPKIData -->
|
||||
<!-- End KeyInfo -->
|
||||
<!-- Start Object (Manifest, SignatureProperty) -->
|
||||
<element name="Object" type="ds:ObjectType"/>
|
||||
<complexType name="ObjectType" mixed="true">
|
||||
<sequence minOccurs="0" maxOccurs="unbounded">
|
||||
<any namespace="##any" processContents="lax"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
<attribute name="MimeType" type="string" use="optional"/>
|
||||
<!-- add a grep facet -->
|
||||
<attribute name="Encoding" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
<element name="Manifest" type="ds:ManifestType"/>
|
||||
<complexType name="ManifestType">
|
||||
<sequence>
|
||||
<element ref="ds:Reference" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="SignatureProperties" type="ds:SignaturePropertiesType"/>
|
||||
<complexType name="SignaturePropertiesType">
|
||||
<sequence>
|
||||
<element ref="ds:SignatureProperty" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="SignatureProperty" type="ds:SignaturePropertyType"/>
|
||||
<complexType name="SignaturePropertyType" mixed="true">
|
||||
<choice maxOccurs="unbounded">
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
<!-- (1,1) elements from (1,unbounded) namespaces -->
|
||||
</choice>
|
||||
<attribute name="Target" type="anyURI" use="required"/>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<!-- End Object (Manifest, SignatureProperty) -->
|
||||
<!-- Start Algorithm Parameters -->
|
||||
<simpleType name="HMACOutputLengthType">
|
||||
<restriction base="integer"/>
|
||||
</simpleType>
|
||||
<!-- Start KeyValue Element-types -->
|
||||
<element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
|
||||
<complexType name="DSAKeyValueType">
|
||||
<sequence>
|
||||
<sequence minOccurs="0">
|
||||
<element name="P" type="ds:CryptoBinary"/>
|
||||
<element name="Q" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
<element name="G" type="ds:CryptoBinary" minOccurs="0"/>
|
||||
<element name="Y" type="ds:CryptoBinary"/>
|
||||
<element name="J" type="ds:CryptoBinary" minOccurs="0"/>
|
||||
<sequence minOccurs="0">
|
||||
<element name="Seed" type="ds:CryptoBinary"/>
|
||||
<element name="PgenCounter" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
|
||||
<complexType name="RSAKeyValueType">
|
||||
<sequence>
|
||||
<element name="Modulus" type="ds:CryptoBinary"/>
|
||||
<element name="Exponent" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!-- End KeyValue Element-types -->
|
||||
<!-- End Signature -->
|
||||
</schema>
|
||||
240
temp/V2Gdecoder/schemas/xmldsig-core-schema.xsd
Normal file
240
temp/V2Gdecoder/schemas/xmldsig-core-schema.xsd
Normal file
@@ -0,0 +1,240 @@
|
||||
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2000/09/xmldsig#" version="0.1" elementFormDefault="qualified">
|
||||
<!-- Basic Types Defined for Signatures -->
|
||||
<simpleType name="CryptoBinary">
|
||||
<restriction base="base64Binary"></restriction>
|
||||
</simpleType>
|
||||
<!-- Start Signature -->
|
||||
<element name="Signature" type="ds:SignatureType"/>
|
||||
<complexType name="SignatureType">
|
||||
<sequence>
|
||||
<element ref="ds:SignedInfo"/>
|
||||
<element ref="ds:SignatureValue"/>
|
||||
<element ref="ds:KeyInfo" minOccurs="0"/>
|
||||
<element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="SignatureValue" type="ds:SignatureValueType"/>
|
||||
<complexType name="SignatureValueType">
|
||||
<simpleContent>
|
||||
<extension base="base64Binary">
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
<!-- Start SignedInfo -->
|
||||
<element name="SignedInfo" type="ds:SignedInfoType"/>
|
||||
<complexType name="SignedInfoType">
|
||||
<sequence>
|
||||
<element ref="ds:CanonicalizationMethod"/>
|
||||
<element ref="ds:SignatureMethod"/>
|
||||
<element ref="ds:Reference" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>
|
||||
<complexType name="CanonicalizationMethodType" mixed="true">
|
||||
<sequence>
|
||||
<any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<!-- (0,unbounded) elements from (1,1) namespace -->
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<element name="SignatureMethod" type="ds:SignatureMethodType"/>
|
||||
<complexType name="SignatureMethodType" mixed="true">
|
||||
<sequence>
|
||||
<element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/>
|
||||
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<!--
|
||||
(0,unbounded) elements from (1,1) external namespace
|
||||
-->
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<!-- Start Reference -->
|
||||
<element name="Reference" type="ds:ReferenceType"/>
|
||||
<complexType name="ReferenceType">
|
||||
<sequence>
|
||||
<element ref="ds:Transforms" minOccurs="0"/>
|
||||
<element ref="ds:DigestMethod"/>
|
||||
<element ref="ds:DigestValue"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
<attribute name="URI" type="anyURI" use="optional"/>
|
||||
<attribute name="Type" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
<element name="Transforms" type="ds:TransformsType"/>
|
||||
<complexType name="TransformsType">
|
||||
<sequence>
|
||||
<element ref="ds:Transform" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<element name="Transform" type="ds:TransformType"/>
|
||||
<complexType name="TransformType" mixed="true">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
<!-- (1,1) elements from (0,unbounded) namespaces -->
|
||||
<element name="XPath" type="string"/>
|
||||
</choice>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<!-- End Reference -->
|
||||
<element name="DigestMethod" type="ds:DigestMethodType"/>
|
||||
<complexType name="DigestMethodType" mixed="true">
|
||||
<sequence>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<element name="DigestValue" type="ds:DigestValueType"/>
|
||||
<simpleType name="DigestValueType">
|
||||
<restriction base="base64Binary"/>
|
||||
</simpleType>
|
||||
<!-- End SignedInfo -->
|
||||
<!-- Start KeyInfo -->
|
||||
<element name="KeyInfo" type="ds:KeyInfoType"/>
|
||||
<complexType name="KeyInfoType" mixed="true">
|
||||
<choice maxOccurs="unbounded">
|
||||
<element ref="ds:KeyName"/>
|
||||
<element ref="ds:KeyValue"/>
|
||||
<element ref="ds:RetrievalMethod"/>
|
||||
<element ref="ds:X509Data"/>
|
||||
<element ref="ds:PGPData"/>
|
||||
<element ref="ds:SPKIData"/>
|
||||
<element ref="ds:MgmtData"/>
|
||||
<any processContents="lax" namespace="##other"/>
|
||||
<!-- (1,1) elements from (0,unbounded) namespaces -->
|
||||
</choice>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="KeyName" type="string"/>
|
||||
<element name="MgmtData" type="string"/>
|
||||
<element name="KeyValue" type="ds:KeyValueType"/>
|
||||
<complexType name="KeyValueType" mixed="true">
|
||||
<choice>
|
||||
<element ref="ds:DSAKeyValue"/>
|
||||
<element ref="ds:RSAKeyValue"/>
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
<element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
|
||||
<complexType name="RetrievalMethodType">
|
||||
<sequence>
|
||||
<element ref="ds:Transforms" minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="URI" type="anyURI"/>
|
||||
<attribute name="Type" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
<!-- Start X509Data -->
|
||||
<element name="X509Data" type="ds:X509DataType"/>
|
||||
<complexType name="X509DataType">
|
||||
<sequence maxOccurs="unbounded">
|
||||
<choice>
|
||||
<element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
|
||||
<element name="X509SKI" type="base64Binary"/>
|
||||
<element name="X509SubjectName" type="string"/>
|
||||
<element name="X509Certificate" type="base64Binary"/>
|
||||
<element name="X509CRL" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
</choice>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<complexType name="X509IssuerSerialType">
|
||||
<sequence>
|
||||
<element name="X509IssuerName" type="string"/>
|
||||
<element name="X509SerialNumber" type="integer"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!-- End X509Data -->
|
||||
<!-- Begin PGPData -->
|
||||
<element name="PGPData" type="ds:PGPDataType"/>
|
||||
<complexType name="PGPDataType">
|
||||
<choice>
|
||||
<sequence>
|
||||
<element name="PGPKeyID" type="base64Binary"/>
|
||||
<element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<sequence>
|
||||
<element name="PGPKeyPacket" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</choice>
|
||||
</complexType>
|
||||
<!-- End PGPData -->
|
||||
<!-- Begin SPKIData -->
|
||||
<element name="SPKIData" type="ds:SPKIDataType"/>
|
||||
<complexType name="SPKIDataType">
|
||||
<sequence maxOccurs="unbounded">
|
||||
<element name="SPKISexp" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!-- End SPKIData -->
|
||||
<!-- End KeyInfo -->
|
||||
<!-- Start Object (Manifest, SignatureProperty) -->
|
||||
<element name="Object" type="ds:ObjectType"/>
|
||||
<complexType name="ObjectType" mixed="true">
|
||||
<sequence minOccurs="0" maxOccurs="unbounded">
|
||||
<any namespace="##any" processContents="lax"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
<attribute name="MimeType" type="string" use="optional"/>
|
||||
<!-- add a grep facet -->
|
||||
<attribute name="Encoding" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
<element name="Manifest" type="ds:ManifestType"/>
|
||||
<complexType name="ManifestType">
|
||||
<sequence>
|
||||
<element ref="ds:Reference" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="SignatureProperties" type="ds:SignaturePropertiesType"/>
|
||||
<complexType name="SignaturePropertiesType">
|
||||
<sequence>
|
||||
<element ref="ds:SignatureProperty" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="SignatureProperty" type="ds:SignaturePropertyType"/>
|
||||
<complexType name="SignaturePropertyType" mixed="true">
|
||||
<choice maxOccurs="unbounded">
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
<!-- (1,1) elements from (1,unbounded) namespaces -->
|
||||
</choice>
|
||||
<attribute name="Target" type="anyURI" use="required"/>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<!-- End Object (Manifest, SignatureProperty) -->
|
||||
<!-- Start Algorithm Parameters -->
|
||||
<simpleType name="HMACOutputLengthType">
|
||||
<restriction base="integer"/>
|
||||
</simpleType>
|
||||
<!-- Start KeyValue Element-types -->
|
||||
<element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
|
||||
<complexType name="DSAKeyValueType">
|
||||
<sequence>
|
||||
<sequence minOccurs="0">
|
||||
<element name="P" type="ds:CryptoBinary"/>
|
||||
<element name="Q" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
<element name="G" type="ds:CryptoBinary" minOccurs="0"/>
|
||||
<element name="Y" type="ds:CryptoBinary"/>
|
||||
<element name="J" type="ds:CryptoBinary" minOccurs="0"/>
|
||||
<sequence minOccurs="0">
|
||||
<element name="Seed" type="ds:CryptoBinary"/>
|
||||
<element name="PgenCounter" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
|
||||
<complexType name="RSAKeyValueType">
|
||||
<sequence>
|
||||
<element name="Modulus" type="ds:CryptoBinary"/>
|
||||
<element name="Exponent" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!-- End KeyValue Element-types -->
|
||||
<!-- End Signature -->
|
||||
</schema>
|
||||
55
temp/V2Gdecoder/schemas_din/V2G_CI_AppProtocol.xsd
Normal file
55
temp/V2Gdecoder/schemas_din/V2G_CI_AppProtocol.xsd
Normal file
@@ -0,0 +1,55 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2010:AppProtocol"
|
||||
targetNamespace="urn:iso:15118:2:2010:AppProtocol">
|
||||
<xs:element name="supportedAppProtocolReq">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="AppProtocol" type="AppProtocolType" maxOccurs="20"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="supportedAppProtocolRes">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="responseCodeType"/>
|
||||
<xs:element name="SchemaID" type="idType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:complexType name="AppProtocolType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ProtocolNamespace" type="protocolNamespaceType"/>
|
||||
<xs:element name="VersionNumberMajor" type="xs:unsignedInt"/>
|
||||
<xs:element name="VersionNumberMinor" type="xs:unsignedInt"/>
|
||||
<xs:element name="SchemaID" type="idType"/>
|
||||
<xs:element name="Priority" type="priorityType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="idType">
|
||||
<xs:restriction base="xs:unsignedByte"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="protocolNameType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="30"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="protocolNamespaceType">
|
||||
<xs:restriction base="xs:anyURI">
|
||||
<xs:maxLength value="100"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="priorityType">
|
||||
<xs:restriction base="xs:unsignedByte">
|
||||
<xs:minInclusive value="1"/>
|
||||
<xs:maxInclusive value="20"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="responseCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="OK_SuccessfulNegotiation"/>
|
||||
<xs:enumeration value="OK_SuccessfulNegotiationWithMinorDeviation"/>
|
||||
<xs:enumeration value="Failed_NoNegotiation"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
482
temp/V2Gdecoder/schemas_din/V2G_CI_MsgBody.xsd
Normal file
482
temp/V2Gdecoder/schemas_din/V2G_CI_MsgBody.xsd
Normal file
@@ -0,0 +1,482 @@
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="urn:iso:15118:2:2010:MsgBody"
|
||||
xmlns="urn:iso:15118:2:2010:MsgBody"
|
||||
xmlns:v2gci_d="urn:iso:15118:2:2010:MsgDef"
|
||||
xmlns:v2gci_t="urn:iso:15118:2:2010:MsgDataTypes"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:import namespace="urn:iso:15118:2:2010:MsgDef" schemaLocation="V2G_CI_MsgDef.xsd"/>
|
||||
<xs:import namespace="urn:iso:15118:2:2010:MsgDataTypes" schemaLocation="V2G_CI_MsgDataTypes.xsd"/>
|
||||
<!-- ....................... -->
|
||||
<!-- Common Messages (AC/DC) -->
|
||||
<!-- ....................... -->
|
||||
<!-- -->
|
||||
<!-- Session Setup -->
|
||||
<!-- -->
|
||||
<xs:element name="SessionSetupReq" type="SessionSetupReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="SessionSetupReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EVCCID" type="v2gci_t:evccIDType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="SessionSetupRes" type="SessionSetupResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="SessionSetupResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="EVSEID" type="v2gci_t:evseIDType"/>
|
||||
<xs:element name="DateTimeNow" type="xs:long" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Service Discovery -->
|
||||
<!-- -->
|
||||
<xs:element name="ServiceDiscoveryReq" type="ServiceDiscoveryReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="ServiceDiscoveryReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceScope" type="v2gci_t:serviceScopeType" minOccurs="0"/>
|
||||
<xs:element name="ServiceCategory" type="v2gci_t:serviceCategoryType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ServiceDiscoveryRes" type="ServiceDiscoveryResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="ServiceDiscoveryResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="PaymentOptions" type="v2gci_t:PaymentOptionsType"/>
|
||||
<xs:element name="ChargeService" type="v2gci_t:ServiceChargeType"/>
|
||||
<xs:element name="ServiceList" type="v2gci_t:ServiceTagListType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Service Detail -->
|
||||
<!-- -->
|
||||
<xs:element name="ServiceDetailReq" type="ServiceDetailReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="ServiceDetailReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceID" type="v2gci_t:serviceIDType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ServiceDetailRes" type="ServiceDetailResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="ServiceDetailResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="ServiceID" type="v2gci_t:serviceIDType"/>
|
||||
<xs:element name="ServiceParameterList" type="v2gci_t:ServiceParameterListType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Service Payment & Selection -->
|
||||
<!-- -->
|
||||
<xs:element name="ServicePaymentSelectionReq" type="ServicePaymentSelectionReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="ServicePaymentSelectionReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SelectedPaymentOption" type="v2gci_t:paymentOptionType"/>
|
||||
<xs:element name="SelectedServiceList" type="v2gci_t:SelectedServiceListType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ServicePaymentSelectionRes" type="ServicePaymentSelectionResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="ServicePaymentSelectionResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Payment Details -->
|
||||
<!-- -->
|
||||
<xs:element name="PaymentDetailsReq" type="PaymentDetailsReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="PaymentDetailsReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ContractID" type="v2gci_t:contractIDType"/>
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PaymentDetailsRes" type="PaymentDetailsResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="PaymentDetailsResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="GenChallenge" type="v2gci_t:genChallengeType"/>
|
||||
<xs:element name="DateTimeNow" type="xs:long"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Contract Authentification -->
|
||||
<!-- -->
|
||||
<xs:element name="ContractAuthenticationReq" type="ContractAuthenticationReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="ContractAuthenticationReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="GenChallenge" type="v2gci_t:genChallengeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:IDREF" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ContractAuthenticationRes" type="ContractAuthenticationResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="ContractAuthenticationResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="EVSEProcessing" type="v2gci_t:EVSEProcessingType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Charge Parameter Discovery -->
|
||||
<!-- -->
|
||||
<xs:element name="ChargeParameterDiscoveryReq" type="ChargeParameterDiscoveryReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="ChargeParameterDiscoveryReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EVRequestedEnergyTransferType" type="v2gci_t:EVRequestedEnergyTransferType"/>
|
||||
<xs:element ref="v2gci_t:EVChargeParameter"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ChargeParameterDiscoveryRes" type="ChargeParameterDiscoveryResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="ChargeParameterDiscoveryResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element ref="v2gci_t:SASchedules"/>
|
||||
<xs:element ref="v2gci_t:EVSEChargeParameter"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Power Delivery -->
|
||||
<!-- -->
|
||||
<xs:element name="PowerDeliveryReq" type="PowerDeliveryReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="PowerDeliveryReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ReadyToChargeState" type="xs:boolean"/>
|
||||
<xs:element name="ChargingProfile" type="v2gci_t:ChargingProfileType" minOccurs="0"/>
|
||||
<xs:element ref="v2gci_t:EVPowerDeliveryParameter" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PowerDeliveryRes" type="PowerDeliveryResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="PowerDeliveryResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element ref="v2gci_t:EVSEStatus"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Charging Status -->
|
||||
<!-- -->
|
||||
<xs:element name="ChargingStatusReq" type="ChargingStatusReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<!-- <xs:element name="MeteringStatusReq" type="MeteringStatusReqType" substitutionGroup="v2gci_d:BodyElement"/> -->
|
||||
<xs:complexType name="ChargingStatusReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="ChargingStatusRes" type="ChargingStatusResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="ChargingStatusResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="EVSEID" type="v2gci_t:evseIDType"/>
|
||||
<xs:element name="SAScheduleTupleID" type="v2gci_t:SAIDType"/>
|
||||
<xs:element name="EVSEMaxCurrent" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="MeterInfo" type="v2gci_t:MeterInfoType" minOccurs="0"/>
|
||||
<xs:element name="ReceiptRequired" type="xs:boolean"/>
|
||||
<xs:element name="AC_EVSEStatus" type="v2gci_t:AC_EVSEStatusType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Metering Receipt -->
|
||||
<!-- -->
|
||||
<xs:element name="MeteringReceiptReq" type="MeteringReceiptReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="MeteringReceiptReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SessionID" type="v2gci_t:sessionIDType"/>
|
||||
<xs:element name="SAScheduleTupleID" type="v2gci_t:SAIDType" minOccurs="0"/>
|
||||
<xs:element name="MeterInfo" type="v2gci_t:MeterInfoType"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:IDREF"/>
|
||||
</xs:extension>
|
||||
<!-- only needed if receipt is required -->
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="MeteringReceiptRes" type="MeteringReceiptResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="MeteringReceiptResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="AC_EVSEStatus" type="v2gci_t:AC_EVSEStatusType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- SessionStop -->
|
||||
<!-- -->
|
||||
<xs:element name="SessionStopReq" type="SessionStopType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="SessionStopType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="SessionStopRes" type="SessionStopResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="SessionStopResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Certificate Update -->
|
||||
<!-- -->
|
||||
<xs:element name="CertificateUpdateReq" type="CertificateUpdateReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="CertificateUpdateReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
<xs:element name="ContractID" type="v2gci_t:contractIDType"/>
|
||||
<xs:element name="ListOfRootCertificateIDs" type="v2gci_t:ListOfRootCertificateIDsType"/>
|
||||
<xs:element name="DHParams" type="v2gci_t:dHParamsType"/>
|
||||
<!-- new -->
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:IDREF"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CertificateUpdateRes" type="CertificateUpdateResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="CertificateUpdateResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
<xs:element name="ContractSignatureEncryptedPrivateKey" type="v2gci_t:privateKeyType"/>
|
||||
<xs:element name="DHParams" type="v2gci_t:dHParamsType"/>
|
||||
<xs:element name="ContractID" type="v2gci_t:contractIDType"/>
|
||||
<xs:element name="RetryCounter" type="xs:short"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:IDREF" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Certificate Installation -->
|
||||
<!-- -->
|
||||
<xs:element name="CertificateInstallationReq" type="CertificateInstallationReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="CertificateInstallationReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="OEMProvisioningCert" type="v2gci_t:certificateType"/>
|
||||
<xs:element name="ListOfRootCertificateIDs" type="v2gci_t:ListOfRootCertificateIDsType"/>
|
||||
<xs:element name="DHParams" type="v2gci_t:dHParamsType"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:IDREF"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CertificateInstallationRes" type="CertificateInstallationResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="CertificateInstallationResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="ContractSignatureCertChain" type="v2gci_t:CertificateChainType"/>
|
||||
<xs:element name="ContractSignatureEncryptedPrivateKey" type="v2gci_t:privateKeyType"/>
|
||||
<xs:element name="DHParams" type="v2gci_t:dHParamsType"/>
|
||||
<xs:element name="ContractID" type="v2gci_t:contractIDType"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:IDREF" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- ....................... -->
|
||||
<!-- DC-Messages -->
|
||||
<!-- ....................... -->
|
||||
<!-- -->
|
||||
<!-- Cable Check -->
|
||||
<!-- -->
|
||||
<xs:element name="CableCheckReq" type="CableCheckReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="CableCheckReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CableCheckRes" type="CableCheckResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="CableCheckResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEProcessing" type="v2gci_t:EVSEProcessingType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Pre-Charge -->
|
||||
<!-- -->
|
||||
<xs:element name="PreChargeReq" type="PreChargeReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="PreChargeReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
<xs:element name="EVTargetVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVTargetCurrent" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PreChargeRes" type="PreChargeResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="PreChargeResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEPresentVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Current Demand -->
|
||||
<!-- -->
|
||||
<xs:element name="CurrentDemandReq" type="CurrentDemandReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="CurrentDemandReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
<xs:element name="EVTargetCurrent" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVMaximumVoltageLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVMaximumCurrentLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVMaximumPowerLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="BulkChargingComplete" type="xs:boolean" minOccurs="0"/>
|
||||
<xs:element name="ChargingComplete" type="xs:boolean"/>
|
||||
<xs:element name="RemainingTimeToFullSoC" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="RemainingTimeToBulkSoC" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVTargetVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="CurrentDemandRes" type="CurrentDemandResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="CurrentDemandResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEPresentVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVSEPresentCurrent" type="v2gci_t:PhysicalValueType"/>
|
||||
<xs:element name="EVSECurrentLimitAchieved" type="xs:boolean"/>
|
||||
<xs:element name="EVSEVoltageLimitAchieved" type="xs:boolean"/>
|
||||
<xs:element name="EVSEPowerLimitAchieved" type="xs:boolean"/>
|
||||
<xs:element name="EVSEMaximumVoltageLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEMaximumCurrentLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEMaximumPowerLimit" type="v2gci_t:PhysicalValueType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Welding Detection -->
|
||||
<!-- -->
|
||||
<xs:element name="WeldingDetectionReq" type="WeldingDetectionReqType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="WeldingDetectionReqType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="v2gci_t:DC_EVStatusType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="WeldingDetectionRes" type="WeldingDetectionResType" substitutionGroup="v2gci_d:BodyElement"/>
|
||||
<xs:complexType name="WeldingDetectionResType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="v2gci_d:BodyBaseType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResponseCode" type="v2gci_t:responseCodeType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="v2gci_t:DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEPresentVoltage" type="v2gci_t:PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
|
||||
696
temp/V2Gdecoder/schemas_din/V2G_CI_MsgDataTypes.xsd
Normal file
696
temp/V2Gdecoder/schemas_din/V2G_CI_MsgDataTypes.xsd
Normal file
@@ -0,0 +1,696 @@
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="urn:iso:15118:2:2010:MsgDataTypes"
|
||||
xmlns="urn:iso:15118:2:2010:MsgDataTypes"
|
||||
xmlns:v2gci_b="urn:iso:15118:2:2010:MsgBody"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:import namespace="urn:iso:15118:2:2010:MsgBody" schemaLocation="V2G_CI_MsgBody.xsd"/>
|
||||
|
||||
<!-- =================== -->
|
||||
<!-- Complex types -->
|
||||
<!-- =================== -->
|
||||
<!-- -->
|
||||
<!-- service-related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="ServiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceTag" type="ServiceTagType"/>
|
||||
<xs:element name="FreeService" type="xs:boolean"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ServiceTagListType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Service" type="ServiceType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ServiceTagType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceID" type="serviceIDType"/>
|
||||
<xs:element name="ServiceName" type="serviceNameType" minOccurs="0"/>
|
||||
<xs:element name="ServiceCategory" type="serviceCategoryType"/>
|
||||
<xs:element name="ServiceScope" type="serviceScopeType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SelectedServiceListType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SelectedService" type="SelectedServiceType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SelectedServiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ServiceID" type="serviceIDType"/>
|
||||
<xs:element name="ParameterSetID" type="xs:short" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ServiceParameterListType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ParameterSet" type="ParameterSetType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ParameterSetType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ParameterSetID" type="xs:short"/>
|
||||
<xs:element name="Parameter" type="ParameterType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ParameterType">
|
||||
<xs:choice>
|
||||
<xs:element name="boolValue" type="xs:boolean"/>
|
||||
<xs:element name="byteValue" type="xs:byte"/>
|
||||
<xs:element name="shortValue" type="xs:short"/>
|
||||
<xs:element name="intValue" type="xs:int"/>
|
||||
<xs:element name="physicalValue" type="PhysicalValueType"/>
|
||||
<xs:element name="stringValue" type="xs:string"/>
|
||||
</xs:choice>
|
||||
<xs:attribute name="Name" type="xs:string" use="required"/>
|
||||
<xs:attribute name="ValueType" type="valueType" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="valueType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="bool"/>
|
||||
<xs:enumeration value="byte"/>
|
||||
<xs:enumeration value="short"/>
|
||||
<xs:enumeration value="int"/>
|
||||
<xs:enumeration value="physicalValue"/>
|
||||
<xs:enumeration value="string"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:element name="ServiceCharge" type="ServiceChargeType"/>
|
||||
<xs:complexType name="ServiceChargeType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ServiceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EnergyTransferType" type="EVSESupportedEnergyTransferType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- security related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="CertificateChainType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Certificate" type="certificateType"/>
|
||||
<xs:element name="SubCertificates" type="SubCertificatesType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SubCertificatesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Certificate" type="certificateType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ListOfRootCertificateIDsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="RootCertificateID" type="rootCertificateIDType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- metering related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="MeterInfoType">
|
||||
<xs:sequence>
|
||||
<xs:element name="MeterID" type="meterIDType"/>
|
||||
<xs:element name="MeterReading" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="SigMeterReading" type="sigMeterReadingType" minOccurs="0"/>
|
||||
<xs:element name="MeterStatus" type="meterStatusType" minOccurs="0"/>
|
||||
<xs:element name="TMeter" type="xs:long" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="meterStatusType">
|
||||
<xs:restriction base="xs:short"/>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Physical value type -->
|
||||
<!-- -->
|
||||
<xs:complexType name="PhysicalValueType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Multiplier" type="unitMultiplierType"/>
|
||||
<xs:element name="Unit" type="unitSymbolType" minOccurs="0"/>
|
||||
<xs:element name="Value" type="xs:short"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- header related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="NotificationType">
|
||||
<xs:sequence>
|
||||
<xs:element name="FaultCode" type="faultCodeType"/>
|
||||
<xs:element name="FaultMsg" type="faultMsgType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- Tariff related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="SASchedulesType" abstract="true"/>
|
||||
<xs:element name="SASchedules" type="SASchedulesType"/>
|
||||
<xs:element name="SAScheduleList" type="SAScheduleListType" substitutionGroup="SASchedules"/>
|
||||
<xs:complexType name="SAScheduleListType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="SASchedulesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SAScheduleTuple" type="SAScheduleTupleType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SAScheduleTupleType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SAScheduleTupleID" type="SAIDType"/>
|
||||
<xs:element name="PMaxSchedule" type="PMaxScheduleType"/>
|
||||
<xs:element name="SalesTariff" type="SalesTariffType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SalesTariffType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SalesTariffID" type="SAIDType"/>
|
||||
<xs:element name="SalesTariffDescription" type="tariffDescriptionType" minOccurs="0"/>
|
||||
<xs:element name="NumEPriceLevels" type="xs:unsignedByte"/>
|
||||
<xs:element ref="SalesTariffEntry" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="xs:IDREF" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PMaxScheduleType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PMaxScheduleID" type="SAIDType"/>
|
||||
<xs:element ref="PMaxScheduleEntry" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="Entry" type="EntryType"/>
|
||||
<xs:complexType name="EntryType" abstract="true">
|
||||
<xs:sequence>
|
||||
<xs:element ref="TimeInterval"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="SalesTariffEntry" type="SalesTariffEntryType" substitutionGroup="Entry"/>
|
||||
<xs:complexType name="SalesTariffEntryType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EntryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EPriceLevel" type="xs:unsignedByte"/>
|
||||
<xs:element name="ConsumptionCost" type="ConsumptionCostType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="PMaxScheduleEntry" type="PMaxScheduleEntryType" substitutionGroup="Entry"/>
|
||||
<xs:complexType name="PMaxScheduleEntryType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EntryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PMax" type="PMaxType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IntervalType" abstract="true"/>
|
||||
<xs:element name="TimeInterval" type="IntervalType"/>
|
||||
<xs:element name="RelativeTimeInterval" type="RelativeTimeIntervalType" substitutionGroup="TimeInterval"/>
|
||||
<xs:complexType name="RelativeTimeIntervalType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="IntervalType">
|
||||
<xs:sequence>
|
||||
<xs:element name="start" type="xs:unsignedInt"/>
|
||||
<xs:element name="duration" type="xs:unsignedInt" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ConsumptionCostType">
|
||||
<xs:sequence>
|
||||
<xs:element name="startValue" type="xs:unsignedInt"/>
|
||||
<xs:element name="Cost" type="CostType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CostType">
|
||||
<xs:sequence>
|
||||
<xs:element name="costKind" type="costKindType"/>
|
||||
<xs:element name="amount" type="xs:unsignedInt"/>
|
||||
<xs:element name="amountMultiplier" type="unitMultiplierType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- EV/EVSE related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="EVSEStatusType" abstract="true"/>
|
||||
<xs:element name="EVSEStatus" type="EVSEStatusType"/>
|
||||
<xs:element name="AC_EVSEStatus" type="AC_EVSEStatusType" substitutionGroup="EVSEStatus"/>
|
||||
<xs:complexType name="AC_EVSEStatusType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEStatusType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PowerSwitchClosed" type="xs:boolean"/>
|
||||
<xs:element name="RCD" type="xs:boolean"/>
|
||||
<xs:element name="NotificationMaxDelay" type="xs:unsignedInt"/>
|
||||
<xs:element name="EVSENotification" type="EVSENotificationType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="EVStatusType" abstract="true"/>
|
||||
<xs:element name="EVStatus" type="EVStatusType"/>
|
||||
<xs:element name="DC_EVSEStatus" type="DC_EVSEStatusType" substitutionGroup="EVSEStatus"/>
|
||||
<xs:complexType name="DC_EVSEStatusType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEStatusType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EVSEIsolationStatus" type="isolationLevelType" minOccurs="0"/>
|
||||
<xs:element name="EVSEStatusCode" type="DC_EVSEStatusCodeType"/>
|
||||
<xs:element name="NotificationMaxDelay" type="xs:unsignedInt"/>
|
||||
<xs:element name="EVSENotification" type="EVSENotificationType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="DC_EVStatus" type="DC_EVStatusType" substitutionGroup="EVStatus"/>
|
||||
<xs:complexType name="DC_EVStatusType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVStatusType">
|
||||
<xs:sequence>
|
||||
<xs:element name="EVReady" type="xs:boolean"/>
|
||||
<xs:element name="EVCabinConditioning" type="xs:boolean" minOccurs="0"/>
|
||||
<xs:element name="EVRESSConditioning" type="xs:boolean" minOccurs="0"/>
|
||||
<xs:element name="EVErrorCode" type="DC_EVErrorCodeType"/>
|
||||
<xs:element name="EVRESSSOC" type="percentValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- EVSE/EV Charge Parameter related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="EVChargeParameterType" abstract="true"/>
|
||||
<xs:element name="EVChargeParameter" type="EVChargeParameterType"/>
|
||||
<xs:element name="AC_EVChargeParameter" type="AC_EVChargeParameterType" substitutionGroup="EVChargeParameter"/>
|
||||
<xs:complexType name="AC_EVChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DepartureTime" type="xs:unsignedInt"/>
|
||||
<xs:element name="EAmount" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMaxVoltage" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMaxCurrent" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMinCurrent" type="PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="DC_EVChargeParameter" type="DC_EVChargeParameterType" substitutionGroup="EVChargeParameter"/>
|
||||
<xs:complexType name="DC_EVChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="DC_EVStatusType"/>
|
||||
<xs:element name="EVMaximumCurrentLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVMaximumPowerLimit" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVMaximumVoltageLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVEnergyCapacity" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVEnergyRequest" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="FullSOC" type="percentValueType" minOccurs="0"/>
|
||||
<xs:element name="BulkSOC" type="percentValueType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="EVSEChargeParameterType" abstract="true"/>
|
||||
<xs:element name="EVSEChargeParameter" type="EVSEChargeParameterType"/>
|
||||
<xs:element name="AC_EVSEChargeParameter" type="AC_EVSEChargeParameterType" substitutionGroup="EVSEChargeParameter"/>
|
||||
<xs:complexType name="AC_EVSEChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="AC_EVSEStatus" type="AC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEMaxVoltage" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMaxCurrent" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMinCurrent" type="PhysicalValueType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="DC_EVSEChargeParameter" type="DC_EVSEChargeParameterType" substitutionGroup="EVSEChargeParameter"/>
|
||||
<xs:complexType name="DC_EVSEChargeParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVSEChargeParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVSEStatus" type="DC_EVSEStatusType"/>
|
||||
<xs:element name="EVSEMaximumCurrentLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMaximumPowerLimit" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEMaximumVoltageLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMinimumCurrentLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEMinimumVoltageLimit" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSECurrentRegulationTolerance" type="PhysicalValueType" minOccurs="0"/>
|
||||
<xs:element name="EVSEPeakCurrentRipple" type="PhysicalValueType"/>
|
||||
<xs:element name="EVSEEnergyToBeDelivered" type="PhysicalValueType" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- EV Power Delivery related types -->
|
||||
<!-- -->
|
||||
<xs:complexType name="EVPowerDeliveryParameterType" abstract="true"/>
|
||||
<xs:element name="EVPowerDeliveryParameter" type="EVPowerDeliveryParameterType"/>
|
||||
<xs:element name="DC_EVPowerDeliveryParameter" type="DC_EVPowerDeliveryParameterType" substitutionGroup="EVPowerDeliveryParameter"/>
|
||||
<xs:complexType name="DC_EVPowerDeliveryParameterType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="EVPowerDeliveryParameterType">
|
||||
<xs:sequence>
|
||||
<xs:element name="DC_EVStatus" type="DC_EVStatusType"/>
|
||||
<xs:element name="BulkChargingComplete" type="xs:boolean" minOccurs="0"/>
|
||||
<xs:element name="ChargingComplete" type="xs:boolean"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- -->
|
||||
<!-- ChargingProfileType -->
|
||||
<!-- -->
|
||||
<xs:complexType name="ChargingProfileType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SAScheduleTupleID" type="SAIDType"/>
|
||||
<xs:element name="ProfileEntry" type="ProfileEntryType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ProfileEntryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ChargingProfileEntryStart" type="xs:unsignedInt"/>
|
||||
<xs:element name="ChargingProfileEntryMaxPower" type="PMaxType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<!-- =================== -->
|
||||
<!-- Simple types -->
|
||||
<!-- =================== -->
|
||||
<!-- -->
|
||||
<!-- General Types -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="PMaxType">
|
||||
<xs:restriction base="xs:short"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="percentValueType">
|
||||
<xs:restriction base="xs:byte">
|
||||
<xs:minInclusive value="0"/>
|
||||
<xs:maxInclusive value="100"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="faultMsgType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="64"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="EVSEProcessingType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Finished"/>
|
||||
<xs:enumeration value="Ongoing"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="EVSENotificationType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="None"/>
|
||||
<xs:enumeration value="StopCharging"/>
|
||||
<xs:enumeration value="ReNegotiation"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- service related types -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="serviceNameType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="serviceCategoryType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="EVCharging"/>
|
||||
<xs:enumeration value="Internet"/>
|
||||
<xs:enumeration value="ContractCertificate"/>
|
||||
<xs:enumeration value="OtherCustom"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="serviceScopeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- EnergyTransferType -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="EVSESupportedEnergyTransferType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AC_single_phase_core"/>
|
||||
<xs:enumeration value="AC_three_phase_core"/>
|
||||
<xs:enumeration value="DC_core"/>
|
||||
<xs:enumeration value="DC_extended"/>
|
||||
<xs:enumeration value="DC_combo_core"/>
|
||||
<xs:enumeration value="DC_dual"/>
|
||||
<xs:enumeration value="AC_core1p_DC_extended"/>
|
||||
<xs:enumeration value="AC_single_DC_core"/>
|
||||
<xs:enumeration value="AC_single_phase_three_phase_core_DC_extended"/>
|
||||
<xs:enumeration value="AC_core3p_DC_extended"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="EVRequestedEnergyTransferType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AC_single_phase_core"/>
|
||||
<xs:enumeration value="AC_three_phase_core"/>
|
||||
<xs:enumeration value="DC_core"/>
|
||||
<xs:enumeration value="DC_extended"/>
|
||||
<xs:enumeration value="DC_combo_core"/>
|
||||
<xs:enumeration value="DC_unique"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- security types -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="genChallengeType">
|
||||
<xs:restriction base="xs:string"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="certificateType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="1200"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="rootCertificateIDType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="40"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="dHParamsType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="256"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="privateKeyType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="128"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="sigMeterReadingType">
|
||||
<xs:restriction base="xs:base64Binary">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Identification Numbers -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="sessionIDType">
|
||||
<xs:restriction base="xs:hexBinary">
|
||||
<xs:length value="8"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="evccIDType">
|
||||
<xs:restriction base="xs:hexBinary">
|
||||
<xs:maxLength value="8"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="evseIDType">
|
||||
<xs:restriction base="xs:hexBinary">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="serviceIDType">
|
||||
<xs:restriction base="xs:unsignedShort"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="contractIDType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="24"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="meterIDType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Tariffs and payment -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="SAIDType">
|
||||
<xs:restriction base="xs:short"/>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="tariffDescriptionType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:maxLength value="32"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="costKindType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="relativePricePercentage"/>
|
||||
<xs:enumeration value="RenewableGenerationPercentage"/>
|
||||
<xs:enumeration value="CarbonDioxideEmission"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="PaymentOptionsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="PaymentOption" type="paymentOptionType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="paymentOptionType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Contract"/>
|
||||
<xs:enumeration value="ExternalPayment"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Fault and Response Codes -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="faultCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="ParsingError"/>
|
||||
<xs:enumeration value="NoTLSRootCertificatAvailable"/>
|
||||
<xs:enumeration value="UnknownError"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="responseCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="OK"/>
|
||||
<xs:enumeration value="OK_NewSessionEstablished"/>
|
||||
<xs:enumeration value="OK_OldSessionJoined"/>
|
||||
<xs:enumeration value="OK_CertificateExpiresSoon"/>
|
||||
<xs:enumeration value="FAILED"/>
|
||||
<xs:enumeration value="FAILED_SequenceError"/>
|
||||
<xs:enumeration value="FAILED_ServiceIDInvalid"/>
|
||||
<xs:enumeration value="FAILED_UnknownSession"/>
|
||||
<xs:enumeration value="FAILED_ServiceSelectionInvalid"/>
|
||||
<xs:enumeration value="FAILED_PaymentSelectionInvalid"/>
|
||||
<xs:enumeration value="FAILED_CertificateExpired"/>
|
||||
<xs:enumeration value="FAILED_SignatureError"/>
|
||||
<xs:enumeration value="FAILED_NoCertificateAvailable"/>
|
||||
<xs:enumeration value="FAILED_CertChainError"/>
|
||||
<xs:enumeration value="FAILED_ChallengeInvalid"/>
|
||||
<xs:enumeration value="FAILED_ContractCanceled"/>
|
||||
<xs:enumeration value="FAILED_WrongChargeParameter"/>
|
||||
<xs:enumeration value="FAILED_PowerDeliveryNotApplied"/>
|
||||
<xs:enumeration value="FAILED_TariffSelectionInvalid"/>
|
||||
<xs:enumeration value="FAILED_ChargingProfileInvalid"/>
|
||||
<xs:enumeration value="FAILED_EVSEPresentVoltageToLow"/>
|
||||
<xs:enumeration value="FAILED_MeteringSignatureNotValid"/>
|
||||
<xs:enumeration value="FAILED_WrongEnergyTransferType"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- Multiplier and Unit Types -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="unitMultiplierType">
|
||||
<xs:restriction base="xs:byte">
|
||||
<xs:minInclusive value="-3"/>
|
||||
<xs:maxInclusive value="3"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="unitSymbolType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="h">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Time in hours</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="m">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Time in minutes</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="s">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Time in seconds</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="A">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Current in Ampere</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="Ah">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Ampere hour</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="V">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Voltage in Volt</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="VA">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Apparent power in Volt Ampere</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="W">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Active power in Watt</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="W/s">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Watt per second</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="Wh">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Real energy in Watt hours</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- -->
|
||||
<!-- only DC related -->
|
||||
<!-- -->
|
||||
<xs:simpleType name="DC_EVSEStatusCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="EVSE_NotReady"/>
|
||||
<xs:enumeration value="EVSE_Ready"/>
|
||||
<xs:enumeration value="EVSE_Shutdown"/>
|
||||
<xs:enumeration value="EVSE_UtilityInterruptEvent"/>
|
||||
<xs:enumeration value="EVSE_Precharge"/>
|
||||
<xs:enumeration value="EVSE_IsolationMonitoringActive"/>
|
||||
<xs:enumeration value="EVSE_EmergencyShutdown"/>
|
||||
<xs:enumeration value="EVSE_Malfunction"/>
|
||||
<xs:enumeration value="Reserved_8"/>
|
||||
<xs:enumeration value="Reserved_9"/>
|
||||
<xs:enumeration value="Reserved_A"/>
|
||||
<xs:enumeration value="Reserved_B"/>
|
||||
<xs:enumeration value="Reserved_C"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="isolationLevelType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Invalid"/>
|
||||
<xs:enumeration value="Safe"/>
|
||||
<xs:enumeration value="Warning"/>
|
||||
<xs:enumeration value="Fault"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="DC_EVErrorCodeType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="NO_ERROR"/>
|
||||
<xs:enumeration value="FAILED_RESSTemperatureInhibit"/>
|
||||
<xs:enumeration value="FAILED_EVShiftPosition"/>
|
||||
<xs:enumeration value="FAILED_ChargerConnectorLockFault"/>
|
||||
<xs:enumeration value="FAILED_EVRESSMalfunction"/>
|
||||
<xs:enumeration value="FAILED_ChargingCurrentdifferential"/>
|
||||
<xs:enumeration value="FAILED_ChargingVoltageOutOfRange"/>
|
||||
<xs:enumeration value="Reserved_A"/>
|
||||
<xs:enumeration value="Reserved_B"/>
|
||||
<xs:enumeration value="Reserved_C"/>
|
||||
<xs:enumeration value="FAILED_ChargingSystemIncompatibility"/>
|
||||
<xs:enumeration value="NoData"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
BIN
temp/V2Gdecoder/schemas_din/V2G_CI_MsgDef.exig
Normal file
BIN
temp/V2Gdecoder/schemas_din/V2G_CI_MsgDef.exig
Normal file
Binary file not shown.
28
temp/V2Gdecoder/schemas_din/V2G_CI_MsgDef.xsd
Normal file
28
temp/V2Gdecoder/schemas_din/V2G_CI_MsgDef.xsd
Normal file
@@ -0,0 +1,28 @@
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="urn:iso:15118:2:2010:MsgDef"
|
||||
xmlns="urn:iso:15118:2:2010:MsgDef"
|
||||
xmlns:v2gci_h="urn:iso:15118:2:2010:MsgHeader"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:import namespace="urn:iso:15118:2:2010:MsgHeader" schemaLocation="V2G_CI_MsgHeader.xsd"/>
|
||||
|
||||
<!-- Message Structure -->
|
||||
<xs:element name="V2G_Message">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Header" type="v2gci_h:MessageHeaderType"/>
|
||||
<xs:element name="Body" type="BodyType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<!-- Body -->
|
||||
<xs:complexType name="BodyType">
|
||||
<xs:sequence>
|
||||
<xs:element ref="BodyElement" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="BodyElement" type="BodyBaseType"/>
|
||||
<xs:complexType name="BodyBaseType" abstract="true"/>
|
||||
</xs:schema>
|
||||
|
||||
23
temp/V2Gdecoder/schemas_din/V2G_CI_MsgHeader.xsd
Normal file
23
temp/V2Gdecoder/schemas_din/V2G_CI_MsgHeader.xsd
Normal file
@@ -0,0 +1,23 @@
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="urn:iso:15118:2:2010:MsgHeader"
|
||||
xmlns="urn:iso:15118:2:2010:MsgHeader"
|
||||
xmlns:v2gci_d="urn:iso:15118:2:2010:MsgDef"
|
||||
xmlns:v2gci_t="urn:iso:15118:2:2010:MsgDataTypes"
|
||||
xmlns:xmlsig="http://www.w3.org/2000/09/xmldsig#"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:import namespace="urn:iso:15118:2:2010:MsgDef" schemaLocation="V2G_CI_MsgDef.xsd"/>
|
||||
<xs:import namespace="urn:iso:15118:2:2010:MsgDataTypes" schemaLocation="V2G_CI_MsgDataTypes.xsd"/>
|
||||
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
|
||||
|
||||
<!-- Message Header -->
|
||||
<xs:complexType name="MessageHeaderType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SessionID" type="v2gci_t:sessionIDType"/>
|
||||
<xs:element name="Notification" type="v2gci_t:NotificationType" minOccurs="0"/>
|
||||
<xs:element ref="xmlsig:Signature" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
|
||||
18
temp/V2Gdecoder/schemas_din/V2G_DIN_MsgDef.xsd
Normal file
18
temp/V2Gdecoder/schemas_din/V2G_DIN_MsgDef.xsd
Normal file
@@ -0,0 +1,18 @@
|
||||
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:iso:15118:2:2013:MsgDef" xmlns:v2gci_h="urn:iso:15118:2:2013:MsgHeader"
|
||||
xmlns:v2gci_b="urn:iso:15118:2:2013:MsgBody" targetNamespace="urn:iso:15118:2:2013:MsgDef"
|
||||
elementFormDefault="qualified" attributeFormDefault="qualified" version="15118 2.0">
|
||||
<!-- attributeFormDefault="unqualified" -->
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgHeader" schemaLocation="V2G_CI_MsgHeader.xsd"/>
|
||||
<xs:import namespace="urn:iso:15118:2:2013:MsgBody" schemaLocation="V2G_CI_MsgBody.xsd"/>
|
||||
<!-- Message Structure -->
|
||||
<xs:element name="V2G_Message">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Header" type="v2gci_h:MessageHeaderType"/>
|
||||
<xs:element name="Body" type="v2gci_b:BodyType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
240
temp/V2Gdecoder/schemas_din/xmldsig-core-schema.xsd
Normal file
240
temp/V2Gdecoder/schemas_din/xmldsig-core-schema.xsd
Normal file
@@ -0,0 +1,240 @@
|
||||
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2000/09/xmldsig#" version="0.1" elementFormDefault="qualified">
|
||||
<!-- Basic Types Defined for Signatures -->
|
||||
<simpleType name="CryptoBinary">
|
||||
<restriction base="base64Binary"></restriction>
|
||||
</simpleType>
|
||||
<!-- Start Signature -->
|
||||
<element name="Signature" type="ds:SignatureType"/>
|
||||
<complexType name="SignatureType">
|
||||
<sequence>
|
||||
<element ref="ds:SignedInfo"/>
|
||||
<element ref="ds:SignatureValue"/>
|
||||
<element ref="ds:KeyInfo" minOccurs="0"/>
|
||||
<element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="SignatureValue" type="ds:SignatureValueType"/>
|
||||
<complexType name="SignatureValueType">
|
||||
<simpleContent>
|
||||
<extension base="base64Binary">
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
<!-- Start SignedInfo -->
|
||||
<element name="SignedInfo" type="ds:SignedInfoType"/>
|
||||
<complexType name="SignedInfoType">
|
||||
<sequence>
|
||||
<element ref="ds:CanonicalizationMethod"/>
|
||||
<element ref="ds:SignatureMethod"/>
|
||||
<element ref="ds:Reference" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>
|
||||
<complexType name="CanonicalizationMethodType" mixed="true">
|
||||
<sequence>
|
||||
<any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<!-- (0,unbounded) elements from (1,1) namespace -->
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<element name="SignatureMethod" type="ds:SignatureMethodType"/>
|
||||
<complexType name="SignatureMethodType" mixed="true">
|
||||
<sequence>
|
||||
<element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/>
|
||||
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<!--
|
||||
(0,unbounded) elements from (1,1) external namespace
|
||||
-->
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<!-- Start Reference -->
|
||||
<element name="Reference" type="ds:ReferenceType"/>
|
||||
<complexType name="ReferenceType">
|
||||
<sequence>
|
||||
<element ref="ds:Transforms" minOccurs="0"/>
|
||||
<element ref="ds:DigestMethod"/>
|
||||
<element ref="ds:DigestValue"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
<attribute name="URI" type="anyURI" use="optional"/>
|
||||
<attribute name="Type" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
<element name="Transforms" type="ds:TransformsType"/>
|
||||
<complexType name="TransformsType">
|
||||
<sequence>
|
||||
<element ref="ds:Transform" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<element name="Transform" type="ds:TransformType"/>
|
||||
<complexType name="TransformType" mixed="true">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
<!-- (1,1) elements from (0,unbounded) namespaces -->
|
||||
<element name="XPath" type="string"/>
|
||||
</choice>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<!-- End Reference -->
|
||||
<element name="DigestMethod" type="ds:DigestMethodType"/>
|
||||
<complexType name="DigestMethodType" mixed="true">
|
||||
<sequence>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
<element name="DigestValue" type="ds:DigestValueType"/>
|
||||
<simpleType name="DigestValueType">
|
||||
<restriction base="base64Binary"/>
|
||||
</simpleType>
|
||||
<!-- End SignedInfo -->
|
||||
<!-- Start KeyInfo -->
|
||||
<element name="KeyInfo" type="ds:KeyInfoType"/>
|
||||
<complexType name="KeyInfoType" mixed="true">
|
||||
<choice maxOccurs="unbounded">
|
||||
<element ref="ds:KeyName"/>
|
||||
<element ref="ds:KeyValue"/>
|
||||
<element ref="ds:RetrievalMethod"/>
|
||||
<element ref="ds:X509Data"/>
|
||||
<element ref="ds:PGPData"/>
|
||||
<element ref="ds:SPKIData"/>
|
||||
<element ref="ds:MgmtData"/>
|
||||
<any processContents="lax" namespace="##other"/>
|
||||
<!-- (1,1) elements from (0,unbounded) namespaces -->
|
||||
</choice>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="KeyName" type="string"/>
|
||||
<element name="MgmtData" type="string"/>
|
||||
<element name="KeyValue" type="ds:KeyValueType"/>
|
||||
<complexType name="KeyValueType" mixed="true">
|
||||
<choice>
|
||||
<element ref="ds:DSAKeyValue"/>
|
||||
<element ref="ds:RSAKeyValue"/>
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
<element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
|
||||
<complexType name="RetrievalMethodType">
|
||||
<sequence>
|
||||
<element ref="ds:Transforms" minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="URI" type="anyURI"/>
|
||||
<attribute name="Type" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
<!-- Start X509Data -->
|
||||
<element name="X509Data" type="ds:X509DataType"/>
|
||||
<complexType name="X509DataType">
|
||||
<sequence maxOccurs="unbounded">
|
||||
<choice>
|
||||
<element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
|
||||
<element name="X509SKI" type="base64Binary"/>
|
||||
<element name="X509SubjectName" type="string"/>
|
||||
<element name="X509Certificate" type="base64Binary"/>
|
||||
<element name="X509CRL" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
</choice>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<complexType name="X509IssuerSerialType">
|
||||
<sequence>
|
||||
<element name="X509IssuerName" type="string"/>
|
||||
<element name="X509SerialNumber" type="integer"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!-- End X509Data -->
|
||||
<!-- Begin PGPData -->
|
||||
<element name="PGPData" type="ds:PGPDataType"/>
|
||||
<complexType name="PGPDataType">
|
||||
<choice>
|
||||
<sequence>
|
||||
<element name="PGPKeyID" type="base64Binary"/>
|
||||
<element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<sequence>
|
||||
<element name="PGPKeyPacket" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</choice>
|
||||
</complexType>
|
||||
<!-- End PGPData -->
|
||||
<!-- Begin SPKIData -->
|
||||
<element name="SPKIData" type="ds:SPKIDataType"/>
|
||||
<complexType name="SPKIDataType">
|
||||
<sequence maxOccurs="unbounded">
|
||||
<element name="SPKISexp" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!-- End SPKIData -->
|
||||
<!-- End KeyInfo -->
|
||||
<!-- Start Object (Manifest, SignatureProperty) -->
|
||||
<element name="Object" type="ds:ObjectType"/>
|
||||
<complexType name="ObjectType" mixed="true">
|
||||
<sequence minOccurs="0" maxOccurs="unbounded">
|
||||
<any namespace="##any" processContents="lax"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
<attribute name="MimeType" type="string" use="optional"/>
|
||||
<!-- add a grep facet -->
|
||||
<attribute name="Encoding" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
<element name="Manifest" type="ds:ManifestType"/>
|
||||
<complexType name="ManifestType">
|
||||
<sequence>
|
||||
<element ref="ds:Reference" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="SignatureProperties" type="ds:SignaturePropertiesType"/>
|
||||
<complexType name="SignaturePropertiesType">
|
||||
<sequence>
|
||||
<element ref="ds:SignatureProperty" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<element name="SignatureProperty" type="ds:SignaturePropertyType"/>
|
||||
<complexType name="SignaturePropertyType" mixed="true">
|
||||
<choice maxOccurs="unbounded">
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
<!-- (1,1) elements from (1,unbounded) namespaces -->
|
||||
</choice>
|
||||
<attribute name="Target" type="anyURI" use="required"/>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
<!-- End Object (Manifest, SignatureProperty) -->
|
||||
<!-- Start Algorithm Parameters -->
|
||||
<simpleType name="HMACOutputLengthType">
|
||||
<restriction base="integer"/>
|
||||
</simpleType>
|
||||
<!-- Start KeyValue Element-types -->
|
||||
<element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
|
||||
<complexType name="DSAKeyValueType">
|
||||
<sequence>
|
||||
<sequence minOccurs="0">
|
||||
<element name="P" type="ds:CryptoBinary"/>
|
||||
<element name="Q" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
<element name="G" type="ds:CryptoBinary" minOccurs="0"/>
|
||||
<element name="Y" type="ds:CryptoBinary"/>
|
||||
<element name="J" type="ds:CryptoBinary" minOccurs="0"/>
|
||||
<sequence minOccurs="0">
|
||||
<element name="Seed" type="ds:CryptoBinary"/>
|
||||
<element name="PgenCounter" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
|
||||
<complexType name="RSAKeyValueType">
|
||||
<sequence>
|
||||
<element name="Modulus" type="ds:CryptoBinary"/>
|
||||
<element name="Exponent" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!-- End KeyValue Element-types -->
|
||||
<!-- End Signature -->
|
||||
</schema>
|
||||
@@ -0,0 +1,14 @@
|
||||
1. Generated the Java classes from V2G_CI_MsgDef.xsd into the package v2gMessages.msgDef.
|
||||
This creates all message types defined in
|
||||
- V2G_CI_MsgDef
|
||||
- V2G_CI_MsgHeader
|
||||
- V2G_CI_MsgBody
|
||||
- V2G_CI_MsgDataTypes
|
||||
- xldsig-core-schema.xsd
|
||||
|
||||
|
||||
2. Generated the Java classes from V2G_CI_AppProtocol.xsd into the package v2gMessages.appProtocol
|
||||
(because of the class ResponseCodeType, which is defined in both schema files and would therefore
|
||||
raise conflicts).
|
||||
|
||||
3. Add SECCDiscoveryReq.java and SECCDiscoveryRes.java to the package v2gMessages.
|
||||
@@ -0,0 +1,116 @@
|
||||
package com.fluxlus.V2Gdecoder;
|
||||
|
||||
import com.fluxlus.V2Gdecoder.server.MultiThreadedServer;
|
||||
import java.io.IOException;
|
||||
import org.apache.commons.cli.*;
|
||||
import org.xml.sax.SAXException;
|
||||
import com.siemens.ct.exi.core.exceptions.EXIException;
|
||||
import com.siemens.ct.exi.core.grammars.Grammars;
|
||||
import com.siemens.ct.exi.grammars.GrammarFactory;
|
||||
import com.v2gclarity.risev2g.shared.enumerations.GlobalValues;
|
||||
import com.fluxlus.V2Gdecoder.dataprocess.*;
|
||||
|
||||
/*
|
||||
* Copyright (C) V2Gdecoder by FlUxIuS (Sebastien Dudek)
|
||||
*/
|
||||
|
||||
public class V2Gdecoder {
|
||||
public static void main(String[] args) throws IOException, SAXException, EXIException {
|
||||
Options options = new Options();
|
||||
Option sinput = new Option("s", "string", true, "string to decode");
|
||||
sinput.setRequired(false);
|
||||
options.addOption(sinput);
|
||||
Option finput = new Option("f", "file", true, "input file path");
|
||||
finput.setRequired(false);
|
||||
options.addOption(finput);
|
||||
Option output = new Option("o", "output", false, "output file in a dedicated path");
|
||||
output.setRequired(false);
|
||||
options.addOption(output);
|
||||
Option xmlformat = new Option("x", "xml", false, "XML format");
|
||||
xmlformat.setRequired(false);
|
||||
options.addOption(xmlformat);
|
||||
Option exiform = new Option("e", "exi", false, "EXI format");
|
||||
exiform.setRequired(false);
|
||||
options.addOption(exiform);
|
||||
Option webserv = new Option("w", "web", false, "Webserver");
|
||||
webserv.setRequired(false);
|
||||
options.addOption(webserv);
|
||||
|
||||
CommandLineParser parser = new DefaultParser();
|
||||
HelpFormatter formatter = new HelpFormatter();
|
||||
CommandLine cmd = null;
|
||||
|
||||
try {
|
||||
cmd = parser.parse(options, args);
|
||||
} catch (ParseException e) {
|
||||
System.out.println(e.getMessage());
|
||||
formatter.printHelp("V2GEXI Helper", options);
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
String inputFilePath = cmd.getOptionValue("file");
|
||||
if (!cmd.hasOption("file"))
|
||||
{
|
||||
inputFilePath = cmd.getOptionValue("string");
|
||||
}
|
||||
//String outputFilePath = cmd.getOptionValue("output"); /* TODO: custom output file */
|
||||
decodeMode dmode = decodeMode.STRTOSTR;
|
||||
String result = null;
|
||||
|
||||
/* Initialize grammars */
|
||||
Grammars[] grammars = {null, null, null};
|
||||
|
||||
/* BOTTLENECK: slow operation */
|
||||
try {
|
||||
grammars[0] = GrammarFactory.newInstance().createGrammars("." + GlobalValues.SCHEMA_PATH_MSG_DEF.toString());
|
||||
} catch (EXIException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try {
|
||||
grammars[1] = GrammarFactory.newInstance().createGrammars("." + GlobalValues.SCHEMA_PATH_APP_PROTOCOL.toString());
|
||||
} catch (EXIException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try {
|
||||
grammars[2] = GrammarFactory.newInstance().createGrammars("." + GlobalValues.SCHEMA_PATH_XMLDSIG.toString());
|
||||
} catch (EXIException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (cmd.hasOption("xml"))
|
||||
{ // We wan to encode a XML input
|
||||
if (cmd.hasOption("file"))
|
||||
{
|
||||
dmode = decodeMode.FILETOSTR;
|
||||
if (cmd.hasOption("output"))
|
||||
dmode = decodeMode.FILETOFILE;
|
||||
} else {
|
||||
dmode = decodeMode.STRTOSTR;
|
||||
if (cmd.hasOption("output"))
|
||||
dmode = decodeMode.STRTOSTR;
|
||||
}
|
||||
result = dataprocess.fuzzyExiEncoder(inputFilePath, dmode, grammars);
|
||||
if (!cmd.hasOption("output"))
|
||||
System.out.println(result);
|
||||
} else if (cmd.hasOption("exi")) { // We wan to decode an EXI input
|
||||
if (cmd.hasOption("file"))
|
||||
{ // if a file path is provided
|
||||
dmode = decodeMode.FILETOSTR;
|
||||
if (cmd.hasOption("output"))
|
||||
dmode = decodeMode.FILETOFILE;
|
||||
} else { // if input is provided in stdin
|
||||
dmode = decodeMode.STRTOSTR;
|
||||
if (cmd.hasOption("output"))
|
||||
dmode = decodeMode.STRTOFILE;
|
||||
}
|
||||
result = dataprocess.fuzzyExiDecoded(inputFilePath, dmode, grammars);
|
||||
if (!cmd.hasOption("output"))
|
||||
{ // output in stdout
|
||||
System.out.println(result);
|
||||
}
|
||||
} else if (cmd.hasOption("web")) { // run a encoder/decoder service on port TCP 9000
|
||||
MultiThreadedServer server = new MultiThreadedServer(9000, grammars);
|
||||
new Thread(server).start();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.fluxlus.V2Gdecoder.binascii;
|
||||
|
||||
/*
|
||||
* code from: https://github.com/EverythingMe/inbloom/blob/master/java/src/main/java/me/everything/inbloom/BinAscii.java
|
||||
*/
|
||||
|
||||
public class BinAscii {
|
||||
final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
|
||||
|
||||
/**
|
||||
* Transform a byte array into a it's hexadecimal representation
|
||||
*/
|
||||
public static String hexlify(byte[] bytes) {
|
||||
char[] hexChars = new char[bytes.length * 2];
|
||||
for ( int j = 0; j < bytes.length; j++ ) {
|
||||
int v = bytes[j] & 0xFF;
|
||||
hexChars[j * 2] = hexArray[v >>> 4];
|
||||
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
|
||||
}
|
||||
String ret = new String(hexChars);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Transform a string of hexadecimal chars into a byte array
|
||||
*/
|
||||
public static byte[] unhexlify(String argbuf) {
|
||||
int arglen = argbuf.length();
|
||||
if (arglen % 2 != 0)
|
||||
throw new RuntimeException("Odd-length string");
|
||||
|
||||
byte[] retbuf = new byte[arglen/2];
|
||||
|
||||
for (int i = 0; i < arglen; i += 2) {
|
||||
int top = Character.digit(argbuf.charAt(i), 16);
|
||||
int bot = Character.digit(argbuf.charAt(i+1), 16);
|
||||
if (top == -1 || bot == -1)
|
||||
throw new RuntimeException("Non-hexadecimal digit found");
|
||||
retbuf[i / 2] = (byte) ((top << 4) + bot);
|
||||
}
|
||||
return retbuf;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,223 @@
|
||||
package com.fluxlus.V2Gdecoder.dataprocess;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.io.StringReader;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.sql.Timestamp;
|
||||
|
||||
import javax.xml.transform.Result;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.sax.SAXSource;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
|
||||
import com.v2gclarity.risev2g.shared.enumerations.GlobalValues;
|
||||
// import com.v2gclarity.risev2g.shared.messageHandling.MessageHandler;
|
||||
// import com.v2gclarity.risev2g.shared.utils.MiscUtils;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.XMLReader;
|
||||
import org.xml.sax.helpers.XMLReaderFactory;
|
||||
|
||||
import com.siemens.ct.exi.core.EXIFactory;
|
||||
import com.siemens.ct.exi.grammars.GrammarFactory;
|
||||
import com.siemens.ct.exi.core.grammars.Grammars;
|
||||
import com.siemens.ct.exi.main.api.sax.EXIResult;
|
||||
import com.siemens.ct.exi.main.api.sax.EXISource;
|
||||
import com.siemens.ct.exi.core.exceptions.EXIException;
|
||||
import com.siemens.ct.exi.core.helpers.DefaultEXIFactory;
|
||||
|
||||
import com.fluxlus.V2Gdecoder.binascii.BinAscii;
|
||||
|
||||
/*
|
||||
* Copyright (C) V2Gdecoder by FlUxIuS (Sebastien Dudek)
|
||||
*/
|
||||
|
||||
public class dataprocess {
|
||||
// public MessageHandler messageHandler;
|
||||
|
||||
// public MessageHandler getMessageHandler() {
|
||||
// return messageHandler;
|
||||
// }
|
||||
|
||||
// public static void initConfig() {
|
||||
// MiscUtils.loadProperties("./test.properties");
|
||||
// }
|
||||
|
||||
public static String Xml2Exi(String inputsc, String xmlstr, decodeMode mode, Grammars grammar) throws IOException, SAXException, EXIException {
|
||||
/*
|
||||
* Encode XML to EXI
|
||||
* In(1): XML string or input file path string
|
||||
* In(2): (decodeMode) Input/Output mode
|
||||
* Out: encoded result string
|
||||
* */
|
||||
EXIFactory exiFactory = DefaultEXIFactory.newInstance();
|
||||
ByteArrayOutputStream bosEXI = null;
|
||||
OutputStream osEXI = null;
|
||||
String result = null;
|
||||
String outfile = null;
|
||||
|
||||
exiFactory.setGrammars(grammar);
|
||||
|
||||
EXIResult exiResult = new EXIResult(exiFactory);
|
||||
if (mode == decodeMode.FILETOSTR || mode == decodeMode.STRTOSTR)
|
||||
{ // stream output
|
||||
bosEXI = new ByteArrayOutputStream();
|
||||
exiResult.setOutputStream(bosEXI);
|
||||
} else { // file output
|
||||
if (mode == decodeMode.STRTOFILE) {
|
||||
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
||||
String filename = new String("out."+timestamp.toString()+".exi");
|
||||
outfile = filename;
|
||||
osEXI = new FileOutputStream(filename);
|
||||
}
|
||||
else
|
||||
osEXI = new FileOutputStream(xmlstr + ".exi");
|
||||
exiResult.setOutputStream(osEXI);
|
||||
}
|
||||
|
||||
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
|
||||
xmlReader.setContentHandler( exiResult.getHandler() );
|
||||
|
||||
xmlReader.parse(new InputSource(new StringReader(inputsc))); // parse XML input
|
||||
if (mode == decodeMode.FILETOSTR || mode == decodeMode.STRTOSTR)
|
||||
{
|
||||
result = BinAscii.hexlify(bosEXI.toByteArray());
|
||||
bosEXI.close();
|
||||
} else {
|
||||
osEXI.close();
|
||||
result = new String("File written in '" + mode + outfile + "'");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String Exi2Xml(String existr, decodeMode mode, Grammars grammar) throws IOException, SAXException, EXIException, TransformerException {
|
||||
/*
|
||||
* Decode EXI data to XML
|
||||
* In(1): String to decode
|
||||
* In(2): (decodeMode) Input/Output
|
||||
* In(3): String of grammar XSD path to use
|
||||
* Out: decoded result string
|
||||
* */
|
||||
EXIFactory exiFactory = DefaultEXIFactory.newInstance();
|
||||
String result = null;
|
||||
String inputsc = existr;
|
||||
Result res = null;
|
||||
ByteArrayOutputStream outputStream = null;
|
||||
InputSource is = null;
|
||||
exiFactory.setGrammars(grammar);
|
||||
|
||||
if (mode == decodeMode.FILETOSTR || mode == decodeMode.FILETOFILE)
|
||||
is = new InputSource(inputsc);
|
||||
else
|
||||
is = new InputSource(new ByteArrayInputStream(BinAscii.unhexlify(inputsc)));
|
||||
|
||||
SAXSource exiSource = new EXISource(exiFactory);
|
||||
exiSource.setInputSource(is);
|
||||
TransformerFactory tf = TransformerFactory.newInstance();
|
||||
Transformer transformer = tf.newTransformer();
|
||||
|
||||
if (mode == decodeMode.STRTOFILE || mode == decodeMode.FILETOFILE)
|
||||
{
|
||||
String filename = null;
|
||||
if (mode == decodeMode.STRTOFILE)
|
||||
{
|
||||
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
||||
filename = new String("out."+timestamp.toString()+".xml");
|
||||
} else
|
||||
filename = existr + ".xml";
|
||||
|
||||
res = new StreamResult(filename);
|
||||
result = new String("File written in '" + filename + "'");
|
||||
} else {
|
||||
outputStream = new ByteArrayOutputStream();
|
||||
res = new StreamResult(outputStream);
|
||||
}
|
||||
|
||||
transformer.transform(exiSource, res);
|
||||
|
||||
if (mode == decodeMode.FILETOSTR || mode == decodeMode.STRTOSTR)
|
||||
result = new String(outputStream.toByteArray());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String fuzzyExiEncoder(String xmlstr, decodeMode dmode, Grammars[] grammars) throws IOException, SAXException
|
||||
{
|
||||
/*
|
||||
* Enumerate V2G grammar to decode EXI data
|
||||
* In(1): Input string
|
||||
* In(2): (decodeMode) Input/Output modes
|
||||
* Out: Decoded result string
|
||||
*/
|
||||
|
||||
String result = null;
|
||||
String inputsc = null;
|
||||
Grammars grammar = null;
|
||||
|
||||
if (dmode == decodeMode.FILETOSTR || dmode == decodeMode.FILETOFILE)
|
||||
{ // In case the input is a file
|
||||
byte[] rbytes = Files.readAllBytes(Paths.get(xmlstr));
|
||||
inputsc = new String(rbytes);
|
||||
} else {
|
||||
inputsc = xmlstr;
|
||||
}
|
||||
|
||||
/* Selects grammar intelligenly */
|
||||
if (inputsc.contains("supportedAppProtocol"))
|
||||
{ // select AppProtocol schema to set V2G grammar
|
||||
grammar = grammars[1];
|
||||
} else if (inputsc.contains("V2G_Message")) { // select MSG DEF
|
||||
grammar = grammars[0];
|
||||
} else { // XMLDSIG by default
|
||||
grammar = grammars[2];
|
||||
}
|
||||
|
||||
try {
|
||||
result = Xml2Exi(inputsc, xmlstr, dmode, grammar);
|
||||
} catch(EXIException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String fuzzyExiDecoded(String strinput, decodeMode dmode, Grammars[] grammars)
|
||||
{
|
||||
/*
|
||||
* Enumerate V2G grammar to decode EXI data
|
||||
* In(1): Input string
|
||||
* In(2): (decodeMode) Input/Output modes
|
||||
* Out: Decoded result string
|
||||
*/
|
||||
|
||||
String result = null;
|
||||
|
||||
try {
|
||||
result = Exi2Xml(strinput, dmode, grammars[0]);
|
||||
} catch (Exception e1) {
|
||||
try {
|
||||
result = Exi2Xml(strinput, dmode, grammars[1]);
|
||||
} catch (Exception e2) {
|
||||
try {
|
||||
result = Exi2Xml(strinput, dmode, grammars[2]);
|
||||
} catch (EXIException e3) {
|
||||
// do nothing
|
||||
//e3.printStackTrace();
|
||||
} catch (Exception b3) {
|
||||
// do nothing
|
||||
//b3.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.fluxlus.V2Gdecoder.dataprocess;
|
||||
|
||||
/*
|
||||
* Copyright (C) V2Gdecoder by FlUxIuS (Sebastien Dudek)
|
||||
*/
|
||||
|
||||
public enum decodeMode {
|
||||
STRTOSTR,
|
||||
STRTOFILE,
|
||||
FILETOSTR,
|
||||
FILETOFILE
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,73 @@
|
||||
package com.fluxlus.V2Gdecoder.server;
|
||||
|
||||
import java.net.ServerSocket;
|
||||
|
||||
import java.net.Socket;
|
||||
import java.io.IOException;
|
||||
import com.siemens.ct.exi.core.grammars.Grammars;
|
||||
|
||||
/*
|
||||
* Copyright (C) V2Gdecoder by FlUxIuS (Sebastien Dudek)
|
||||
*/
|
||||
|
||||
public class MultiThreadedServer implements Runnable{
|
||||
|
||||
protected int serverPort = 8080;
|
||||
protected ServerSocket serverSocket = null;
|
||||
protected boolean isStopped = false;
|
||||
protected Thread runningThread= null;
|
||||
protected Grammars[] grammars = null;
|
||||
|
||||
public MultiThreadedServer(int port, Grammars[] grammars){
|
||||
this.serverPort = port;
|
||||
this.grammars = grammars;
|
||||
}
|
||||
|
||||
public void run(){
|
||||
synchronized(this){
|
||||
this.runningThread = Thread.currentThread();
|
||||
}
|
||||
openServerSocket();
|
||||
while(! isStopped()){
|
||||
Socket clientSocket = null;
|
||||
try {
|
||||
clientSocket = this.serverSocket.accept();
|
||||
} catch (IOException e) {
|
||||
if(isStopped()) {
|
||||
System.out.println("Server Stopped.") ;
|
||||
return;
|
||||
}
|
||||
throw new RuntimeException(
|
||||
"Error accepting client connection", e);
|
||||
}
|
||||
new Thread(
|
||||
new WorkerRunnable(
|
||||
clientSocket, this.grammars, "Multithreaded Server")
|
||||
).start();
|
||||
}
|
||||
System.out.println("Server Stopped.") ;
|
||||
}
|
||||
|
||||
|
||||
private synchronized boolean isStopped() {
|
||||
return this.isStopped;
|
||||
}
|
||||
|
||||
public synchronized void stop(){
|
||||
this.isStopped = true;
|
||||
try {
|
||||
this.serverSocket.close();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Error closing server", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void openServerSocket() {
|
||||
try {
|
||||
this.serverSocket = new ServerSocket(this.serverPort);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Cannot open port 8080", e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package com.fluxlus.V2Gdecoder.server;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.net.Socket;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import com.siemens.ct.exi.core.exceptions.EXIException;
|
||||
import com.siemens.ct.exi.core.grammars.Grammars;
|
||||
|
||||
import com.fluxlus.V2Gdecoder.dataprocess.dataprocess;
|
||||
import com.fluxlus.V2Gdecoder.dataprocess.decodeMode;
|
||||
|
||||
public class WorkerRunnable implements Runnable{
|
||||
|
||||
protected Socket clientSocket = null;
|
||||
protected String serverText = null;
|
||||
protected Grammars[] grammars = null;
|
||||
|
||||
public WorkerRunnable(Socket clientSocket, Grammars[] grammars, String serverText) {
|
||||
this.clientSocket = clientSocket;
|
||||
this.serverText = serverText;
|
||||
this.grammars = grammars;
|
||||
}
|
||||
|
||||
public static Map<String, String> parseHTTPHeaders(InputStream inputStream)
|
||||
throws IOException {
|
||||
int charRead;
|
||||
StringBuffer sb = new StringBuffer();
|
||||
while (true) {
|
||||
sb.append((char) (charRead = inputStream.read()));
|
||||
if ((char) charRead == '\r') {
|
||||
sb.append((char) inputStream.read());
|
||||
charRead = inputStream.read();
|
||||
if (charRead == '\r') {
|
||||
sb.append((char) inputStream.read());
|
||||
break;
|
||||
} else {
|
||||
sb.append((char) charRead);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String[] headersArray = sb.toString().split("\r\n");
|
||||
Map<String, String> headers = new HashMap<>();
|
||||
for (int i = 1; i < headersArray.length - 1; i++) {
|
||||
headers.put(headersArray[i].split(": ")[0],
|
||||
headersArray[i].split(": ")[1]);
|
||||
}
|
||||
|
||||
return headers;
|
||||
}
|
||||
|
||||
public static String parseHTTPBody(InputStream inputStream)
|
||||
throws IOException {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
int length = inputStream.available();
|
||||
InputStreamReader test = new InputStreamReader(inputStream);
|
||||
|
||||
BufferedReader bufferedReader = new BufferedReader(test);
|
||||
char[] charBuffer = new char[4096];
|
||||
int bytesRead;
|
||||
|
||||
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
|
||||
stringBuilder.append(charBuffer, 0, bytesRead);
|
||||
if (stringBuilder.length() <= length) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return stringBuilder.toString();
|
||||
}
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
InputStream input = clientSocket.getInputStream();
|
||||
OutputStream output = clientSocket.getOutputStream();
|
||||
//long time = System.currentTimeMillis();
|
||||
Map<String, String> headers = parseHTTPHeaders(input);
|
||||
System.out.println(headers);
|
||||
String body = parseHTTPBody(input);
|
||||
String result = null;
|
||||
System.out.println(headers.get("Format").toString());
|
||||
|
||||
if (headers.get("Format").contains("EXI"))
|
||||
{
|
||||
result = dataprocess.fuzzyExiDecoded(body, decodeMode.STRTOSTR, this.grammars);
|
||||
} else {
|
||||
try {
|
||||
result = dataprocess.fuzzyExiEncoder(body, decodeMode.STRTOSTR, this.grammars);
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
//System.out.println(result);
|
||||
output.write(("HTTP/1.1 200 OK\n\n" + result +
|
||||
"").getBytes());
|
||||
output.close();
|
||||
input.close();
|
||||
|
||||
} catch (IOException e) {
|
||||
//report exception somewhere.
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user