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
6 changes: 6 additions & 0 deletions xoa_driver/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,9 @@
LinkTrainEncoding,
LinkTrainPresets,
AnLtLogControl,
PreCodingStatus,
GrayCodingStatus,
Endianness
)

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


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

OFF = 0
"""Off"""

ON = 1
"""On"""

AUTO = 2
"""Auto"""


class GrayCodingStatus(IntEnum):
"""Rx/Tx Gray-Coding Status."""

OFF = 0
"""Off"""

ON = 1
"""On"""


class Endianness(IntEnum):
"""Endianness (Big/Little Endian)."""

NORMAL = 0
"""Big Endian"""

REVERTED = 1
"""Little Endian"""

# endregion
191 changes: 191 additions & 0 deletions xoa_driver/internals/commands/pp_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@
PRBSPattern,
PHYSignalStatus,
OnOffDefault,
PreCodingStatus,
GrayCodingStatus,
Endianness
)


Expand Down Expand Up @@ -2088,3 +2091,191 @@ def get(self) -> Token[GetDataAttr]:
"""

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

@register_command
@dataclass
class PP_RXPRECODING:
"""
GET/SET Rx Pre-Coding Configurations.
"""

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

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

class GetDataAttr(ResponseBodyStruct):
status: PreCodingStatus = field(XmpInt())
"""Status Off/On/Auto"""
endianness: Endianness = field(XmpInt())
"""Endianness Normal/Reverted(BigEndian/LittleEndian)) """

class SetDataAttr(RequestBodyStruct):
status: PreCodingStatus = field(XmpInt())
"""Status Off/On/Auto"""
endianness: Endianness = field(XmpInt())
"""Endianness Normal/Reverted(BigEndian/LittleEndian)) """

def get(self) -> Token[GetDataAttr]:
"""Get the Rx Pre-Coding Configurations.

:return: Rx Pre-Coding configurations including status, and endianness type.
:rtype: PP_RXPRECODING.GetDataAttr
"""

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

def set(self, status: PreCodingStatus, endianness: Endianness) -> Token[None]:
"""Set the Rx Pre-coding settings of the PHY.

:param status: The status(Off/On/Auto)
:type status: PreCodingStatus
:param endianness: Endianness type
:type endianness: Endianness
"""

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

@register_command
@dataclass
class PP_TXPRECODING:
"""
GET/SET Tx Pre-Coding Configurations.
"""

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

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

class GetDataAttr(ResponseBodyStruct):
status: PreCodingStatus = field(XmpInt())
"""Status Off/On/Auto"""
endianness: Endianness = field(XmpInt())
"""Endianness Normal/Reverted(BigEndian/LittleEndian)) """

class SetDataAttr(RequestBodyStruct):
status: PreCodingStatus = field(XmpInt())
"""Status Off/On/Auto"""
endianness: Endianness = field(XmpInt())
"""Endianness Normal/Reverted(BigEndian/LittleEndian)) """

def get(self) -> Token[GetDataAttr]:
"""Get the Tx Pre-Coding Configurations.

:return: Tx Pre-Coding configurations including status, and endianness type.
:rtype: PP_TXPRECODING.GetDataAttr
"""

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

def set(self, status: PreCodingStatus, endianness: Endianness) -> Token[None]:
"""Set the Tx Pre-coding settings of the PHY.

:param status: The status(Off/On/Auto)
:type status: PreCodingStatus
:param endianness: Endianness type
:type endianness: Endianness
"""

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

@register_command
@dataclass
class PP_RXGRAYCODING:
"""
GET/SET Rx Gray-Coding Configurations.
"""

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

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

class GetDataAttr(ResponseBodyStruct):
status: GrayCodingStatus = field(XmpInt())
"""Status Off/On"""
endianness: Endianness = field(XmpInt())
"""Endianness Normal/Reverted(BigEndian/LittleEndian)) """

class SetDataAttr(RequestBodyStruct):
status: GrayCodingStatus = field(XmpInt())
"""Status Off/On"""
endianness: Endianness = field(XmpInt())
"""Endianness Normal/Reverted(BigEndian/LittleEndian)) """

def get(self) -> Token[GetDataAttr]:
"""Get the Rx Gray-Coding Configurations.

:return: Rx Gray-Coding configurations including status, and endianness type.
:rtype: PP_RXGRAYCODING.GetDataAttr
"""

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

def set(self, status: GrayCodingStatus, endianness: Endianness) -> Token[None]:
"""Set the Rx Gray-coding settings of the PHY.

:param status: The status(Off/On)
:type status: GrayCodingStatus
:param endianness: Endianness type
:type endianness: Endianness
"""

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

@register_command
@dataclass
class PP_TXGRAYCODING:
"""
GET/SET Tx Gray-Coding Configurations.
"""

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

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

class GetDataAttr(ResponseBodyStruct):
status: GrayCodingStatus = field(XmpInt())
"""Status Off/On/Auto"""
endianness: Endianness = field(XmpInt())
"""Endianness Normal/Reverted(BigEndian/LittleEndian)) """

class SetDataAttr(RequestBodyStruct):
status: GrayCodingStatus = field(XmpInt())
"""Status Off/On/Auto"""
endianness: Endianness = field(XmpInt())
"""Endianness Normal/Reverted(BigEndian/LittleEndian)) """

def get(self) -> Token[GetDataAttr]:
"""Get the Tx Gray-Coding Configurations.

:return: Tx Gray-Coding configurations including status, and endianness type.
:rtype: PP_TXGRAYCODING.GetDataAttr
"""

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

def set(self, status: GrayCodingStatus, endianness: Endianness) -> Token[None]:
"""Set the Tx Gray-coding settings of the PHY.

:param status: The status(Off/On/Auto)
:type status: GrayCodingStatus
:param endianness: Endianness type
:type endianness: Endianness
"""

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