Skip to content

Commit

Permalink
boards/arduino-mega2560: add TTY_BOARD_FILTER
Browse files Browse the repository at this point in the history
This allows automatically selecting TTY actually belonging to an
Arduino Mega2560 if `MOST_RECENT_PORT=1` is set.

Note: Unless `ARDUINO_MEGA2560_COMPAT_WITH_CLONES` is set to `0`,
this will fall back to detecting any cheap USB UART bridge typically
found in Arduino Mega 2560 clones if no genuine Arduino Mega is found.
  • Loading branch information
maribu committed Dec 11, 2022
1 parent 208bf7e commit dadf22f
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions boards/arduino-mega2560/Makefile.include
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,34 @@ BAUD ?= 9600

ARDUINO_MEGA2560_BOOTLOADER ?= stk500v2

# If port selection via ttys.py is enabled by `MOST_RECENT_PORT=1`, filter
# USB serials to only select boards that identify as Arduino Mega 2560 or
# ad Arduino Mega ADK (a special official Mega flavor that is compatible)
TTY_BOARD_FILTER := --vendor 'Arduino' --model-db 'Mega 2560|Mega ADK'

# Same, but for clones using a cheap USB <--> UART chip rather than the
# ATmega16U2
TTY_BOARD_FILTER_CLONE := --driver 'cp210x|ch341'

# If set to 1, auto-detection of TTYs will also allow clones. This has a slight
# disadvantage for users of genuine Arduino Mega 2560: If the board is not
# plugged in, it will fall back to a detection that may yield false positives.
# However, most people will plug in their boards correctly prior to typing
# `make term`, so this is only a small loss for users of genuine
# Arduino Mega 2560 but a big win for users of cheap clones. Still, users that
# only will ever use genuine Arduino Mega 2560 boards can disable this via their
# .profile or .bashrc if they want.
ARDUINO_MEGA2560_COMPAT_WITH_CLONES ?= 1

ifeq (1,$(ARDUINO_MEGA2560_COMPAT_WITH_CLONES))
TTY_SELECT_CMD := $(RIOTTOOLS)/usb-serial/ttys.py \
--most-recent \
--format path \
$(TTY_BOARD_FILTER) || \
$(RIOTTOOLS)/usb-serial/ttys.py \
--most-recent \
--format path \
$(TTY_BOARD_FILTER_CLONE)
endif

include $(RIOTBOARD)/common/arduino-atmega/Makefile.include

0 comments on commit dadf22f

Please sign in to comment.