Source code for tropicsquare.config.uap_operations

"""UAP Operation configuration classes

These classes control permissions for various TROPIC01 operations.
"""

from tropicsquare.config.uap_base import UapSingleFieldConfig, UapMultiSlotConfig, UapPermissionField
from tropicsquare.config.constants import (
    UAP_MACANDD_0_31_POS,
    UAP_MACANDD_32_63_POS,
    UAP_MACANDD_64_95_POS,
    UAP_MACANDD_96_127_POS
)


[docs] class PingConfig(UapSingleFieldConfig): """UAP PING configuration (CFG_UA`P_PING @ 0x100). Controls which pairing key slots can execute PING command. Single 8-bit permission field. """
[docs] class RandomValueGetConfig(UapSingleFieldConfig): """UAP Random Value Get configuration (CFG_UAP_RANDOM_VALUE_GET @ 0x120). Controls which pairing key slots can get random values. Single 8-bit permission field. """
[docs] class MacAndDestroyConfig(UapMultiSlotConfig): """UAP MAC and Destroy configuration (CFG_UAP_MAC_AND_DESTROY @ 0x160). Controls access privileges to MAC-and-Destroy partition slots. Has 4 permission fields, each controlling access to a range of MAC-and-Destroy slots. """ @property def macandd0_31(self) -> UapPermissionField: """Permission field for MAC-and-Destroy slots 0-31.""" return self._get_slot_field(UAP_MACANDD_0_31_POS) @macandd0_31.setter def macandd0_31(self, field: UapPermissionField) -> None: self._set_slot_field(UAP_MACANDD_0_31_POS, field) @property def macandd32_63(self) -> UapPermissionField: """Permission field for MAC-and-Destroy slots 32-63.""" return self._get_slot_field(UAP_MACANDD_32_63_POS) @macandd32_63.setter def macandd32_63(self, field: UapPermissionField) -> None: self._set_slot_field(UAP_MACANDD_32_63_POS, field) @property def macandd64_95(self) -> UapPermissionField: """Permission field for MAC-and-Destroy slots 64-95.""" return self._get_slot_field(UAP_MACANDD_64_95_POS) @macandd64_95.setter def macandd64_95(self, field: UapPermissionField) -> None: self._set_slot_field(UAP_MACANDD_64_95_POS, field) @property def macandd96_127(self) -> UapPermissionField: """Permission field for MAC-and-Destroy slots 96-127.""" return self._get_slot_field(UAP_MACANDD_96_127_POS) @macandd96_127.setter def macandd96_127(self, field: UapPermissionField) -> None: self._set_slot_field(UAP_MACANDD_96_127_POS, field)
[docs] def to_dict(self) -> dict: """Export fields as dictionary.""" return { 'macandd0_31': self.macandd0_31.to_dict(), 'macandd32_63': self.macandd32_63.to_dict(), 'macandd64_95': self.macandd64_95.to_dict(), 'macandd96_127': self.macandd96_127.to_dict() }
[docs] def __str__(self) -> str: """Table row with MAC-and-Destroy specific field names.""" s0 = str(self.macandd0_31) s1 = str(self.macandd32_63) s2 = str(self.macandd64_95) s3 = str(self.macandd96_127) return "{:26s} | {} || {} || {} || {} |".format( self.__class__.__name__, s0, s1, s2, s3 )