PlatSim_Genova/PlatformSimulator/bin/proxypluginutils.py
2026-01-30 16:38:33 +01:00

32 lines
1.5 KiB
Python

class AutoIncrement(object):
def __init__(self,plugin,msg,field):
self.m,self.f,self.obj_plugin = msg,field,plugin
self.enabled = True
self.handled = self.obj_plugin.setMessageFieldReserved(self.m,self.f,self.enabled)
if self.handled is False:
#raise ValueError("Message or Field not found")
print("AutoIncrement:: Warning:Message or Field not found")
else:
self.range_value = self.obj_plugin.getMessageFieldRange(self.m,self.f)
period = self.obj_plugin.getMessageUsPeriodTime(self.m)
self.counter = 0 if period is None else int(period / plugin.us_busclock)
self.cur_counter = self.counter
self.val = self.obj_plugin.getMessageFieldValue(self.m,self.f)
def onClock(self):
if self.enabled is False or self.handled is False: return False
if self.cur_counter == 0:
self.cur_counter = self.counter
self.val = self.obj_plugin.getMessageFieldValue(self.m,self.f)
self.val = self.range_value[0] if self.val == self.range_value[1] else self.val + 1
self.obj_plugin.assignMessageFieldValue(self.m,self.f,self.val)
self.obj_plugin.commitSingleMessageField(self.m,self.f)
return True
else:
self.cur_counter = self.cur_counter -1
return False
def setEnable(self,flag):
self.enabled = flag
self.obj_plugin.setMessageFieldReserved(self.m,self.f,self.enabled)