Skip to content
This repository was archived by the owner on Feb 27, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions xoa_driver/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,11 @@
LinkTrainEncoding,
LinkTrainPresets,
AnLtLogControl,
RxEqExtCap,
RxEqExtCapStatus,
PreCodingStatus,
GrayCodingStatus,
Endianness
Endianness,
)

__all__ = (
Expand Down Expand Up @@ -327,7 +329,9 @@
"LinkTrainEncoding",
"LinkTrainPresets",
"AnLtLogControl",
"RxEqExtCap",
"RxEqExtCapStatus",
"PreCodingStatus",
"GrayCodingStatus",
"Endianness"
"Endianness",
)
24 changes: 24 additions & 0 deletions xoa_driver/internals/commands/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -2459,6 +2459,29 @@ class AnLtLogControl(IntEnum):
"""link training algorithm -1 state machine transitions"""


class RxEqExtCap(IntEnum):
"""Rx Equalizer Advanced Capability type."""

CTLE_LOW = 0
"""CTLE low frequency."""

CTLE_HIGH = 1
"""CTLE high frequency."""


class RxEqExtCapStatus(IntEnum):
"""Status for Rx Equalizer Advanced Capability."""

STATUS_AUTO = 0
"""Auto."""

STATUS_MANUAL = 1
"""Manual."""

STATUS_FREEZE = 2
"""Freeze."""


class PreCodingStatus(IntEnum):
"""Rx/Tx Pre-Coding Status."""

Expand Down Expand Up @@ -2491,4 +2514,5 @@ class Endianness(IntEnum):
REVERTED = 1
"""Little Endian"""


# endregion
56 changes: 54 additions & 2 deletions xoa_driver/internals/commands/pp_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,11 @@
PRBSPattern,
PHYSignalStatus,
OnOffDefault,
RxEqExtCap,
RxEqExtCapStatus,
PreCodingStatus,
GrayCodingStatus,
Endianness
Endianness,
)


Expand Down Expand Up @@ -1806,7 +1808,7 @@ def set(self, link_training_on_off: OnOff, precode_on_off: OnOffDefault, graycod
@dataclass
class PP_PHYRXEQ:
"""
RX EQ parameters.
RX EQ parameters (For non Freya Modules).
"""

code: typing.ClassVar[int] = 380
Expand Down Expand Up @@ -1856,6 +1858,56 @@ def set(self, auto: int, ctle: int, reserved: int) -> Token[None]:
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], auto=auto, ctle=ctle, reserved=reserved))


@register_command
@dataclass
class PP_PHYRXEQ_EXT:
"""
GET/SET RX EQ Advanced parameters(Only for Freya Modules).
"""

code: typing.ClassVar[int] = 397
pushed: typing.ClassVar[bool] = True

_connection: 'interfaces.IConnection'
_module: int
_port: int
_serdes_xindex: int
_capability_type: RxEqExtCap

class GetDataAttr(ResponseBodyStruct):
status: RxEqExtCapStatus = field(XmpInt())
"""The status of the capability"""
value: int = field(XmpInt())
"""The value for the capability"""

class SetDataAttr(RequestBodyStruct):
status: RxEqExtCapStatus = field(XmpInt())
"""The status of the capability Auto/Manual/Freeze"""
value: int = field(XmpInt())
"""The value for the capability"""

def get(self) -> Token[GetDataAttr]:
"""Get RX EQ Advanced parameters.

:return: status Auto/Manual/Freeze, value.
:rtype: PP_PHYRXEQ_EXT.GetDataAttr
"""

return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex, self._capability_type]))

def set(self, status: RxEqExtCapStatus, value: int) -> Token[None]:
"""Set RX EQ Advanced parameters.
The type of the capability(RxEqExtCap) should be passed as the second index.

:param status: Auto/Manual/Freeze
:type status: RxEqExtCapStatus
:param value: The value for the capability
:type value: int
"""

return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex, self._capability_type], status=status, value=value))


@register_command
@dataclass
class PP_AUTONEG:
Expand Down