gcode: Add support for M115 command
Support querying the firmware type and version. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
2e03d84755
commit
860fc3e91d
|
@ -44,7 +44,7 @@ class GCodeParser:
|
||||||
self.fan = self.printer.objects.get('fan')
|
self.fan = self.printer.objects.get('fan')
|
||||||
def build_handlers(self):
|
def build_handlers(self):
|
||||||
handlers = ['G1', 'G4', 'G20', 'G21', 'G28', 'G90', 'G91', 'G92',
|
handlers = ['G1', 'G4', 'G20', 'G21', 'G28', 'G90', 'G91', 'G92',
|
||||||
'M18', 'M82', 'M83', 'M105', 'M110', 'M112', 'M114',
|
'M18', 'M82', 'M83', 'M105', 'M110', 'M112', 'M114', 'M115',
|
||||||
'M206', 'M400',
|
'M206', 'M400',
|
||||||
'HELP', 'QUERY_ENDSTOPS', 'RESTART', 'CLEAR_SHUTDOWN',
|
'HELP', 'QUERY_ENDSTOPS', 'RESTART', 'CLEAR_SHUTDOWN',
|
||||||
'STATUS']
|
'STATUS']
|
||||||
|
@ -303,6 +303,12 @@ class GCodeParser:
|
||||||
self.last_position[0], self.last_position[1],
|
self.last_position[0], self.last_position[1],
|
||||||
self.last_position[2], self.last_position[3],
|
self.last_position[2], self.last_position[3],
|
||||||
kinpos[0], kinpos[1], kinpos[2]))
|
kinpos[0], kinpos[1], kinpos[2]))
|
||||||
|
cmd_M115_when_not_ready = True
|
||||||
|
def cmd_M115(self, params):
|
||||||
|
# Get Firmware Version and Capabilities
|
||||||
|
kw = {"FIRMWARE_NAME": "Klipper"
|
||||||
|
, "FIRMWARE_VERSION": self.printer.software_version}
|
||||||
|
self.ack(" ".join(["%s:%s" % (k, v) for k, v in kw.items()]))
|
||||||
def cmd_M140(self, params):
|
def cmd_M140(self, params):
|
||||||
# Set Bed Temperature
|
# Set Bed Temperature
|
||||||
self.set_temp(self.heater_bed, params)
|
self.set_temp(self.heater_bed, params)
|
||||||
|
|
|
@ -82,8 +82,9 @@ class ConfigLogger():
|
||||||
logging.info(data.strip())
|
logging.info(data.strip())
|
||||||
|
|
||||||
class Printer:
|
class Printer:
|
||||||
def __init__(self, conffile, input_fd, is_fileinput=False):
|
def __init__(self, conffile, input_fd, is_fileinput=False, version="?"):
|
||||||
self.conffile = conffile
|
self.conffile = conffile
|
||||||
|
self.software_version = version
|
||||||
self.reactor = reactor.Reactor()
|
self.reactor = reactor.Reactor()
|
||||||
self.gcode = gcode.GCodeParser(self, input_fd, is_fileinput)
|
self.gcode = gcode.GCodeParser(self, input_fd, is_fileinput)
|
||||||
self.stats_timer = self.reactor.register_timer(self.stats)
|
self.stats_timer = self.reactor.register_timer(self.stats)
|
||||||
|
@ -260,13 +261,14 @@ def main():
|
||||||
else:
|
else:
|
||||||
logging.basicConfig(level=debuglevel)
|
logging.basicConfig(level=debuglevel)
|
||||||
logging.info("Starting Klippy...")
|
logging.info("Starting Klippy...")
|
||||||
|
software_version = util.get_git_version()
|
||||||
if debugoutput is None:
|
if debugoutput is None:
|
||||||
util.report_git_version()
|
logging.info("Git version: %s" % (repr(software_version),))
|
||||||
|
|
||||||
# Start firmware
|
# Start firmware
|
||||||
while 1:
|
while 1:
|
||||||
is_fileinput = debuginput is not None
|
is_fileinput = debuginput is not None
|
||||||
printer = Printer(conffile, input_fd, is_fileinput)
|
printer = Printer(conffile, input_fd, is_fileinput, software_version)
|
||||||
if debugoutput:
|
if debugoutput:
|
||||||
proto_dict = read_dictionary(options.read_dictionary)
|
proto_dict = read_dictionary(options.read_dictionary)
|
||||||
printer.set_fileoutput(debugoutput, proto_dict)
|
printer.set_fileoutput(debugoutput, proto_dict)
|
||||||
|
|
|
@ -36,11 +36,11 @@ def create_pty(ptyname):
|
||||||
termios.tcsetattr(mfd, termios.TCSADRAIN, old)
|
termios.tcsetattr(mfd, termios.TCSADRAIN, old)
|
||||||
return mfd
|
return mfd
|
||||||
|
|
||||||
def report_git_version():
|
def get_git_version():
|
||||||
# Obtain version info from "git" program
|
# Obtain version info from "git" program
|
||||||
if not os.path.exists('.git'):
|
if not os.path.exists('.git'):
|
||||||
logging.debug("No '.git' file/directory found")
|
logging.debug("No '.git' file/directory found")
|
||||||
return
|
return "?"
|
||||||
prog = "git describe --tags --long --dirty"
|
prog = "git describe --tags --long --dirty"
|
||||||
try:
|
try:
|
||||||
process = subprocess.Popen(shlex.split(prog), stdout=subprocess.PIPE)
|
process = subprocess.Popen(shlex.split(prog), stdout=subprocess.PIPE)
|
||||||
|
@ -48,6 +48,5 @@ def report_git_version():
|
||||||
retcode = process.poll()
|
retcode = process.poll()
|
||||||
except OSError:
|
except OSError:
|
||||||
logging.debug("Exception on run: %s" % (traceback.format_exc(),))
|
logging.debug("Exception on run: %s" % (traceback.format_exc(),))
|
||||||
return
|
return "?"
|
||||||
ver = output.strip()
|
return output.strip()
|
||||||
logging.info("Git version: %s" % (repr(ver),))
|
|
||||||
|
|
Loading…
Reference in New Issue