diff --git a/HISTORY.md b/HISTORY.md index 52b9185..6e58307 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -7,6 +7,8 @@ The following is the rough list of changes that went into different versions. I - Fix whitespace and add /dev/null redirection (https://github.com/sej7278) - Change the way AUTO_ARDUINO_VERSION is computed (https://github.com/sej7278) - Make serial monitor baudrate detection work in Mac as well(https://github.com/sej7278) +- Fix directory creation for library source files (https://github.com/matthijskooijman) +- Rewrite ard-leonardo-reset script in perl (https://github.com/sej7278) ### 0.10.5 (2013-06-11) - Add USB_VID and USB_PID to CPPFLAGS only if the board is Leonardo. diff --git a/arduino-mk/Arduino.mk b/arduino-mk/Arduino.mk index 17d565e..b1c79b6 100644 --- a/arduino-mk/Arduino.mk +++ b/arduino-mk/Arduino.mk @@ -382,7 +382,7 @@ endif # ifndef RESET_CMD ifeq ($(BOARD_TAG),leonardo) - RESET_CMD = $(ARDMK_PATH)/ard-reset-leonardo \ + RESET_CMD = $(ARDMK_PATH)/ard-reset-arduino --leonardo \ $(ARD_RESET_OPTS) $(call get_arduino_port) else RESET_CMD = $(ARDMK_PATH)/ard-reset-arduino \ diff --git a/bin/ard-reset-arduino b/bin/ard-reset-arduino index 085e442..ba4cbd2 100755 --- a/bin/ard-reset-arduino +++ b/bin/ard-reset-arduino @@ -1,4 +1,4 @@ -#! /usr/bin/env perl +#!/usr/bin/env perl use strict; use warnings; @@ -7,16 +7,17 @@ use Device::SerialPort; use Getopt::Long; use Pod::Usage; -my %Opt = - ( +my %Opt = + ( period => 0.1, ); -GetOptions(\%Opt, +GetOptions(\%Opt, "period=f", # width of reset pulse in seconds "verbose!", - "help!", + "help!", "info!", + "leonardo!", ); if ($Opt{help} || $Opt{info}) @@ -31,21 +32,33 @@ foreach my $dev (@ARGV) { my $p = Device::SerialPort->new($dev) or die "Unable to open $dev: $!\n"; - + + if ($Opt{leonardo}) + { + $p->baudrate(1200); + $p->write_settings; + $p->close; + + print STDERR "Switching to 1200 baud on $dev\n" + if $Opt{verbose}; + } + else + { my $dt = $Opt{period}; print STDERR "Setting DTR high for ${dt}s on $dev\n" if $Opt{verbose}; - + die "Invalid pulse width ($dt), " unless $dt > 0.0; - + $p->pulse_dtr_on($dt * 1000.0); + } } - + ## here endeth the main -sub usage +sub usage { pod2usage(-verbose => 2); } @@ -53,20 +66,22 @@ sub usage __END__ =head1 NAME - + ard-reset-arduino - Reset an Arduino - + =head1 USAGE - + $ ard-reset-arduino /dev/cu.usb* $ ard-reset-arduino --verbose --period=0.1 /dev/cu.usb* - + + $ ard-reset-arduino --verbose --leonardo /dev/ttyUSB0 + =head1 DESCRIPTION To reset (most) Arduinos, it's enough to just pulse the DTR line. -You can do that from the shell with stty, but there's an interesting +You can do that from the shell with stty, but there's an interesting diversity of command flags. This little program gives a uniform interface at the cost of requiring C. @@ -82,8 +97,12 @@ Watch what's going on on STDERR. Specify the DTR pulse width in seconds. +=item --leonardo + +Reset a Leonardo. + =back - + =head1 BUGS AND LIMITATIONS There are no known bugs in this application. @@ -91,18 +110,20 @@ There are no known bugs in this application. Please report problems to the author. Patches are welcome. - + =head1 AUTHOR Martin Oldfield, ex-atelier@mjo.tc +Support for Leonardo added by sej7278, https://github.com/sej7278 + Thanks to Daniele Vergini who suggested this to me, and supplied a command line version. - + =head1 LICENCE AND COPYRIGHT - + Copyright (c) 2012, Martin Oldfield. All rights reserved. - + This file is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or @@ -110,6 +131,6 @@ by the Free Software Foundation; either version 2.1 of the License, or This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/bin/ard-reset-leonardo b/bin/ard-reset-leonardo deleted file mode 100755 index dc05f06..0000000 --- a/bin/ard-reset-leonardo +++ /dev/null @@ -1,12 +0,0 @@ -#! /usr/bin/python - -import sys -import serial - -ser = serial.Serial(sys.argv[1], 57600) -ser.close() -ser.open() -ser.close() -ser.setBaudrate(1200) -ser.open() -ser.close() diff --git a/bin/wait-connection-leonardo b/bin/wait-connection-leonardo index 92d26f7..6a594d2 100755 --- a/bin/wait-connection-leonardo +++ b/bin/wait-connection-leonardo @@ -1,4 +1,4 @@ -#! /bin/bash +#!/bin/bash while [ ! -e $1 ] do