90 lines
2.7 KiB
Python
90 lines
2.7 KiB
Python
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
|