Files
pqAutomationApp/UniTAP/dev/ports/dprx4xx.py

90 lines
2.7 KiB
Python
Raw Normal View History

2026-04-16 16:51:05 +08:00
from .dprx import *
from .modules.fec import FecRx
from .modules.capturer.bulk.bulk_capturer import BulkCapturer
from .modules.edid.edid import DisplayIdSink
from .modules.panel_replay import SinkPanelReplay, SinkPanelSelfRefresh
from typing import Optional
class DPRX4xx(DPRX):
"""
Main class of `DPRX4xx` object.
Inherited from class `DPRX`.
Class describes capabilities of 400th (4XX) series of DP and USB-C devices in Sink (RX - receiver) role.
Attributes:
__fec (FecTx): object of `FecTx`.
__bulk_capturer (BulkCapturer): object of `BulkCapturer`
__display_id (DisplayIdSink): object of `DisplayIdSink`
__panel_replay (SinkPanelReplay): object of `SinkPanelReplay`
__psr (SinkPanelSelfRefresh): object of `SinkPanelSelfRefresh`
"""
def __init__(self, port_io: PortIO, memory_manager: MemoryManager, capturer: Capturer):
super().__init__(port_io, memory_manager, capturer)
hw_caps = port_io.get(TSI_DPRX_HW_CAPS_R, DPRXHWCaps)[1]
self.__fec = FecRx(port_io, self.dpcd)
self.__bulk_capturer = BulkCapturer(capturer, memory_manager)
self.__display_id = DisplayIdSink(port_io, hw_caps.mst_stream_count)
self.__panel_replay = SinkPanelReplay(port_io) if hw_caps.pr != 0 else None
self.__psr = SinkPanelSelfRefresh(port_io) if hw_caps.psr != 0 else None
@property
def fec(self) -> FecRx:
"""
Should be used to control FEC functionality on Sink (RX - receiver) side.
Returns:
object of `FecRx` type.
"""
return self.__fec
@property
def bulk_capturer(self) -> BulkCapturer:
"""
Should be used to control Bulk capturer functionality on Sink (RX - receiver) side.
Returns:
object of `BulkCapturer` type.
"""
return self.__bulk_capturer
@property
def display_id(self) -> DisplayIdSink:
"""
Should be used to control DisplayID functionality on Sink (RX - receiver) side.
Returns:
object of `DisplayIdSink` type.
"""
return self.__display_id
@property
def panel_replay(self) -> Optional[SinkPanelReplay]:
"""
Should be used to control Panel Replay on Sink (RX - receiver) side.
Returns:
object of `SinkPanelReplay` type.
"""
return self.__panel_replay
@property
def panel_self_refresh(self) -> Optional[SinkPanelSelfRefresh]:
"""
Should be used to control Panel Self Refresh on Sink (RX - receiver) side.
Returns:
object of `SinkPanelSelfRefresh` type.
"""
return self.__psr