Add System Reset Command

* Add sys reset to USBDBG and IDE
This commit is contained in:
iabdalkader 2014-09-25 03:37:00 +02:00
parent 6c7ad99152
commit 8467c67f06
5 changed files with 37 additions and 14 deletions

View File

@ -12,6 +12,7 @@
#include "framebuffer.h"
#include "ff.h"
#include "py/py_file.h"
#include "core_cm4.h"
#include "usbdbg.h"
#define USB_TX_BUF_SIZE (64)
@ -185,6 +186,10 @@ void usbdbg_control(void *buffer, uint8_t request, uint16_t length)
break;
}
case USBDBG_SYS_RESET:
NVIC_SystemReset();
break;
default: /* error */
cmd = USBDBG_NONE;
break;

View File

@ -21,6 +21,7 @@ enum usbdbg_cmd {
USBDBG_DESCRIPTOR_SAVE,
USBDBG_ATTR_READ,
USBDBG_ATTR_WRITE,
USBDBG_SYS_RESET,
};
void usbdbg_init();
int usbdbg_script_ready();

View File

@ -452,6 +452,21 @@
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkToolButton" id="reset_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_action_appearance">False</property>
<property name="label" translatable="yes">toolbutton5</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-quit</property>
<signal name="clicked" handler="on_reset_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkSeparatorToolItem" id="separator1">
<property name="visible">True</property>
@ -523,20 +538,6 @@
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkToolButton" id="toolbutton6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_action_appearance">False</property>
<property name="label" translatable="yes">toolbutton5</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-apply</property>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkSeparatorToolItem" id="separator3">
<property name="visible">True</property>

View File

@ -88,6 +88,7 @@ class OMVGtk:
signals = {
"on_top_window_destroy" : self.quit,
"on_connect_clicked" : self.connect_clicked,
"on_reset_clicked" : self.reset_clicked,
"on_execute_clicked" : self.execute_clicked,
"on_stop_clicked" : self.stop_clicked,
"on_motion_notify" : self.motion_notify,
@ -108,6 +109,7 @@ class OMVGtk:
self.connected = False
self.builder.get_object('connect_button').set_sensitive(True)
self.builder.get_object('reset_button').set_sensitive(False)
self.builder.get_object('exec_button').set_sensitive(False)
self.builder.get_object('stop_button').set_sensitive(False)
self.builder.get_object('zoomin_button').set_sensitive(False)
@ -147,6 +149,7 @@ class OMVGtk:
self.connected = True
self.builder.get_object('connect_button').set_sensitive(False)
self.builder.get_object('reset_button').set_sensitive(True)
self.builder.get_object('exec_button').set_sensitive(True)
self.builder.get_object('stop_button').set_sensitive(True)
self.builder.get_object('zoomin_button').set_sensitive(True)
@ -176,6 +179,7 @@ class OMVGtk:
self.connected = False
self.builder.get_object('connect_button').set_sensitive(True)
self.builder.get_object('reset_button').set_sensitive(False)
self.builder.get_object('exec_button').set_sensitive(False)
self.builder.get_object('stop_button').set_sensitive(False)
self.builder.get_object('zoomin_button').set_sensitive(False)
@ -187,6 +191,10 @@ class OMVGtk:
def connect_clicked(self, widget):
self.connect()
def reset_clicked(self, widget):
if (self.connected):
openmv.reset()
def execute_clicked(self, widget):
buf = self.buffer.get_text(self.buffer.get_start_iter(), self.buffer.get_end_iter())
# interrupt any running code

View File

@ -33,6 +33,7 @@ __USBDBG_TEMPLATE_SAVE=8
__USBDBG_DESCRIPTOR_SAVE=9
__USBDBG_ATTR_READ=10
__USBDBG_ATTR_WRITE=11
__USBDBG_SYS_RESET=12
ATTR_CONTRAST=0
ATTR_BRIGHTNESS=1
@ -152,6 +153,13 @@ def set_attr(attr, value):
def get_attr(attr):
return 0
def reset():
try:
# This will timeout.
__dev.ctrl_transfer(0x41, __USBDBG_SYS_RESET, 0, __INTERFACE, None, __TIMEOUT)
except:
pass
if __name__ == '__main__':
if len(sys.argv)!= 2:
print 'usage: openmv.py <script>'