diff --git a/backend/app.py b/backend/app.py index caa504ec..c798ab79 100644 --- a/backend/app.py +++ b/backend/app.py @@ -5,7 +5,7 @@ from wsgiref.simple_server import WSGIRequestHandler, make_server from bottle import * from serial_manager import SerialManager -from flash import flash_upload +from flash import flash_upload, reset_atmega from filereaders import read_svg, read_dxf @@ -381,6 +381,12 @@ def flash_firmware_handler(firmware_file=FIRMWARE): return ''.join(ret) +@route('/reset_atmega') +def reset_atmega_handler(): + reset_atmega(HARDWARE) + return '1' + + # @route('/gcode/:gcode_line') # def gcode_handler(gcode_line): # if SerialManager.is_connected(): diff --git a/backend/flash.py b/backend/flash.py index be85efd1..c51ad168 100644 --- a/backend/flash.py +++ b/backend/flash.py @@ -117,4 +117,31 @@ def trigger_reset(): return subprocess.call(command, shell=True) - +def reset_atmega(hardware=''): + if hardware == 'beaglebone': + try: + fw = file("/sys/class/gpio/export", "w") + fw.write("%d" % (71)) + fw.close() + except IOError: + pass + fw = file("/sys/class/gpio/gpio71/direction", "w") + fw.write("out") + fw.close() + fw = file("/sys/class/gpio/gpio71/value", "w") + fw.write("0") + fw.flush() + time.sleep(0.2) + fw.write("1") + fw.flush() + fw.close() + elif hardware == 'raspberrypi': + import RPi.GPIO as GPIO + GPIO.setmode(GPIO.BCM) # use chip pin number + pinReset = 2 + GPIO.setup(pinReset, GPIO.OUT) + GPIO.output(pinReset, GPIO.LOW) + time.sleep(0.2) + GPIO.output(pinReset, GPIO.HIGH) + else: + print "ERROR: forced reset only possible on beaglebone and raspberrypi" diff --git a/frontend/app.html b/frontend/app.html index db89e998..c359d064 100644 --- a/frontend/app.html +++ b/frontend/app.html @@ -37,9 +37,9 @@