class libAddress(tfLibClass):
"""
@class libAddress
@brief Pack some common APIs for Pba/Lba
"""
def __init__(self, testcase):
"""
@fn __init__
@brief Initialization of the commands class. Sets class instance variables.
@retval This method returns no values.
@exception This method raises no exceptions.
"""
super(libAddress, self).__init__(testcase)
self.storPhyInfo = self.testcase.vs.getStoragePhyInfo()
self.rgPageCntPerRgBlk = self.storPhyInfo.numPagesInBlock
def _getPbaStr(self):
class pbaStr(ctypes.LittleEndianStructure):
_fields_ = [
("unit", ctypes.c_uint32, self.cfgAddr.pbaBitsCountOfUnit),
("die", ctypes.c_uint32, self.cfgAddr.pbaBitsCountOfDie),
("rgRow", ctypes.c_uint32, self.cfgAddr.pbaBitsCountOfRgRow),
("rg", ctypes.c_uint32, self.cfgAddr.pbaBitsCountOfRg),
#no revd bit("rsvd", ctypes.c_uint32, self.cfgAddr.pbaBitsCountOfRsvd),
#RgBlk & RgPage add here only for parsing RgRow,not normal Pba struct
# ("rgPage", ctypes.c_uint32, self.cfgAddr.pbaBitsCountOfRgPage),
# ("rgBlk", ctypes.c_uint32, self.cfgAddr.pbaBitsCountOfRgBlk),
]
@property
def rgPage(self):
return self.rgPage
@rgPage.setter
def rgPage(self, rgPageVal):
rgBlkOldVal = self.rgRow // self.rgPageCntPerRgBlk
rgRawVal = rgBlkOldVal * self.rgPageCntPerRgBlk + rgPageVal
self.rgRow = rgRawVal
return type('PBAStrCls', (pbaStr,), {})
直接调用self.rgPageCntPerRgBlk 会报AttributeError: 'PBAStrCls' object has no attribute 'rgPageCntPerRgBlk',如何在以上rgPage的函数中调用self.rgPageCntPerRgBlk