Age | Commit message (Collapse) | Author |
|
|
|
* Interrupt ordering for 32u2 and 16u2 MCU
* Added missing chip variants
|
|
No fixed value for USB power current.
|
|
Minor optimization in shiftOut function
|
|
Cast pins to signed integers to avoid Wtype-limits compile warning
|
|
Do not claim AT-protocol in CDC interface descriptor
|
|
|
|
Add placement new operator
|
|
Add parameter names to common prototypes
|
|
using with ternary operator such as bitWrite(value, bit, some_computed_value == 5 ? 1: 0);'
|
|
Fix unused variable warning for non-pluggable USB in SendDescriptor
|
|
checking `length` in below while statement
|
|
|
|
The CDC code presents itself as a virtual serial port. However, it also
sets the "bFunctionProtocol" value to 1, which means it supports
AT-commands, which is not actually the case. This might cause problems
with some software, such as ModemManager.
Originally, ModemManager would be very liberal with probing serial
devices, using a blacklist to prevent probing non-modems such as
Arduinos.
Since version 1.7.990, it has supported a "strict" mode where it tries to be
more restrained in what devices it probes. For CDC ACM devices, this
means it will only probe devices that claim to support AT-commands.
However, it also stopped applying the blacklist (intending to eventually
remove the blacklist), meaning it would again probe Arduinos.
This new strict policy is not the upstream default, but is enabled in
Debian (since Buster) and Ubuntu (since bionic 18.04.2).
The proper way to fix this, is to not claim AT comand support in the USB
device descriptor, which is what this commit does. The Arduino will
still show up as a virtual serial port, just not be probed by
ModemManager in strict mode.
For the commit that introduced the strict mode in ModemManager, see
https://cgit.freedesktop.org/ModemManager/ModemManager/commit/src?id=ee570d44dc117dc69f23e83313dd877f76c5e3e0
|
|
|
|
|
|
Much better than in/out, since using the controller's perspective meant the inverted "in/out" was confusing
|
|
This function never returns an error (-1), and the number of bytes available will never be a negative number.
|
|
Logical reordering, no functional change
|
|
Returns true if the device USB is configured. Although will still return true if the device has been configured and the USB data pins disconnected...
|
|
No reason not to take advantage of this feature, although with the interrupt in place I doubt it will be useful.
|
|
|
|
Using the OUT endpoint interrupt
|
|
|
|
Better to set these where intended so they can be easily overridden if need be.
|
|
|
|
|
|
Easier for the AVR to deal with the memory if the in/out numbers aren't paired.
|
|
|
|
|
|
This will compile but will NOT enumerate properly without a config descriptor. You've been warned...
|
|
Avoids unused variable warning if USB is enabled but pluggable USB is not
|
|
Allows sketches using Serial to compile but discards all data
|
|
Unused if pluggable USB is not enabled. Should submit a PR to fix this in the main repo...
|
|
Not compatible with XInput, which requires a static descriptor
|
|
Putting the parameter names in these commonly used prototypes makes syntax help like VS Code's Intellisense work 99% more useful. Without them, it doesn't give you the names of the parameters and you have to remember the semantics yourself. :(
|
|
These are currently implemented by the Wire library, on twi.c
|
|
Based on code originally by Rob van der Veer <rob.c.veer@gmail.com>, this adds
USBDevice.isSuspended(), so user sketches can run custom code in their `loop`
methods after checking if the device is suspended or not.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
|
|
The standard mandates that placement new should be have a noexcept specifier.
|
|
Casting to void is a well known trick for prevening 'unused parameter' warnings.
|
|
|
|
|
|
|
|
Make write to UDR and clearing of TXC bit in flush() atomic
to avoid race condition.
Fixes #3745 (second different issue introduced later but discussed
in the same issue)
|
|
Preserve values of configuration bits MPCMn and U2Xn.
Avoid setting other read-only bits for datasheet conformance.
See #3745
|
|
Moving the head buffer pointer and setting interrupt flag is now
atomic in write(). Previously an intervening ISR could empty the
buffer before the second ISR is triggered causing retransmission.
Fixes: #3745 (original issue only)
|
|
New macro TX_BUFFER_ATOMIC makes the following code block atomic
only if the transmit buffer is larger than 256 bytes. SREG is restored
on completion.
The macro is then used to simplify code for availableForWrite()
|
|
Instead of checking for the NEW_LUFA_SIGNATURE once in program memory and then
setting a flag which is used for further checks, a function is used that always
checks program memory directly.
If a flag is used, there's a slight chance that its location in RAM could fall
on MAGIC_KEY_POS. In this case, an aborted USB auto-reset sequence may fail.
|
|
An auto-reset invoked using USB CDC is triggered by the port closing
(when set to 1200 baud). Closing of the port is indicated by DTR going inactive.
There is no need to have auto-reset invoked by a CDC_SET_LINE_CODING command.
Only the CDC_SET_CONTROL_LINE_STATE command, which indicates a change in the
state of DTR, should be used.
|
|
The state of the watchdog timer is saved during a USB auto-reset and then
restored if the reset is aborted, in case the sketch is using the watchdog.
|