Commit Graph

195 Commits

Author SHA1 Message Date
Cristian Maglie
b27526b25d Skip enumerating ports that are not accessible for any reason
Otherwise ports like /dev/ttyS0 may be listed in case of "access
denied" errors.
2022-02-18 12:20:20 +01:00
Cristian Maglie
f344e5f764 Merge pull request #129 from cmaglie/update-deps-and-golang-support
Update deps and minimum golang support to 1.17
2022-01-04 17:36:45 +01:00
Cristian Maglie
0e95fd4d4b Updated test workflows to run on go1.17 2022-01-04 17:27:57 +01:00
Cristian Maglie
c3f2459bdd Update minimal go version to 1.17 and do a run of go mod tidy 2022-01-04 17:12:23 +01:00
Cristian Maglie
2cf9e2e281 Remove old go1.9- compatibilty files 2022-01-04 17:11:35 +01:00
Cristian Maglie
d244d828fe Merge pull request #120 from ctarsjp/uart-ports-detection
Added detection of UART ports (/dev/ttymxc*)
2021-09-13 10:06:40 +02:00
Stepan
9fed730fb2 Added detection of UART ports (/dev/ttymxc*) 2021-09-06 18:40:01 +09:00
Cristian Maglie
83a8c96664 Merge pull request #119 from cmaglie/fix-darwin-arm64-issue
Fixed runtime build problem with darwin/amd64
2021-09-01 14:59:17 +02:00
Cristian Maglie
40f997f235 Fixed runtime build problem with darwin/amd64
For some strange reason the interaction between the go-sqlite3 lib and
the go-serial produced a weird panic as described in:

https://github.com/bugst/go-serial/issues/115
https://github.com/bugst/go-serial/issues/116

The solution is to just upgrade the x/unix package to the latest
version available at the moment.

Fix #115
Fix #116
2021-08-27 16:19:34 +02:00
Cristian Maglie
adc54fb194 Updated license years 2021-07-20 12:56:48 +02:00
Cristian Maglie
9cebdc6aa3 Small update to docs 2021-07-20 12:54:16 +02:00
Cristian Maglie
37dba3ab43 Merge pull request #113 from cmaglie/fix-ppc64lebuild
Fixed build for linux/ppc64le
2021-07-20 12:45:35 +02:00
Cristian Maglie
0213833089 Fixed build for linux/ppc64le 2021-07-13 13:27:10 +02:00
Cristian Maglie
13b6f1ac38 Merge pull request #111 from cmaglie/custom-baudrate
Allow to set non-standard baud rates
2021-07-01 13:06:55 +02:00
Cristian Maglie
9d74cb081f Added *bsd placeholders 2021-07-01 00:48:39 +02:00
Cristian Maglie
8ed18bb997 Fixed custom baud rate settings for MacOSX 2021-07-01 00:41:27 +02:00
Cristian Maglie
cff9b2347b Allow setting custom baudrates on serial ports (mac and linux version)
Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2021-07-01 00:40:51 +02:00
Cristian Maglie
01c367d024 Merge pull request #109 from cmaglie/timeouts
Implementation of read timeouts
2021-06-29 17:00:47 +02:00
Cristian Maglie
23dbc8b9ba SetReadTimeout: windows implementation 2021-06-29 15:24:52 +02:00
Cristian Maglie
2cb14f049c SetReadTimeout: unix implementation 2021-06-29 15:24:40 +02:00
Cristian Maglie
a63b28875f linux: detect port disconnection during Read
See https://stackoverflow.com/a/34945814/1655275

> pselect signals that file descriptor is ready and
> ioctl(fd, FIONREAD, &len) returns zero len.

Failure to detect this condition has been revealed by
the testsuite:

=== RUN   TestDisconnectingPortDetection
2017/07/27 13:56:37 PR - Connecting to Probe
2017/07/27 13:56:37      > Searching for port 2341:8037
2017/07/27 13:56:37        Detected port '/dev/ttyACM0' 2341:8037
2017/07/27 13:56:37        Using '/dev/ttyACM0'
2017/07/27 13:56:37 Starting test (timeout 20s)
2017/07/27 13:56:37 PR - Turn ON target
2017/07/27 13:56:37 TR - Connecting to Target
2017/07/27 13:56:37      > Searching for port 2341:8036
2017/07/27 13:56:37        Detected port '/dev/ttyACM0' 2341:8037
[...cut...]
2017/07/27 13:56:46      > Searching for port 2341:8036
2017/07/27 13:56:46        Detected port '/dev/ttyACM0' 2341:8037
2017/07/27 13:56:46        Detected port '/dev/ttyACM1' 2341:8036
2017/07/27 13:56:46        Using '/dev/ttyACM1'
2017/07/27 13:56:46 T2 - Make a Read call
2017/07/27 13:56:46 T1 - Delay 200ms before disconnecting target
2017/07/27 13:56:46 T1 - Disconnect target
2017/07/27 13:56:46 PR - Turn OFF target
2017/07/27 13:56:46 T2 - Read returned: n=0 err=nil
--- FAIL: TestDisconnectingPortDetection (9.18s)
        Error Trace:    serial_test.go:100
	Error:		An error is expected but got nil. %s
	Messages:	Read returned no errors

this commit fix the problem above.
2021-06-29 15:24:32 +02:00
Cristian Maglie
f355dbf608 windows: correcly signal PortClosed error on blocked Read()
This commit fix regression test TestConcurrentReadAndWrite.

Even if the test checks purpose is another it has detected
anyway that the returned error is incorrect.

Another specific test for closing port detection will be added
in the future.
2021-06-29 15:23:40 +02:00
Cristian Maglie
383ed1cd2a Merge pull request #103 from cmaglie/windows-improve-usb-sernum-disc
Windows improve usb serial number discovery
2021-02-26 14:59:48 +01:00
Cristian Maglie
57ac200f98 windows: improved serial number detection on composite USB devices 2021-02-26 12:34:22 +00:00
Cristian Maglie
7183520fbb run of go-fmt 2021-02-26 12:34:22 +00:00
Cristian Maglie
388e793063 Merge pull request #102 from cmaglie/go-generate-rerun
Refresh run of go generate with the latest mksyscall
2021-02-26 13:25:56 +01:00
Cristian Maglie
233eb2a09b Refresh run of go generate with the latest mksyscall 2021-02-26 13:20:02 +01:00
Cristian Maglie
b6c28f76a4 Merge pull request #101 from cmaglie/big-sur-support
Added support for macosx 10.11+
2021-02-26 13:17:09 +01:00
Cristian Maglie
b62cd2386c Added support for macosx 10.11+
Seems like, starting from 10.11, IOUSBDevice has been renamed to IOUSBHostDevice.
2021-02-26 13:07:44 +01:00
Tomáš Polomský
e18766f4d1 update go generate
Replace old mkwinsyscall call by the new version which is recommended
by Go since version 1.13.3.
2021-02-26 12:26:27 +01:00
Cliff Brake
be77090773 update goselect to get riscv support 2021-02-26 12:24:20 +01:00
Tobias Kohlbau
57b513a432 add support for darwin arm64
Support arm64 which is used by the new lineup of computers
from apple.

Signed-off-by: Tobias Kohlbau <tobias@kohlbau.de>
2021-02-15 09:39:59 +01:00
Cristian Maglie
00e63fcc18 small cosmetic fix 2020-09-23 18:27:06 +02:00
Maddie Zhan
eb474d2569 Use golang.org/x/sys/unix provided ioctl functions 2020-09-22 00:20:59 +02:00
Lukas Becker
578b2ec832 only check for newline instead of newline and carraiage return
Co-authored-by: Cristian Maglie <c.maglie@bug.st>
2020-05-08 14:16:00 +02:00
Lukas Becker
b0154211af removed empty line
Co-authored-by: Cristian Maglie <c.maglie@bug.st>
2020-05-08 14:16:00 +02:00
Lukas Becker
f88d900804 changed the example_test.go so it stops reading when "\n\r" is received 2020-05-08 14:16:00 +02:00
Elliott Sales de Andrade
640e755b94 Wait for socat to be ready before running full test.
The -D option tells it to print something just before starting the
transfer phase, which should be enough to ensure that all the file
links are available without having to guess a suitable timeout.
2020-04-26 19:37:35 +02:00
Cristian Maglie
49ab90eff3 Updates to readme 2020-04-20 00:12:16 +02:00
Cristian Maglie
66bfcede42 Added test for port double close 2020-04-19 01:44:34 +02:00
Tobias Kaupat
f0282e0b50 Use mutex on Close() to avoid data races on windows 2020-04-19 01:25:10 +02:00
Tobias Kaupat
545e830e04 Allow multiple calls to close 2020-04-19 01:24:57 +02:00
Cristian Maglie
6500d68fc8 Added test to detect correct behaviour in Close and Read ops 2020-04-19 01:12:48 +02:00
angri
1b760a82af allow Close() to be called from other goroutine than Read
The only way to interrupt running Read() method of io.Reader is to call
Close from another goroutine. What happens is that go runtime builtin
race detector complains about unsynchronised access to "opened" member,
which is set in Close and checked in Read.

It doesn't seem to be dangerous, but 1) you never know, and 2) it makes
your life more difficult when you need to debug some other data races in
a complex project that uses serial.

Proposed fix changes simple access to "opened" to atomic operations.
It's also supposed to fix #38
2020-04-19 01:12:48 +02:00
Andrey Demenev
1131ba52fd Do not return -1 from Read() and Write()
Closes #55
2020-04-18 23:52:30 +02:00
Cristian Maglie
f7a06a7c47 Merge remote-tracking branch 'origin/v1' 2020-04-18 23:46:54 +02:00
martin-zaber
9f6eea0188 Fixing getPortList on windows without any ports 2020-04-18 23:43:54 +02:00
Cristian Maglie
820cffa341 Added doc for new USB Product field (windows-only) 2020-04-18 22:22:31 +01:00
giacomoberlin
f0d91f6e0d Product in PortDetails struct
un-commented Product member of the struct PortDetails. This goes with the pull request "completed retrievePortDetailsFromDevInfo #40". Apologies for not submitting together...
2020-04-18 22:09:26 +01:00
giacomoberlin
4df0da8377 completed retrievePortDetailsFromDevInfo
in retrievePortDetailsFromDevInfo:
- updated call to setupDiGetDeviceRegistryProperty with the same style used elsewhere (first get the reqSize, then call)
- use of generic variable names, in case the function is extended to fetch other values than spdrpFriendlyName (or spdrpDeviceDesc)
- re-enabled the assignment of details.Product
2020-04-18 22:08:55 +01:00