import isystem.connect as ic
winidea_id = ''
def test_readWriteSFR():
connMgr = ic.ConnectionMgr()
connMgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
dataCtrl2 = ic.CDataController2(connMgr)
print("Determining SFR handle (first SFR register)...")
cpuSfrs = dataCtrl2.getCPUSFRs(ic.IConnectEclipse.gcsSFRs)
try:
sfrs = cpuSfrs.SFRs()
sfrGroup = sfrs.at(0)
sfrsInGroup = sfrGroup.SFRs()
sfr = sfrsInGroup.at(0)
handle = sfr.Handle()
sType = ic.SType()
sType.m_byType = ic.SType.tUnsigned
sType.m_byBitSize = 32
print(f"Reading '{sfr.Name()}'...")
sfrData = dataCtrl2.readSFR(handle, sType)
assert sfrData.isError() is False
value = sfrData.getInt()
print(f"\tValue: {value}")
print(f"\tBit size: {sfrData.getBitSize()}")
print(f"Writing value '42' to {sfr.Name()} with read-back option...")
cVal = ic.CValueType(sType, 42)
val = sfrData = dataCtrl2.writeSFR(ic.IConnectEclipse.svWriteThenRead,
handle,
cVal)
assert val.isError() is False
print(f"\tRead-back value: {val.getResult()}")
print(f"Revert back to original value: {value}")
cVal = ic.CValueType(sType, value)
dataCtrl2.writeSFR(0, handle, cVal)
finally:
dataCtrl2.release(cpuSfrs)
if __name__ == "__main__":
test_readWriteSFR()