32 lines
1.5 KiB
Python
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)
|