svn commit: r438912 - in head/devel/bossa: . files
Boris Samorodov
bsam at FreeBSD.org
Wed Apr 19 20:19:34 UTC 2017
Author: bsam
Date: Wed Apr 19 20:19:32 2017
New Revision: 438912
URL: https://svnweb.freebsd.org/changeset/ports/438912
Log:
devel/bossa: Adding the 1200bps hack to devel/bossa should improve
reliability of programming the Arduino Due.
PR: 218241
Submitted by: Kyle Evans <bsdports at kyle-evans.net> (maintainer)
Added:
head/devel/bossa/files/
head/devel/bossa/files/patch-src_PosixSerialPort.cpp (contents, props changed)
head/devel/bossa/files/patch-src_PosixSerialPort.h (contents, props changed)
head/devel/bossa/files/patch-src_SerialPort.h (contents, props changed)
head/devel/bossa/files/patch-src_WinSerialPort.cpp (contents, props changed)
head/devel/bossa/files/patch-src_WinSerialPort.h (contents, props changed)
head/devel/bossa/files/patch-src_bossac.cpp (contents, props changed)
Modified:
head/devel/bossa/Makefile
Modified: head/devel/bossa/Makefile
==============================================================================
--- head/devel/bossa/Makefile Wed Apr 19 20:15:52 2017 (r438911)
+++ head/devel/bossa/Makefile Wed Apr 19 20:19:32 2017 (r438912)
@@ -2,7 +2,7 @@
PORTNAME= bossa
PORTVERSION= 1.7.0
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= devel
MAINTAINER= bsdports at kyle-evans.net
Added: head/devel/bossa/files/patch-src_PosixSerialPort.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/bossa/files/patch-src_PosixSerialPort.cpp Wed Apr 19 20:19:32 2017 (r438912)
@@ -0,0 +1,47 @@
+--- src/PosixSerialPort.cpp.orig 2017-03-31 15:31:35 UTC
++++ src/PosixSerialPort.cpp
+@@ -85,6 +85,9 @@ PosixSerialPort::open(int baud,
+
+ switch (baud)
+ {
++ case 1200:
++ speed = B1200;
++ break;
+ case 9600:
+ speed = B9600;
+ break;
+@@ -297,6 +300,34 @@ PosixSerialPort::timeout(int millisecs)
+ {
+ _timeout = millisecs;
+ return true;
++}
++
++void
++PosixSerialPort::setDTR(bool dtr)
++{
++ if (_devfd == -1)
++ return;
++
++ int iFlags = TIOCM_DTR;
++
++ if (dtr)
++ ioctl(_devfd, TIOCMBIS, &iFlags);
++ else
++ ioctl(_devfd, TIOCMBIC, &iFlags);
++}
++
++void
++PosixSerialPort::setRTS(bool rts)
++{
++ if (_devfd == -1)
++ return;
++
++ int iFlags = TIOCM_RTS;
++
++ if (rts)
++ ioctl(_devfd, TIOCMBIS, &iFlags);
++ else
++ ioctl(_devfd, TIOCMBIC, &iFlags);
+ }
+
+ void
Added: head/devel/bossa/files/patch-src_PosixSerialPort.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/bossa/files/patch-src_PosixSerialPort.h Wed Apr 19 20:19:32 2017 (r438912)
@@ -0,0 +1,11 @@
+--- src/PosixSerialPort.h.orig 2017-03-31 15:31:35 UTC
++++ src/PosixSerialPort.h
+@@ -52,6 +52,8 @@ class PosixSerialPort : public SerialPort (public)
+
+ bool timeout(int millisecs);
+ void flush();
++ void setDTR(bool dtr);
++ void setRTS(bool rts);
+ void setAutoFlush(bool autoflush);
+
+ private:
Added: head/devel/bossa/files/patch-src_SerialPort.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/bossa/files/patch-src_SerialPort.h Wed Apr 19 20:19:32 2017 (r438912)
@@ -0,0 +1,11 @@
+--- src/SerialPort.h.orig 2017-03-31 15:31:35 UTC
++++ src/SerialPort.h
+@@ -68,6 +68,8 @@ class SerialPort (public)
+
+ virtual bool timeout(int millisecs) = 0;
+ virtual void flush() = 0;
++ virtual void setDTR(bool dtr) = 0;
++ virtual void setRTS(bool rts) = 0;
+
+ virtual std::string name() const { return _name; }
+
Added: head/devel/bossa/files/patch-src_WinSerialPort.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/bossa/files/patch-src_WinSerialPort.cpp Wed Apr 19 20:19:32 2017 (r438912)
@@ -0,0 +1,18 @@
+--- src/WinSerialPort.cpp.orig 2017-03-31 15:31:35 UTC
++++ src/WinSerialPort.cpp
+@@ -251,3 +251,15 @@ WinSerialPort::flush()
+ {
+ Sleep(1);
+ }
++
++void
++WinSerialPort::setDTR(bool dtr)
++{
++ Sleep(1);
++}
++
++void
++WinSerialPort::setRTS(bool rts)
++{
++ Sleep(1);
++}
Added: head/devel/bossa/files/patch-src_WinSerialPort.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/bossa/files/patch-src_WinSerialPort.h Wed Apr 19 20:19:32 2017 (r438912)
@@ -0,0 +1,11 @@
+--- src/WinSerialPort.h.orig 2017-03-31 15:31:35 UTC
++++ src/WinSerialPort.h
+@@ -55,6 +55,8 @@ class WinSerialPort : public SerialPort (public)
+
+ bool timeout(int millisecs);
+ void flush();
++ void setDTR(bool dtr);
++ void setRTS(bool rts);
+
+ private:
+ HANDLE _handle;
Added: head/devel/bossa/files/patch-src_bossac.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/bossa/files/patch-src_bossac.cpp Wed Apr 19 20:19:32 2017 (r438912)
@@ -0,0 +1,69 @@
+--- src/bossac.cpp.orig 2017-03-31 15:31:35 UTC
++++ src/bossac.cpp
+@@ -64,6 +64,7 @@ class BossaConfig (public)
+ bool help;
+ bool forceUsb;
+ string forceUsbArg;
++ bool arduinoErase;
+
+ int readArg;
+ string portArg;
+@@ -89,6 +90,7 @@ BossaConfig::BossaConfig()
+ info = false;
+ help = false;
+ forceUsb = false;
++ arduinoErase = false;
+
+ readArg = 0;
+ bootArg = 1;
+@@ -189,6 +191,11 @@ static Option opts[] =
+ 'R', "reset", &config.reset,
+ { ArgNone },
+ "reset CPU (if supported)"
++ },
++ {
++ 'a', "arduino_erase", &config.arduinoErase,
++ { ArgNone },
++ "erase and reset via Arduino 1200 baud hack (cannot be used with port autodetection)"
+ }
+ };
+
+@@ -257,6 +264,12 @@ main(int argc, char* argv[])
+ return help(argv[0]);
+ }
+
++ if (config.arduinoErase && !config.port)
++ {
++ fprintf(stderr, "%s: port must be specified for Arduino 1200bps erase hack\n", argv[0]);
++ return help(argv[0]);
++ }
++
+ if (config.read || config.write || config.verify)
+ {
+ if (args == argc)
+@@ -311,6 +324,25 @@ main(int argc, char* argv[])
+ fprintf(stderr, "Invalid USB value: %s\n", config.forceUsbArg.c_str());
+ return 1;
+ }
++ }
++
++ if (config.arduinoErase)
++ {
++ SerialPort::Ptr port;
++ if (config.forceUsb)
++ port = portFactory.create(config.portArg, isUsb);
++ else
++ port = portFactory.create(config.portArg);
++
++ if(!port->open(1200))
++ {
++ fprintf(stderr, "Failed to open port at 1200bps\n");
++ return 1;
++ }
++
++ port->setRTS(true);
++ port->setDTR(false);
++ port->close();
+ }
+
+ if (config.port)
More information about the svn-ports-head
mailing list