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