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

1"""UAP Memory operation configuration classes""" 

2 

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) 

10 

11 

12class RMemDataConfig(UapMultiSlotConfig): 

13 """UAP R-MEM Data base configuration.""" 

14 

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) 

19 

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) 

23 

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) 

28 

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) 

32 

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) 

37 

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) 

41 

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) 

46 

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) 

50 

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 } 

59 

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 ) 

70 

71 

72class RMemDataWriteConfig(RMemDataConfig): 

73 """UAP R-MEM Data Write configuration (CFG_UAP_R_MEM_DATA_WRITE @ 0x110). 

74 

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 """ 

78 

79 

80class RMemDataReadConfig(RMemDataConfig): 

81 """UAP R-MEM Data Read configuration (CFG_UAP_R_MEM_DATA_READ @ 0x114). 

82 

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 """ 

86 

87 

88class RMemDataEraseConfig(RMemDataConfig): 

89 """UAP R-MEM Data Erase configuration (CFG_UAP_R_MEM_DATA_ERASE @ 0x118). 

90 

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 """