In an excess of confidence, these defines were added to Leonardo's variant.h
3rd party boards sometimes avoid inheriting this variant but they still define USBCON, thus breaking the build
As I was not able to base the return types of `begin()` & `end()` off the c_str() function, I have changed the source so the features can be used by C++98 code, while still allowing ranged loops in C++11.
Replaces #4280, only checks for the bootloader once
Tested with Hoodloader2, should work with every LUFA-derived bootloader released after 2014 (.apitable_signatures section must be placed at end of the flash)
BootloaderAPITable.S :
.global BootloaderAPI_Signatures
BootloaderAPI_Signatures:
.long BOOT_START_ADDR ; Start address of the bootloader
.word 0xDF00 ; Signature for the CDC class bootloader
.word 0xDCFB ; Signature for a LUFA class bootloader
makefile:
BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures, BootloaderAPI_Signatures, 8)
Define archive_file_path in Arduino AVR Boards platform.txt to provide
backwards compatibility with IDE versions previous to 1.6.6. The
archive_file_path value set in platform.txt is overridden in IDE 1.6.6+.
This produces avr-ar commands identical to the previous behavior.
- Remove comment in Arduino AVR Boards platform.txt about -w flag. This
is no longer relevant since the compiler warning level is now set by the
user.
- Fix typos
Avoid using the overload of print() for signed integer since a negative value is not allowed here.
This results in a smaller (unless print(int) is used somewhere else in the program) and faster code because the overload for unsigned integer is simpler.
The current code is very verbose and a painful to maintain (Change ISR implementation in 20 different places? No Thanks!).
(This was originally part of #4519, but we all agreeded it deserved it's own PR)
Stream::parseInt & Stream::parseFloat previously had protected
overloads which allowed skipping a custom character. This commit
brings this feature to the public interface.
To keep the public API simpler, the single paramter overload remains
protected. However its functionality is available in the public
interface using the two parameter overload.
Its default is SKIP_ALL which reflects previous versions.
However SKIP_NONE, and SKIP_WHITESPACE can refine this behaviour.
A parameter used in the protected overloads of parseInt/Float has been
changed from `skipChar` to `ignore`.
If the first sending was not successful it is better to abort. Then we get a return value of -1 (instead of -2 if the 2nd call will also fail) and we do not need to block even longer, with another timeout.
Since the HID library adds some general HID definitions and structs, it is very useful to also include this in a custom library.
If you dupe the information you have problems of redeclaration.
Having those defintions inside the official HID library is essential for a good working additional HID API.
This commit just shows other that this option is available and not implemented.
You may use this to determine the Led Lights state of a keyboard or transmit data via RAWHID from the PC.
Quick usage guide:
int length = ((setup.wValueH << 8) | setup.wLength);
USB_RecvControl((uint8_t* data, USB_EP_SIZE); // Needs to be splitted into USB_EP_SIZE packets, not shown here. See HID Project.
Alternatively we can only pass the wIndex to getDescriptor but I suggest to just pass the pointer aka reference of the whole setup.
In guess (havent tested this) that this results in more or less the code size but its a) idential with the other functions and b) we late have more flexibility here.
The Code got a quick SerialKeyboard.ino test
The iterations in the for loop also use unsigned and the setup struct etc as well.
There was no change in HID required since we just init the inherited variables via constructor and the type is never mentioned.
The field is now built on-the-fly on the stack and sent over USB.
This change increase Flash usage and decrease SRAM usage:
before: 6114 / 241
after: 6152 / 216 (removed HIDDescriptor field)
delta: +38 / -25
SRAM is a much more scarse resource and this change free up to
about 10% of the "base" usage.
The check for available slot in PluggableUSB is done on the endpoint
and not on the number of plugged modules.
The modulesCount field is no longer useful and it has been removed.