generator.py 963 B

12345678910111213141516171819202122232425262728293031323334353637
  1. from typing import Any
  2. from pypdevs.DEVS import AtomicDEVS
  3. from pypdevs.infinity import INFINITY
  4. class Generator(AtomicDEVS):
  5. def __init__(self, name, num_outputs=1, period=None):
  6. super(Generator, self).__init__(name=name)
  7. self.num_outputs = num_outputs
  8. self.period = period
  9. self.state = "active"
  10. self.o_out = self.addOutPort("o_out")
  11. def intTransition(self):
  12. if self.state == "active" and self.period is not None:
  13. self.state = "waiting"
  14. elif self.state == "waiting":
  15. self.state = "active"
  16. else:
  17. self.state = "passive"
  18. def timeAdvance(self):
  19. if self.state == "active":
  20. return 0
  21. elif self.state == "waiting":
  22. return self.period
  23. else:
  24. return INFINITY
  25. def outputFnc(self):
  26. return {self.o_out: list(range(self.num_outputs))}
  27. def extTransition(self, inputs):
  28. pass