Coverage for tropicsquare / config / uap_memory.py: 76%
38 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-27 21:24 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-27 21:24 +0000
1"""UAP Memory operation configuration classes"""
3from tropicsquare.config.uap_base import UapMultiSlotConfig, UapPermissionField
4from tropicsquare.config.constants import (
5 UAP_UDATA_SLOT_0_127_POS,
6 UAP_UDATA_SLOT_128_255_POS,
7 UAP_UDATA_SLOT_256_383_POS,
8 UAP_UDATA_SLOT_384_511_POS
9)
12class RMemDataConfig(UapMultiSlotConfig):
13 """UAP R-MEM Data base configuration."""
15 @property
16 def udata_slot_0_127(self) -> UapPermissionField:
17 """Permission field for User Data slots 0-127."""
18 return self._get_slot_field(UAP_UDATA_SLOT_0_127_POS)
20 @udata_slot_0_127.setter
21 def udata_slot_0_127(self, field: UapPermissionField) -> None:
22 self._set_slot_field(UAP_UDATA_SLOT_0_127_POS, field)
24 @property
25 def udata_slot_128_255(self) -> UapPermissionField:
26 """Permission field for User Data slots 128-255."""
27 return self._get_slot_field(UAP_UDATA_SLOT_128_255_POS)
29 @udata_slot_128_255.setter
30 def udata_slot_128_255(self, field: UapPermissionField) -> None:
31 self._set_slot_field(UAP_UDATA_SLOT_128_255_POS, field)
33 @property
34 def udata_slot_256_383(self) -> UapPermissionField:
35 """Permission field for User Data slots 256-383."""
36 return self._get_slot_field(UAP_UDATA_SLOT_256_383_POS)
38 @udata_slot_256_383.setter
39 def udata_slot_256_383(self, field: UapPermissionField) -> None:
40 self._set_slot_field(UAP_UDATA_SLOT_256_383_POS, field)
42 @property
43 def udata_slot_384_511(self) -> UapPermissionField:
44 """Permission field for User Data slots 384-511."""
45 return self._get_slot_field(UAP_UDATA_SLOT_384_511_POS)
47 @udata_slot_384_511.setter
48 def udata_slot_384_511(self, field: UapPermissionField) -> None:
49 self._set_slot_field(UAP_UDATA_SLOT_384_511_POS, field)
51 def to_dict(self) -> dict:
52 """Export fields as dictionary."""
53 return {
54 'udata_slot_0_127': self.udata_slot_0_127.to_dict(),
55 'udata_slot_128_255': self.udata_slot_128_255.to_dict(),
56 'udata_slot_256_383': self.udata_slot_256_383.to_dict(),
57 'udata_slot_384_511': self.udata_slot_384_511.to_dict()
58 }
60 def __str__(self) -> str:
61 """Table row with User Data slot specific field names."""
62 s0 = str(self.udata_slot_0_127)
63 s1 = str(self.udata_slot_128_255)
64 s2 = str(self.udata_slot_256_383)
65 s3 = str(self.udata_slot_384_511)
66 return "{:26s} | {} || {} || {} || {} |".format(
67 self.__class__.__name__,
68 s0, s1, s2, s3
69 )
72class RMemDataWriteConfig(RMemDataConfig):
73 """UAP R-MEM Data Write configuration (CFG_UAP_R_MEM_DATA_WRITE @ 0x110).
75 Controls which pairing key slots can write to R-MEM User Data slots.
76 Has 4 permission fields for slot ranges 0-127, 128-255, 256-383, 384-511.
77 """
80class RMemDataReadConfig(RMemDataConfig):
81 """UAP R-MEM Data Read configuration (CFG_UAP_R_MEM_DATA_READ @ 0x114).
83 Controls which pairing key slots can read from R-MEM User Data slots.
84 Has 4 permission fields for slot ranges 0-127, 128-255, 256-383, 384-511.
85 """
88class RMemDataEraseConfig(RMemDataConfig):
89 """UAP R-MEM Data Erase configuration (CFG_UAP_R_MEM_DATA_ERASE @ 0x118).
91 Controls which pairing key slots can erase R-MEM User Data slots.
92 Has 4 permission fields for slot ranges 0-127, 128-255, 256-383, 384-511.
93 """