|
|
@@ -1,36 +1,22 @@
|
|
|
-from typing import Any
|
|
|
-
|
|
|
from pypdevs.minimal import AtomicDEVS
|
|
|
from pypdevs.infinity import INFINITY
|
|
|
|
|
|
|
|
|
class Generator(AtomicDEVS):
|
|
|
-
|
|
|
- def __init__(self, name, num_outputs=1, period=None):
|
|
|
+ def __init__(self, name, output=1, period=1, cycles=1):
|
|
|
super(Generator, self).__init__(name=name)
|
|
|
- self.num_outputs = num_outputs
|
|
|
+ self.output = output
|
|
|
self.period = period
|
|
|
- self.state = "active"
|
|
|
+ self.state = cycles
|
|
|
self.o_out = self.addOutPort("o_out")
|
|
|
|
|
|
def intTransition(self):
|
|
|
- if self.state == "active" and self.period is not None:
|
|
|
- self.state = "waiting"
|
|
|
- elif self.state == "waiting":
|
|
|
- self.state = "active"
|
|
|
- else:
|
|
|
- self.state = "passive"
|
|
|
+ return self.state - 1
|
|
|
|
|
|
def timeAdvance(self):
|
|
|
- if self.state == "active":
|
|
|
- return 0
|
|
|
- elif self.state == "waiting":
|
|
|
- return self.period
|
|
|
- else:
|
|
|
- return INFINITY
|
|
|
+ return self.period if self.state > 0 else INFINITY
|
|
|
|
|
|
def outputFnc(self):
|
|
|
- return {self.o_out: list(range(self.num_outputs))}
|
|
|
-
|
|
|
- def extTransition(self, inputs):
|
|
|
- pass
|
|
|
+ if self.state > 0:
|
|
|
+ return {self.o_out: list(range(self.output))}
|
|
|
+ return {}
|