Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1) - OpenOCPP extracted (firmware OCPP 1.6J/2.0.1) - ShapeShifter library installed (pip install -e) - ShapeShifter specification extracted - EVerest extracted TODO updated with progress
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
from dataclasses import dataclass, field
|
||||
from typing import List
|
||||
|
||||
from ..validations import validate_list
|
||||
from .flex_message import FlexMessage
|
||||
from .payload_message import PayloadMessageResponse
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class DPrognosisISP:
|
||||
"""
|
||||
:ivar power: Power specified for this ISP in Watts. Also see the
|
||||
important notes about the sign of this attribute in the main
|
||||
documentation entry for the ISP element.
|
||||
:ivar start: Number of the first ISPs this element refers to. The
|
||||
first ISP of a day has number 1.
|
||||
:ivar duration: The number of the ISPs this element represents.
|
||||
Optional, default value is 1.
|
||||
"""
|
||||
class Meta:
|
||||
name = "D-PrognosisISP"
|
||||
|
||||
power: int = field(
|
||||
metadata={
|
||||
"name": "Power",
|
||||
"type": "Attribute",
|
||||
"required": True,
|
||||
}
|
||||
)
|
||||
start: int = field(
|
||||
metadata={
|
||||
"name": "Start",
|
||||
"type": "Attribute",
|
||||
"required": True,
|
||||
}
|
||||
)
|
||||
duration: int = field(
|
||||
default=1,
|
||||
metadata={
|
||||
"name": "Duration",
|
||||
"type": "Attribute",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class FlexOrderStatus:
|
||||
flex_order_message_id: str = field(
|
||||
metadata={
|
||||
"name": "FlexOrderMessageID",
|
||||
"type": "Attribute",
|
||||
"required": True,
|
||||
"pattern": r"[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}",
|
||||
}
|
||||
)
|
||||
is_validated: bool = field(
|
||||
metadata={
|
||||
"name": "IsValidated",
|
||||
"type": "Attribute",
|
||||
"required": True,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class DPrognosisResponse(PayloadMessageResponse):
|
||||
class Meta:
|
||||
name = "D-PrognosisResponse"
|
||||
|
||||
d_prognosis_message_id: str = field(
|
||||
metadata={
|
||||
"name": "D-PrognosisMessageID",
|
||||
"type": "Attribute",
|
||||
"required": True,
|
||||
"pattern": r"[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}",
|
||||
}
|
||||
)
|
||||
|
||||
flex_order_statuses: List[FlexOrderStatus] = field(
|
||||
default_factory=list,
|
||||
metadata={
|
||||
"name": "FlexOrderStatus",
|
||||
"type": "Element",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class DPrognosis(FlexMessage):
|
||||
"""
|
||||
:ivar isp:
|
||||
:ivar revision: Revision of this message. A sequence number that
|
||||
must be incremented each time a new revision of a prognosis is
|
||||
sent. The combination of SenderDomain and PrognosisSequence
|
||||
should be unique
|
||||
"""
|
||||
class Meta:
|
||||
name = "D-Prognosis"
|
||||
|
||||
isps: List[DPrognosisISP] = field(
|
||||
default_factory=list,
|
||||
metadata={
|
||||
"name": "ISP",
|
||||
"type": "Element",
|
||||
"min_occurs": 1,
|
||||
}
|
||||
)
|
||||
revision: int = field(
|
||||
metadata={
|
||||
"name": "Revision",
|
||||
"type": "Attribute",
|
||||
"required": True,
|
||||
}
|
||||
)
|
||||
|
||||
def __post_init__(self):
|
||||
validate_list('isps', self.isps, DPrognosisISP, 1)
|
||||
Reference in New Issue
Block a user