Source code for tropicsquare.config.gpo

"""GPO configuration (CFG_GPO @ 0x14)"""

from tropicsquare.config.base import BaseConfig
from tropicsquare.config.constants import GPO_FUNC_MASK, GPO_FUNC_POS


[docs] class GpoConfig(BaseConfig): """General Purpose Output configuration register. Controls the function of the GPO pin. Fields: gpo_func: GPO function selection (bits 2-0, 3-bit value) """ @property def gpo_func(self) -> int: """GPO function selection (3-bit value). :returns: Function code (0-7) """ return (self._value >> GPO_FUNC_POS) & GPO_FUNC_MASK @gpo_func.setter def gpo_func(self, value: int) -> None: """Set GPO function. :param value: Function code (0-7) :raises ValueError: If value is out of range """ if not 0 <= value <= 7: raise ValueError("gpo_func must be 0-7, got {}".format(value)) # Clear existing bits and set new value self._value = (self._value & ~(GPO_FUNC_MASK << GPO_FUNC_POS)) | (value << GPO_FUNC_POS)
[docs] def to_dict(self) -> dict: """Export fields as dictionary. :returns: Configuration fields and their values """ return { 'gpo_func': self.gpo_func }
[docs] def __str__(self) -> str: """Human-readable representation.""" return "GpoConfig(gpo_func={})".format(self.gpo_func)