mirror of https://github.com/Desuuuu/klipper.git
console: Add support for a FLOOD command
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
167a65d826
commit
36dd7e7609
|
@ -14,6 +14,7 @@ help_txt = """
|
||||||
available:
|
available:
|
||||||
PINS : Load pin name aliases (eg, "PINS arduino")
|
PINS : Load pin name aliases (eg, "PINS arduino")
|
||||||
DELAY : Send a command at a clock time (eg, "DELAY 9999 get_uptime")
|
DELAY : Send a command at a clock time (eg, "DELAY 9999 get_uptime")
|
||||||
|
FLOOD : Send a command many times (eg, "FLOOD 22 .01 get_uptime")
|
||||||
SET : Create a local variable (eg, "SET myvar 123.4")
|
SET : Create a local variable (eg, "SET myvar 123.4")
|
||||||
STATS : Report serial statistics
|
STATS : Report serial statistics
|
||||||
LIST : List available mcu commands, local commands, and local variables
|
LIST : List available mcu commands, local commands, and local variables
|
||||||
|
@ -41,8 +42,9 @@ class KeyboardReader:
|
||||||
self.connect_timer = reactor.register_timer(self.connect, reactor.NOW)
|
self.connect_timer = reactor.register_timer(self.connect, reactor.NOW)
|
||||||
self.local_commands = {
|
self.local_commands = {
|
||||||
"PINS": self.command_PINS, "SET": self.command_SET,
|
"PINS": self.command_PINS, "SET": self.command_SET,
|
||||||
"DELAY": self.command_DELAY, "LIST": self.command_LIST,
|
"DELAY": self.command_DELAY, "FLOOD": self.command_FLOOD,
|
||||||
"STATS": self.command_STATS, "HELP": self.command_HELP,
|
"STATS": self.command_STATS, "LIST": self.command_LIST,
|
||||||
|
"HELP": self.command_HELP,
|
||||||
}
|
}
|
||||||
self.eval_globals = {}
|
self.eval_globals = {}
|
||||||
def connect(self, eventtime):
|
def connect(self, eventtime):
|
||||||
|
@ -86,6 +88,25 @@ class KeyboardReader:
|
||||||
self.output("Error: %s" % (str(e),))
|
self.output("Error: %s" % (str(e),))
|
||||||
return
|
return
|
||||||
self.ser.send(msg, minclock=val)
|
self.ser.send(msg, minclock=val)
|
||||||
|
def command_FLOOD(self, parts):
|
||||||
|
try:
|
||||||
|
count = int(parts[1])
|
||||||
|
delay = float(parts[2])
|
||||||
|
except ValueError as e:
|
||||||
|
self.output("Error: %s" % (str(e),))
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
msg = self.ser.msgparser.create_command(' '.join(parts[3:]))
|
||||||
|
except msgproto.error as e:
|
||||||
|
self.output("Error: %s" % (str(e),))
|
||||||
|
return
|
||||||
|
delay_clock = int(delay * self.mcu_freq)
|
||||||
|
msg_clock = int(self.ser.get_clock(self.reactor.monotonic())
|
||||||
|
+ self.mcu_freq * .200)
|
||||||
|
for i in range(count):
|
||||||
|
next_clock = msg_clock + delay_clock
|
||||||
|
self.ser.send(msg, minclock=msg_clock, reqclock=next_clock)
|
||||||
|
msg_clock = next_clock
|
||||||
def command_STATS(self, parts):
|
def command_STATS(self, parts):
|
||||||
self.output(self.ser.stats(self.reactor.monotonic()))
|
self.output(self.ser.stats(self.reactor.monotonic()))
|
||||||
def command_LIST(self, parts):
|
def command_LIST(self, parts):
|
||||||
|
|
Loading…
Reference in New Issue