Pushing old schemas to decode old protocols used currently by constructors

This commit is contained in:
FlUxIuS 2019-05-12 22:12:08 +02:00
parent 4af8e7493b
commit caf82dda94
9 changed files with 1581 additions and 0 deletions

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

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

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

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

Binary file not shown.

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

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

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

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