@startuml

header
green lines mean: at least stub functionality is working
endheader

package "pyPLC" {
	package "pyPlcIPv6" {
		[miniIPv6]
		[pyPlcUdp]
		[pyPlcSDP]
		[pyPlcTcpExiSniff]
	}

	package "pyPlcHomeplug" {
		[dispatcher]
		[SLAC]
	}
	
	[fsmEvse]
	[fsmPev]

	package "pyPlcTcpSocket" {
		[pyPlcTcpServerSocket]
		[pyPlcTcpClientSocket]
	}
	
}

[ControlPilotLine]
[HomeplugAdaptor]
[pcap DLL] as pcap
[wireshark]
[/FlUxIuS/V2Gdecoder or /Martin-P/OpenV2G] as dec

package "WindowsOS or Linux" {
  [OS_Ethernet]
  [OS_IPv6]
  [OS_TCP]
  [OS_ICMP]
}

[ControlPilotLine] <-[#green]up-> [HomeplugAdaptor]
[HomeplugAdaptor] <-[#green]up-> [OS_Ethernet]
[OS_Ethernet] <-[#green]up-> [pcap]
[OS_Ethernet] <-[#green]up-> [OS_IPv6]
[OS_Ethernet] <-[#green]up-> [OS_ICMP]
[OS_IPv6] <-[#green]up-> [OS_TCP]

[pcap] <-[#green]up-> [pcap-ct]
[pcap] -[#green]up-> [wireshark]
[pcap-ct] <-[#green]up-> [dispatcher]
[dispatcher] <-[#green]up-> [SLAC]
[dispatcher] <-[#green]up-> [miniIPv6]
[miniIPv6] <-[#green]up-> [pyPlcUdp]
[miniIPv6] -up-> [pyPlcTcpExiSniff]
[pyPlcUdp] <-[#green]up-> [pyPlcSDP]
[OS_TCP] <-[#green]up-> [pyPlcTcpServerSocket]
[OS_TCP] <-up-> [pyPlcTcpClientSocket]
[pyPlcTcpServerSocket] <-[#green]up-> [fsmEvse]
[pyPlcTcpClientSocket] <-up-> [fsmPev]
[fsmEvse] <-r-> [dec]
[pyPlcTcpExiSniff] -r-> [dec]
@enduml