secc package¶
Subpackages¶
- secc.states package
- Submodules
- secc.states.evse_state module
- secc.states.initial_state module
- secc.states.process_authorization_request module
- secc.states.process_authorization_setup_request module
- secc.states.process_dc_cable_check_request module
- secc.states.process_dc_charge_loop_request module
- secc.states.process_dc_charge_parameter_discovery_request module
- secc.states.process_dc_pre_charge_request module
- secc.states.process_dc_welding_detection_request module
- secc.states.process_power_delivery_request module
- secc.states.process_schedule_exchange_request module
- secc.states.process_service_detail_request module
- secc.states.process_service_discovery_request module
- secc.states.process_service_selection_request module
- secc.states.process_session_setup_request module
- secc.states.process_session_stop_request module
- secc.states.process_supported_app_protocol_request module
- Module contents
Submodules¶
secc.evse_controller module¶
- class secc.evse_controller.DcEVSEDataModel(_observers: List[shared.gui.GUI] = <factory>, notification_type: str = None, supported_app_protocols: List[shared.xml_classes.app_protocol.v2_g_ci_app_protocol.AppProtocolType] = None, evseid: Union[str, NoneType] = None, authorization_services: List[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType] = None, certificate_installation_service: Union[bool, NoneType] = None, evseprocessing: Union[shared.xml_classes.common_messages.v2_g_ci_common_types.ProcessingType, NoneType] = None, service_renegotiation_supported: Union[bool, NoneType] = None, energy_transfer_service_list: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType, NoneType] = None, vaslist: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType, NoneType] = None, service_id: Union[int, NoneType] = None, services: List[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceParameterListType] = None, evsestatus: Union[shared.xml_classes.common_messages.v2_g_ci_common_types.EvsestatusType, NoneType] = None, bpt_dc_cpdres_energy_transfer_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptDcCpdresEnergyTransferMode, NoneType] = None, dc_cpdres_energy_transfer_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.DcCpdresEnergyTransferMode, NoneType] = None, dc_evseprocessing: Union[shared.xml_classes.dc.v2_g_ci_common_types.ProcessingType, NoneType] = None, evsepresent_voltage: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evsepresent_current: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evsepower_limit_achieved: Union[bool, NoneType] = None, evsecurrent_limit_achieved: Union[bool, NoneType] = None, evsevoltage_limit_achieved: Union[bool, NoneType] = None, bpt_dynamic_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptDynamicDcClresControlMode, NoneType] = None, dynamic_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.DynamicDcClresControlMode, NoneType] = None, bpt_scheduled_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptScheduledDcClresControlMode, NoneType] = None, scheduled_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.ScheduledDcClresControlMode, NoneType] = None, clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_common_types.ClresControlMode, NoneType] = None)¶
Bases:
secc.evse_controller.EVSEDataModel
- bpt_dc_cpdres_energy_transfer_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.BptDcCpdresEnergyTransferMode] = None¶
- bpt_dynamic_dc_clres_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.BptDynamicDcClresControlMode] = None¶
- bpt_scheduled_dc_clres_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.BptScheduledDcClresControlMode] = None¶
- clres_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_common_types.ClresControlMode] = None¶
- dc_cpdres_energy_transfer_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.DcCpdresEnergyTransferMode] = None¶
- dc_evseprocessing: Optional[shared.xml_classes.dc.v2_g_ci_common_types.ProcessingType] = None¶
- dynamic_dc_clres_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.DynamicDcClresControlMode] = None¶
- evsecurrent_limit_achieved: Optional[bool] = None¶
- evsepower_limit_achieved: Optional[bool] = None¶
- evsepresent_current: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evsepresent_voltage: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evsevoltage_limit_achieved: Optional[bool] = None¶
- scheduled_dc_clres_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.ScheduledDcClresControlMode] = None¶
- class secc.evse_controller.EVSEDataModel(_observers: List[shared.gui.GUI] = <factory>, notification_type: Optional[str] = None, supported_app_protocols: Optional[List[shared.xml_classes.app_protocol.v2_g_ci_app_protocol.AppProtocolType]] = None, evseid: Optional[str] = None, authorization_services: Optional[List[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType]] = None, certificate_installation_service: Optional[bool] = None, evseprocessing: Optional[shared.xml_classes.common_messages.v2_g_ci_common_types.ProcessingType] = None, service_renegotiation_supported: Optional[bool] = None, energy_transfer_service_list: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType] = None, vaslist: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType] = None, service_id: Optional[int] = None, services: Optional[List[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceParameterListType]] = None, evsestatus: Optional[shared.xml_classes.common_messages.v2_g_ci_common_types.EvsestatusType] = None)¶
Bases:
object
Data model containing anything related to the EVSE.
- attach(observer)¶
- authorization_services: List[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType] = None¶
- certificate_installation_service: Optional[bool] = None¶
- energy_transfer_service_list: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType] = None¶
- evseid: Optional[str] = None¶
- evseprocessing: Optional[shared.xml_classes.common_messages.v2_g_ci_common_types.ProcessingType] = None¶
- evsestatus: Optional[shared.xml_classes.common_messages.v2_g_ci_common_types.EvsestatusType] = None¶
- notification_type: str = None¶
- notify()¶
- service_id: Optional[int] = None¶
- service_renegotiation_supported: Optional[bool] = None¶
- services: List[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceParameterListType] = None¶
- supported_app_protocols: List[shared.xml_classes.app_protocol.v2_g_ci_app_protocol.AppProtocolType] = None¶
- vaslist: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType] = None¶
- class secc.evse_controller.IDcEVSEController¶
Bases:
secc.evse_controller.IEVSEController
- charge_ev: bool = False¶
- class secc.evse_controller.IEVSEController(data_model: dataclasses.dataclass, virtual_mode: Optional[bool] = None, state_machine: shared.physical_interface.PhysicalInterface = <shared.physical_interface.PhysicalInterface object>)¶
Bases:
shared.controller.ControllerInterface
- data_model: dataclasses.dataclass¶
- get_config()¶
secc.evse_dummy_controller module¶
- class secc.evse_dummy_controller.EVSEDummyController¶
Bases:
secc.evse_controller.IEVSEController
Class that implements the DcBptDynamic EVSE controller.
- data_model: dataclasses.dataclass¶
- set_machine()¶
Configures the 61851 state machine.
- Returns
- class secc.evse_dummy_controller.EVSEEmulator(_observers: List[shared.gui.GUI] = <factory>, notification_type: str = None, supported_app_protocols: List[shared.xml_classes.app_protocol.v2_g_ci_app_protocol.AppProtocolType] = None, evseid: Union[str, NoneType] = None, authorization_services: List[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType] = None, certificate_installation_service: Union[bool, NoneType] = None, evseprocessing: Union[shared.xml_classes.common_messages.v2_g_ci_common_types.ProcessingType, NoneType] = None, service_renegotiation_supported: Union[bool, NoneType] = None, energy_transfer_service_list: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType, NoneType] = None, vaslist: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType, NoneType] = None, service_id: Union[int, NoneType] = None, services: List[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceParameterListType] = None, evsestatus: Union[shared.xml_classes.common_messages.v2_g_ci_common_types.EvsestatusType, NoneType] = None, bpt_dc_cpdres_energy_transfer_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptDcCpdresEnergyTransferMode, NoneType] = None, dc_cpdres_energy_transfer_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.DcCpdresEnergyTransferMode, NoneType] = None, dc_evseprocessing: Union[shared.xml_classes.dc.v2_g_ci_common_types.ProcessingType, NoneType] = None, evsepresent_voltage: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evsepresent_current: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = RationalNumberType(exponent=0, value=0), evsepower_limit_achieved: Union[bool, NoneType] = None, evsecurrent_limit_achieved: Union[bool, NoneType] = None, evsevoltage_limit_achieved: Union[bool, NoneType] = None, bpt_dynamic_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptDynamicDcClresControlMode, NoneType] = None, dynamic_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.DynamicDcClresControlMode, NoneType] = None, bpt_scheduled_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptScheduledDcClresControlMode, NoneType] = None, scheduled_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.ScheduledDcClresControlMode, NoneType] = None, clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_common_types.ClresControlMode, NoneType] = None, departure_time: Union[int, NoneType] = 86400, ev_departure_time: Union[int, NoneType] = <property object at 0x7f2b0941ca90>, _ev_departure_time: Union[int, NoneType] = 0, minimum_soc: int = 0, target_soc: int = <property object at 0x7f2b0941cae0>, _target_soc: Union[int, NoneType] = 0, evsemaximum_charge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evseminimum_charge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evsemaximum_discharge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evseminimum_discharge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evsemaximum_charge_current: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evseminimum_charge_current: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evsemaximum_discharge_current: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evseminimum_discharge_current: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evsemaximum_voltage: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evseminimum_voltage: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evsepresent_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, internal_resistance: Union[float, NoneType] = 0.1, present_soc: int = <property object at 0x7f2b0941c9a0>, state: str = <property object at 0x7f2b0941c9f0>, battery_capacity: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = <property object at 0x7f2b0941ca40>, _battery_capacity: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = RationalNumberType(exponent=0, value=0), consumed_energy: int = 0, provided_energy: int = 0, total_energy: int = 0, evmaximum_discharge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = <property object at 0x7f2b0941cb80>, _evmaximum_discharge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = RationalNumberType(exponent=0, value=0), evmaximum_charge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = <property object at 0x7f2b0941cb30>, _evmaximum_charge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = RationalNumberType(exponent=0, value=0))¶
Bases:
secc.evse_controller.DcEVSEDataModel
- property battery_capacity¶
- consumed_energy: int = 0¶
- departure_time: Optional[int] = 86400¶
- energy_evolution = [0]¶
- property ev_departure_time¶
- property evmaximum_charge_power¶
- property evmaximum_discharge_power¶
- evsemaximum_charge_current: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evsemaximum_charge_power: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evsemaximum_discharge_current: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evsemaximum_discharge_power: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evsemaximum_voltage: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evseminimum_charge_current: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evseminimum_charge_power: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evseminimum_discharge_current: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evseminimum_discharge_power: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evseminimum_voltage: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evsepresent_current: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = RationalNumberType(exponent=0, value=0)¶
- evsepresent_power: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- get_bpt_dc_cpdres_energy_transfer_mode()¶
Builds message containing BptDcCpdresEnergyTransferMode.
- Returns
XML object.
- get_bpt_dynamic_dc_clres_control_mode()¶
Builds message containing BptDynamicDcClresControlMode.
- Returns
XML object.
- get_dynamic_seres_control_mode()¶
Builds message containing DynamicSeresControlModeType.
- Returns
XML object.
- internal_resistance: Optional[float] = 0.1¶
- minimum_soc: int = 0¶
- power_evolution = [0]¶
- property present_soc¶
- provided_energy: int = 0¶
- property state¶
- property target_soc¶
- total_energy: int = 0¶
- update_charging_status(present_soc, battery_energy_capacity, power)¶
Updates data model by calculating values.
- Parameters
present_soc – The present state of charge.
battery_energy_capacity – The total battery capacity.
power – The current power.
- Returns
secc.evse_gui module¶
- class secc.evse_gui.EVSEMainWindow¶
Bases:
shared.gui.GUI
- check_state_box(state)¶
Checks the boxes depending on the current state.
- Returns
- connect_signals()¶
Connects data to their respective widgets.
- Returns
- retranslate_ui(main_window)¶
Retranslates some texts.
- Parameters
main_window – The window containing all the widgets.
- Returns
- run_evse()¶
- set_ev_settings()¶
Sets EV settings.
- Returns
- set_present_current()¶
- setup_ui(main_window)¶
Sets the UI.
- Parameters
main_window – The window containing all the widgets.
- Returns
- update(subject)¶
Updates the UI.
- Returns
- update_timer()¶
Updates the departure time timer.
- Returns
secc.evse_session module¶
- class secc.evse_session.EVSESession(controller)¶
Bases:
shared.session.CommunicationSession
Represents a EVSE side communication session. Built with a state machine.
- static generate_random_session_id() str ¶
Generates a random 8-length int number. See [V2G20-2621] for more detail. Might have security issues.
- Returns
str – the resulting id.
- class secc.evse_session.EVSESessionParameters(session_id: bytes = None, ip_address: str = None, port: int = None, evseid: Union[str, NoneType] = None, authorization_services: List[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType] = None, certificate_installation_service: Union[bool, NoneType] = None, eim_asres_authorization_mode: Union[object, NoneType] = None, pn_c_asres_authorization_mode: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.PnCAsresAuthorizationModeType, NoneType] = None, evseprocessing: Union[shared.xml_classes.common_messages.v2_g_ci_common_types.ProcessingType, NoneType] = None, service_renegotiation_supported: Union[bool, NoneType] = None, energy_transfer_service_list: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType, NoneType] = None, vaslist: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType, NoneType] = None, service_id: Union[int, NoneType] = None, service_parameter_list: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceParameterListType, NoneType] = None, bpt_dc_cpdres_energy_transfer_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptDcCpdresEnergyTransferMode, NoneType] = None, dc_cpdres_energy_transfer_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.DcCpdresEnergyTransferMode, NoneType] = None, dc_evseprocessing: Union[shared.xml_classes.dc.v2_g_ci_common_types.ProcessingType, NoneType] = None, evsepresent_voltage: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evsestatus: Union[shared.xml_classes.common_messages.v2_g_ci_common_types.EvsestatusType, NoneType] = None, evsepresent_current: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evsepower_limit_achieved: Union[bool, NoneType] = None, evsecurrent_limit_achieved: Union[bool, NoneType] = None, evsevoltage_limit_achieved: Union[bool, NoneType] = None, bpt_dynamic_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptDynamicDcClresControlMode, NoneType] = None, dynamic_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.DynamicDcClresControlMode, NoneType] = None, bpt_scheduled_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptScheduledDcClresControlMode, NoneType] = None, scheduled_dc_clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.ScheduledDcClresControlMode, NoneType] = None, clres_control_mode: Union[shared.xml_classes.dc.v2_g_ci_common_types.ClresControlMode, NoneType] = None)¶
Bases:
shared.session.SessionParameters
- authorization_services: List[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType] = None¶
- bpt_dc_cpdres_energy_transfer_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.BptDcCpdresEnergyTransferMode] = None¶
- bpt_dynamic_dc_clres_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.BptDynamicDcClresControlMode] = None¶
- bpt_scheduled_dc_clres_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.BptScheduledDcClresControlMode] = None¶
- certificate_installation_service: Optional[bool] = None¶
- clres_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_common_types.ClresControlMode] = None¶
- dc_cpdres_energy_transfer_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.DcCpdresEnergyTransferMode] = None¶
- dc_evseprocessing: Optional[shared.xml_classes.dc.v2_g_ci_common_types.ProcessingType] = None¶
- dynamic_dc_clres_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.DynamicDcClresControlMode] = None¶
- eim_asres_authorization_mode: Optional[object] = None¶
- energy_transfer_service_list: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType] = None¶
- evsecurrent_limit_achieved: Optional[bool] = None¶
- evseid: Optional[str] = None¶
- evsepower_limit_achieved: Optional[bool] = None¶
- evsepresent_current: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evsepresent_voltage: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evseprocessing: Optional[shared.xml_classes.common_messages.v2_g_ci_common_types.ProcessingType] = None¶
- evsestatus: Optional[shared.xml_classes.common_messages.v2_g_ci_common_types.EvsestatusType] = None¶
- evsevoltage_limit_achieved: Optional[bool] = None¶
- pn_c_asres_authorization_mode: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.PnCAsresAuthorizationModeType] = None¶
- scheduled_dc_clres_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.ScheduledDcClresControlMode] = None¶
- service_id: Optional[int] = None¶
- service_parameter_list: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceParameterListType] = None¶
- service_renegotiation_supported: Optional[bool] = None¶
- vaslist: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceListType] = None¶
secc.evse_session_handler module¶
- class secc.evse_session_handler.EVSESessionHandler¶
Bases:
shared.session_handler.SessionHandler
This is the class representing the EVSE session handler.
- get_config()¶
Gets the needed configuration to run a SessionHandler.
- Returns
- get_tcp_server_address()¶
Gets a TCP server address from a specified interface set in the configuration file.
- Returns
- start_new_session(controller)¶
Starts a new communication session.
- Parameters
controller – The controller that will handle the data.
- Returns
secc.start_evse module¶
- secc.start_evse.start_evse(controller) None ¶
Starts the EVSE.
- Parameters
controller – The controller that will handle the data.
- Returns
secc.tcp_server module¶
- class secc.tcp_server.TCPServerProtocol(controller)¶
Bases:
asyncio.protocols.Protocol
This is the protocol used by the SECC server to communicate with the EV.
- attach(observer)¶
- connection_lost(exc: Optional[Exception]) None ¶
Called when the connection is lost or closed.
The argument is an exception object or None (the latter meaning a regular EOF is received or the connection was aborted or closed).
- connection_made(transport: asyncio.transports.BaseTransport) None ¶
Called when a connection is made.
The argument is the transport representing the pipe connection. To receive data, wait for data_received() calls. When the connection is closed, connection_lost() is called.
- data_received(data: bytes) None ¶
Called when some data is received.
The argument is a bytes object.
- eof_received() Optional[bool] ¶
Called when the other end calls write_eof() or equivalent.
If this returns a false value (including None), the transport will close itself. If it returns a true value, closing the transport is up to the protocol.
- notify()¶
- process_incoming_message(v2gtp_message: shared.messages.V2GTPMessage)¶
Processes incoming messages.
- Parameters
v2gtp_message – The incoming message.
- Returns
- process_reaction(reaction)¶
Depending on the incoming message, processes the resulting reaction.
- Parameters
reaction – The reaction generated by the message.
- Returns
- property session¶
- secc.tcp_server.get_ssl_context() ssl.SSLContext ¶
Returns an SSL context based on 15118-20 recommendations.
- Returns
ssl.SSLContext – the SSL settings for the TLS connection.
- secc.tcp_server.get_tcp_server(controller, tcp_server_address: str, tcp_server_port: int)¶
Returns the TCP server used in the 15118 communication.
- Parameters
controller – The controller that will handle the data.
tcp_server_address – The server address.
tcp_server_port – The server port.
- Returns
server – the created server
secc.udp_server module¶
- class secc.udp_server.UDPServerProtocol(tcp_server_address, tcp_server_port)¶
Bases:
asyncio.protocols.DatagramProtocol
This is the protocol used by the SECC discovery protocol server.
- connection_lost(exc: Optional[Exception]) None ¶
Called when the connection is lost or closed.
The argument is an exception object or None (the latter meaning a regular EOF is received or the connection was aborted or closed).
- connection_made(transport: asyncio.transports.BaseTransport) None ¶
Called when a connection is made.
The argument is the transport representing the pipe connection. To receive data, wait for data_received() calls. When the connection is closed, connection_lost() is called.
- datagram_received(data: bytes, addr: Tuple[str, int]) None ¶
Called when some datagram is received.
- error_received(exc: Exception) None ¶
Called when a send or receive operation raises an OSError.
(Other than BlockingIOError or InterruptedError.)
- secc.udp_server.get_udp_server(tcp_server_address, tcp_server_port)¶
Returns UDP server used in 15118 communication.
- Parameters
tcp_server_address – The TCP server address.
tcp_server_port – The TCP server port.
- Returns
transport, protocol – the objects associated with the UDP connection.