Skip to content

Conversation

@dmadison
Copy link
Owner

Updates this repo to Arduino AVR core 1.8.4.

The most significant change for this repo are the CDC_DISABLED changes. I've decided not to revert my own CDC removal changes to the USB core files and integrate the new preprocessor flag method because there's no functional benefit - CDC still won't work with XInput. More practically, it's less work to not comb through the changes, and this lets the dummy Serial instance exist peacefully.

On my test setup with 1.8.19 the changes to new are generating compiler warnings. I'm hopeful that since this release was never published those issues are solved with 1.8.5.

Also included in this PR is a change to the Adafruit Circuit Playground board, which apparently has been missing its w/ XInput modifier since the repo's creation. It also updates the Arduino IDE version used for CI.

matthijskooijman and others added 30 commits September 17, 2020 19:32
Originally, the Arduino core used "new.h", rather than the standard "new", probably because the implementation was incomplete, and for the most commonly used new and delete operators, no include is needed at all (they are defined implicitly by the compiler). However, now Arduino does expose the "new" name, as an alias for the older "new.h". Given that the standard name is "new", it makes more sense to put the actual content in "new", and make "new.h" a compatibility header that includes "new" instead of the other way around.
This makes this header complete up to including C++14, except two exception classes that cannot be defined without `<exception>`. The functions related to the "new_handler" are declared but not actually defined, to prevent overhead and complexity. They are still declared to allow implementing them in user code if needed. This makes the implementation of all operator new and delete functions comply with the C++11/C++14 specification in terms of which should be actually implemented and which should be delegate to other functions. There are still some areas where these implementations are not entirely standards-compliant, which will be fixed in subsequent commits. This fixes part of #287 and fixes #47.
This makes these functions weak, so that a sketch or library can replace them. This does not apply to all of these operators, only for the ones that the C++ standard specifies as replaceable.
This allows calling it from other places later. The default implementation calls `abort()`, but making it weak allows user code to override this function (either directly, or by including a library like uclibc++ that implements `std::set_terminate()`). Note that this does not add a declaration for this function, since the standard dictates this to be in `<exception>`, but we cannot meaningfully or completely implement that header, so better leave it to be overridden by e.g. libraries like uclibc++.
These are special functions that are presumably put into vtables for deleted or pure virtual functions. Previously, this would call `abort()` directly, but calling `std::terminate()` achieves the same effect, but allows user code to change the behavior (e.g. to print to serial, blink leds or whatever makes sense).
This is currently disabled, keeping the old behavior of returning NULL on failure, but should probably be enabled in the future as code that does want to do a null check has had a chance to switch to the more portable nothrow versions. When enabled, allocation failure calls the weak `std::terminate()`, which calls `abort()` by default, but can be replaced by user code to do more specific handling. To enable this, a macro must be defined (in new.cpp or on the compiler commandline). This fixes part of #287.
The standard dictates that `std::size_t` is used, rather than the plain `size_t` type. Even though these types are usually, if not always, exactly the same type, other code might assume that `std::size_t` is actually used and thus also available under that name after including `<new>`. This fixes that by using the right type. One challenge is that it is usually declared in headers that we do not have available, so this just defines the `std::size_t` type in the `<new>` header to work around that.
Improve and complete implementation of new/delete
7.3.0-atmel3.6.1-arduino7 gcc fails to optimize separate reading from ADCL and ADCH. It produces additionally three eor commands or in some cases two mov commands in the assembly code (see discussion #344). These commands swap register contents before store them to data area. So they are completely unnecessary. Reading ADC result with ADC macro fixes it and gcc generates the right code..
The Google Code URL in boards.txt is very outdated. The URL in platform.txt is to a more recent home of the content, which has been replaced with a link to the new location, but while I'm updating boards.txt, I might as well point both URLs to the real page.
Update platform specification URLs in configuration files
Sometimes Arduino-based USB devices don't work because some hardware (like KVM switches) gets confused by the CDC sub-devices. This change makes it relatively easy to disable CDC at compiletime. Disabling it of course means that the serial console won't work anymore, so you need to use the reset button when flashing. CDC_DISABLED is also used in ArduinoCore-samd for the same purpose. based on https://github.com/gdsports/usb-metamorph/tree/master/USBSerPassThruLine See also NicoHood/HID#225 and arduino/Arduino#6387 and https://forum.arduino.cc/index.php?topic=545288.msg3717028#msg3717028
fix twi_manageTimeoutFlag function description
To make alternative implementations of the TwoWire class (e.g. SoftwareWire for software I2C) work properly being passed to libraries that expect TwoWire type.
Dependabot will periodically check the versions of all actions used in the repository's workflows. If any are found to be outdated, it will submit a pull request to update them. NOTE: Dependabot's PRs will sometimes try to pin to the patch version of the action (e.g., updating `uses: foo/bar@v1` to `uses: foo/bar@v2.3.4`). When the action author has provided a major version ref, use that instead (e.g., `uses: foo/bar@v2`). Dependabot will automatically close its PR once the workflow has been updated. More information: https://docs.github.com/en/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot
On every push, pull request, and periodically, use the codespell-project/actions-codespell action to check for commonly misspelled words. In the event of a false positive, the problematic word should be added, in all lowercase, to the ignore-words-list field of ./.codespellrc. Regardless of the case of the word in the false positive, it must be in all lowercase in the ignore list. The ignore list is comma-separated with no spaces.
On every push, pull request, and periodically, run Arduino Lint to check for common problems not related to the project code.
On every push or pull request that affects platform source code or bundled libraries, compile example sketches of all bundled libraries for the platform's boards.
On creation or commit to a pull request, a report of the resulting change in memory usage of the examples will be commented to the PR thread.
Use GitHub Actions for continuous integration
The word "statics" was recently added to codespell's "rare" commonly mispelled words directory. By default, this dictionary is used in addition to the more conservative "clear" dictionary, resulting in a spurious failure of the "Spell Check" CI workflow. Although this could be fixed by adding the word to the ignore list, it seems that an increasing number of common words being added to this dictionary, so I think it's best to just remove it altogether. The goal for the "Spell Check" workflow is to catch some typos without a significant number of false positives, even if that means some misspellings slip through. I think the "clear" dictionary is more in line with that goal.
Don't use codespell's "rare" dictionary for CI spell check
Allow disabling CDC with -DCDC_DISABLED
cmaglie and others added 11 commits October 14, 2021 11:41
Speed up 'available' method by inserting unsigned int cast
Missed this one back in the day. Also added "32u4" to make a more obvious distinction in the IDE between the modern SAMD Circuit Playground board.
Don't need these for the fork
After more testing, boards do more reliably update with the "double tap reset" than with a single press. [skip ci]
@dmadison dmadison merged commit d52b6ea into master Feb 22, 2022
@dmadison dmadison deleted the upstream-1.8.4 branch February 22, 2022 07:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet