diff --git a/scapy/scapypipes.py b/scapy/scapypipes.py index fcc1d772a89776a669ccc55dda541650007c307e..4924b0cbfa24964dbedaf468f111971aa633fe4e 100644 --- a/scapy/scapypipes.py +++ b/scapy/scapypipes.py @@ -294,3 +294,24 @@ class TriggeredQueueingValve(Drain): self._send(msg) else: self._high_send(msg) + +class TriggeredSwitch(Drain): + """Let messages alternatively high or low, changing on trigger + +------^------+ + >>-|-\ | /-|->> + | [up/down] | + >-|-/ | \-|-> + +------^------+ +""" + def __init__(self, start_state=True, name=None): + Drain.__init__(self, name=name) + self.low = start_state + def push(self, msg): + if self.low: + self._send(msg) + else: + self._high_send(msg) + high_push = push + def on_trigger(self, msg): + self.low ^= True + self._trigger(msg)