259 lines
7.7 KiB
Python
259 lines
7.7 KiB
Python
|
|
from UniTAP.dev.ports import DPRX5xx, DPTX5xx, PDC500
|
||
|
|
from .modules import MemoryManager, Capturer, DUTTests
|
||
|
|
from UniTAP.libs.lib_tsi.tsi_io import DeviceIO, PortProtocol
|
||
|
|
|
||
|
|
|
||
|
|
class UCD500:
|
||
|
|
"""
|
||
|
|
Class `UCD500` describes of device UCD-500. Device has one possible role:
|
||
|
|
- 'DisplayPort Source and Sink' `DPSourceDPSink`.
|
||
|
|
- 'DisplayPort Source and USB-C, DP Alt Mode Sink' `DPSourceUSBCSink`.
|
||
|
|
- 'DisplayPort Sink and USB-C, DP Alt Mode Source' `USBCSourceDPSink`.
|
||
|
|
- 'USB-C, DP Alt Mode Source and Sink' `USBCSourceUSBCSink`.
|
||
|
|
"""
|
||
|
|
class DPSourceDPSink:
|
||
|
|
"""
|
||
|
|
Class `DPSourceDPSink` contains information of available functionality modules for role DP Sink
|
||
|
|
(RX - receiver) and DP Source (TX - transmitter) roles:
|
||
|
|
- `DPRX5xx`.
|
||
|
|
- `DPTX5xx`.
|
||
|
|
- `DUTTests`.
|
||
|
|
"""
|
||
|
|
def __init__(self, dev_io: DeviceIO, memory_manager: MemoryManager, capturer: Capturer):
|
||
|
|
self.__dprx = DPRX5xx(dev_io.create_port_io(0, PortProtocol.DisplayPort), memory_manager, capturer)
|
||
|
|
self.__dptx = DPTX5xx(dev_io.create_port_io(1, PortProtocol.DisplayPort), memory_manager, capturer)
|
||
|
|
self.__dut_tests = DUTTests(dev_io)
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dprx(self) -> DPRX5xx:
|
||
|
|
"""
|
||
|
|
Returns DP Sink (RX - receiver) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DPRX5xx type.
|
||
|
|
"""
|
||
|
|
return self.__dprx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dptx(self) -> DPTX5xx:
|
||
|
|
"""
|
||
|
|
Returns DP Source (TX - transmitter) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DPTX5xx type.
|
||
|
|
"""
|
||
|
|
return self.__dptx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dut_tests(self) -> DUTTests:
|
||
|
|
"""
|
||
|
|
Returns DUT Test module.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DUTTests type.
|
||
|
|
"""
|
||
|
|
return self.__dut_tests
|
||
|
|
|
||
|
|
@property
|
||
|
|
def name(self) -> str:
|
||
|
|
"""
|
||
|
|
Returns name of role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of str type.
|
||
|
|
"""
|
||
|
|
return list(UCD500.ROLE_DICT.keys())[list(UCD500.ROLE_DICT.values()).index(type(self))]
|
||
|
|
|
||
|
|
class DPSourceUSBCSink:
|
||
|
|
def __init__(self, dev_io: DeviceIO, memory_manager: MemoryManager, capturer: Capturer):
|
||
|
|
self.__port_rx = dev_io.create_port_io(0, PortProtocol.DisplayPortThrowUSBC)
|
||
|
|
self.__dptx = DPTX5xx(dev_io.create_port_io(1, PortProtocol.DisplayPort), memory_manager, capturer)
|
||
|
|
self.__dprx = DPRX5xx(self.__port_rx, memory_manager, capturer)
|
||
|
|
self.__pdcrx = PDC500(self.__port_rx)
|
||
|
|
self.__dut_tests = DUTTests(dev_io)
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dprx(self) -> DPRX5xx:
|
||
|
|
"""
|
||
|
|
Returns DP Sink (RX - receiver) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DPRX5xx type.
|
||
|
|
"""
|
||
|
|
return self.__dprx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dptx(self) -> DPTX5xx:
|
||
|
|
"""
|
||
|
|
Returns DP Source (TX - transmitter) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DPTX5xx type.
|
||
|
|
"""
|
||
|
|
return self.__dptx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def pdcrx(self) -> PDC500:
|
||
|
|
"""
|
||
|
|
Returns PDC Sink (RX - receiver) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of `PDC500` type.
|
||
|
|
"""
|
||
|
|
return self.__pdcrx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dut_tests(self) -> DUTTests:
|
||
|
|
"""
|
||
|
|
Returns DUT Test module.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DUTTests type.
|
||
|
|
"""
|
||
|
|
return self.__dut_tests
|
||
|
|
|
||
|
|
@property
|
||
|
|
def name(self) -> str:
|
||
|
|
"""
|
||
|
|
Returns name of role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of str type.
|
||
|
|
"""
|
||
|
|
return list(UCD500.ROLE_DICT.keys())[list(UCD500.ROLE_DICT.values()).index(type(self))]
|
||
|
|
|
||
|
|
class USBCSourceDPSink:
|
||
|
|
def __init__(self, dev_io: DeviceIO, memory_manager: MemoryManager, capturer: Capturer):
|
||
|
|
self.__port_tx = dev_io.create_port_io(1, PortProtocol.DisplayPortThrowUSBC)
|
||
|
|
self.__dptx = DPTX5xx(self.__port_tx, memory_manager, capturer)
|
||
|
|
self.__dprx = DPRX5xx(dev_io.create_port_io(0, PortProtocol.DisplayPort), memory_manager, capturer)
|
||
|
|
self.__pdctx = PDC500(self.__port_tx)
|
||
|
|
self.__dut_tests = DUTTests(dev_io)
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dprx(self) -> DPRX5xx:
|
||
|
|
"""
|
||
|
|
Returns DP Sink (RX - receiver) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DPRX5xx type.
|
||
|
|
"""
|
||
|
|
return self.__dprx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dptx(self) -> DPTX5xx:
|
||
|
|
"""
|
||
|
|
Returns DP Source (TX - transmitter) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DPTX5xx type.
|
||
|
|
"""
|
||
|
|
return self.__dptx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def pdctx(self) -> PDC500:
|
||
|
|
"""
|
||
|
|
Returns PDC source (TX - transmitter) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of `PDC500` type.
|
||
|
|
"""
|
||
|
|
return self.__pdctx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dut_tests(self) -> DUTTests:
|
||
|
|
"""
|
||
|
|
Returns DUT Test module.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DUTTests type.
|
||
|
|
"""
|
||
|
|
return self.__dut_tests
|
||
|
|
|
||
|
|
@property
|
||
|
|
def name(self) -> str:
|
||
|
|
"""
|
||
|
|
Returns name of role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of str type.
|
||
|
|
"""
|
||
|
|
return list(UCD500.ROLE_DICT.keys())[list(UCD500.ROLE_DICT.values()).index(type(self))]
|
||
|
|
|
||
|
|
class USBCSourceUSBCSink:
|
||
|
|
def __init__(self, dev_io: DeviceIO, memory_manager: MemoryManager, capturer: Capturer):
|
||
|
|
self.__port_rx = dev_io.create_port_io(0, PortProtocol.DisplayPortThrowUSBC)
|
||
|
|
self.__port_tx = dev_io.create_port_io(1, PortProtocol.DisplayPortThrowUSBC)
|
||
|
|
self.__dprx = DPRX5xx(self.__port_rx, memory_manager, capturer)
|
||
|
|
self.__dptx = DPTX5xx(self.__port_tx, memory_manager, capturer)
|
||
|
|
self.__pdcrx = PDC500(self.__port_rx)
|
||
|
|
self.__pdctx = PDC500(self.__port_tx)
|
||
|
|
self.__dut_tests = DUTTests(dev_io)
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dprx(self) -> DPRX5xx:
|
||
|
|
"""
|
||
|
|
Returns DP Sink (RX - receiver) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DPRX5xx type.
|
||
|
|
"""
|
||
|
|
return self.__dprx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dptx(self) -> DPTX5xx:
|
||
|
|
"""
|
||
|
|
Returns DP Source (TX - transmitter) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DPTX5xx type.
|
||
|
|
"""
|
||
|
|
return self.__dptx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def pdcrx(self) -> PDC500:
|
||
|
|
"""
|
||
|
|
Returns PDC Sink (RX - receiver) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of `PDC500` type.
|
||
|
|
"""
|
||
|
|
return self.__pdcrx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def pdctx(self) -> PDC500:
|
||
|
|
"""
|
||
|
|
Returns PDC source (TX - transmitter) role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of `PDC500` type.
|
||
|
|
"""
|
||
|
|
return self.__pdctx
|
||
|
|
|
||
|
|
@property
|
||
|
|
def dut_tests(self) -> DUTTests:
|
||
|
|
"""
|
||
|
|
Returns DUT Test module.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of DUTTests type.
|
||
|
|
"""
|
||
|
|
return self.__dut_tests
|
||
|
|
|
||
|
|
@property
|
||
|
|
def name(self) -> str:
|
||
|
|
"""
|
||
|
|
Returns name of role.
|
||
|
|
|
||
|
|
Returns:
|
||
|
|
object of str type.
|
||
|
|
"""
|
||
|
|
return list(UCD500.ROLE_DICT.keys())[list(UCD500.ROLE_DICT.values()).index(type(self))]
|
||
|
|
|
||
|
|
ROLE_DICT = {
|
||
|
|
"DisplayPort Source and Sink": DPSourceDPSink,
|
||
|
|
"DisplayPort Source and USB-C, DP Alt Mode Sink": DPSourceUSBCSink,
|
||
|
|
"DisplayPort Sink and USB-C, DP Alt Mode Source": USBCSourceDPSink,
|
||
|
|
"USB-C, DP Alt Mode Source and Sink": USBCSourceUSBCSink
|
||
|
|
}
|