From 93d06b6015ae2f67b33082d2f935a00653cb881f Mon Sep 17 00:00:00 2001 From: phil <phil@secdev.org> Date: Mon, 20 Mar 2017 13:31:14 +0100 Subject: [PATCH] Added new pipe: TriggeredSwitch --- scapy/scapypipes.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/scapy/scapypipes.py b/scapy/scapypipes.py index fcc1d772..4924b0cb 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) -- GitLab