1.1.0版本

This commit is contained in:
xinzhu.yin
2026-04-16 16:51:05 +08:00
commit c157e774e5
333 changed files with 70759 additions and 0 deletions

View File

@@ -0,0 +1,171 @@
import warnings
from UniTAP.libs.lib_tsi.tsi_io import PortIO
from .arc_rx import ArcRx
from .tmds_rx import TmdsRx
from .tmds_tx import TmdsTx
from .status_rx import StatusRx, HdmiModeRx
from .status_tx import StatusTx, HdmiModeTx
from .capabilities import HdmiCapabilities
from .frl_control_tx import FrlControlTx
from .frl_caps_rx import FrlControlRx
from UniTAP.libs.lib_tsi.tsi_types import TSI_HDTX_CAPABILITY_R, TSI_HDRX_CAPABILITY_R
from typing import Optional
class HdmiLinkTx:
"""
Main class describes HDMI link on Source (TX - transmitter) side. Contains following objects for working with link:
- TMDS `tmds`.
- FRL `frl`.
- Status `status`.
"""
def __init__(self, port_io: PortIO):
self.__io = port_io
self.__tmds = TmdsTx(self.__io)
self.__status = StatusTx(self.__io)
self.__frl = FrlControlTx(self.__io)
self.__caps = HdmiCapabilities(TSI_HDTX_CAPABILITY_R, self.__io)
@property
def tmds(self) -> Optional[TmdsTx]:
"""
Returns object of class `TmdsTx` for working with TMDS.
None if TMDS does not support on the device.
Returns:
object of `TmdsTx`|None type
"""
if self.__status.hdmi_mode == HdmiModeTx.HDMI_2_1:
warnings.warn("Current device mode is HDMI 2.1, please, use FRL controls or change HDMI mode.")
return None
if not self.__caps.support_tmds:
warnings.warn("Current device does not support TMDS.")
return None
return self.__tmds
@property
def frl(self) -> Optional[FrlControlTx]:
"""
Returns object of class `FrlControlTx` for working with FRL.
None if FRL does not support on the device.
Returns:
object of `FrlControlTx`|None type
"""
if self.__status.hdmi_mode != HdmiModeTx.HDMI_2_1:
warnings.warn("Current device mode is not HDMI 2.1, please, use TMDS controls or change HDMI mode.")
return None
if not self.__caps.support_frl:
warnings.warn("Current device does not support FRl.")
return None
return self.__frl
@property
def status(self) -> StatusTx:
"""
Returns object of class `StatusTx` for working with link status.
Returns:
object of `StatusTx` type
"""
return self.__status
def __str__(self):
__str = f"Status:\n{self.status.__str__()}\n"
if self.__status.hdmi_mode == HdmiModeTx.HDMI_2_1 and self.__caps.support_frl:
__str += f"FRL:\n{self.frl.__str__()}\n"
if self.__status.hdmi_mode != HdmiModeTx.HDMI_2_1 and self.__caps.support_tmds:
__str += f"TMDS:\n{self.tmds.__str__()}\n"
return __str
class HdmiLinkRx:
"""
Main class describes HDMI link on Sink (RX - receiver) side. Contains following objects for working with link:
- TMDS `tmds`.
- FRL `frl`.
- ARC `arc`.
- Status `status`.
"""
def __init__(self, port_io: PortIO):
self.__io = port_io
self.__tmds = TmdsRx(self.__io)
self.__status = StatusRx(self.__io)
self.__frl = FrlControlRx(self.__io)
self.__arc = ArcRx(self.__io)
self.__caps = HdmiCapabilities(TSI_HDRX_CAPABILITY_R, self.__io)
@property
def tmds(self) -> Optional[TmdsRx]:
"""
Returns object of class `TmdsRx` for working with TMDS.
None if TMDS does not support on the device.
Returns:
object of `TmdsRx`|None type
"""
if self.__status.hdmi_mode == HdmiModeTx.HDMI_2_1:
warnings.warn("Current device mode is HDMI 2.1, please, use FRL controls or change HDMI mode.")
return None
if not self.__caps.support_tmds:
warnings.warn("Current device does not support TMDS.")
return None
return self.__tmds
@property
def frl(self) -> Optional[FrlControlRx]:
"""
Returns object of class `FrlControlRx` for working with FRL.
None if FRL does not support on the device.
Returns:
object of `FrlControlRx`|None type
"""
if self.__status.hdmi_mode != HdmiModeRx.HDMI_2_1:
warnings.warn("Current device mode is not HDMI 2.1, please, use TMDS controls or change HDMI mode.")
return None
if not self.__caps.support_frl:
warnings.warn("Current device does not support FRl.")
return None
return self.__frl
@property
def arc(self) -> Optional[ArcRx]:
"""
Returns object of class `ArcRx` for working with ARC.
None if ARC does not support on the device.
Returns:
object of `ArcRx`|None type
"""
if not self.__caps.support_arc:
warnings.warn("Current device does not support ARC.")
return None
return self.__arc
@property
def status(self) -> StatusRx:
"""
Returns object of class `StatusRx` for working with link status.
Returns:
object of `StatusRx` type
"""
return self.__status
def __str__(self):
__str = f"Status:\n{self.status.__str__()}\n"
if self.__status.hdmi_mode == HdmiModeTx.HDMI_2_1 and self.__caps.support_frl:
__str += f"FRL:\n{self.frl.__str__()}\n"
if self.__status.hdmi_mode != HdmiModeTx.HDMI_2_1 and self.__caps.support_tmds:
__str += f"TMDS:\n{self.tmds.__str__()}\n"
if self.__caps.support_arc:
__str += f"ARC:\n{self.arc.__str__()}\n"
__str += f"Stream info:\n{self.status.stream(0).__str__()}\n"
return __str