aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-09-17Use std::size_t in new/deleteMatthijs Kooijman
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.
2020-09-17Optionally let new terminate on allocation failureMatthijs Kooijman
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.
2020-09-17Make zero-sized new standards-compliantMatthijs Kooijman
This fixes part of #287.
2020-09-17Call std::terminate on pure or deleted virtual functionsMatthijs Kooijman
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).
2020-09-17Add weak `std::terminate()` implementationMatthijs Kooijman
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++.
2020-09-17Allow overriding selected operator new and delete functionsMatthijs Kooijman
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.
2020-09-17Clean up and complete `<new>` headerMatthijs Kooijman
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.
2020-09-17Swap new and new.h header filesMatthijs Kooijman
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.
2020-06-11Wire: apply last suggested comment from @matthijskooijmanMartino Facchin
2020-06-11Publish 1.8.3Martino Facchin
2020-06-11Wire: improve comments on timeoutMatthijs Kooijman
2020-06-11Wire: add sensible defaults to setWireTimeoutMartino Facchin
2020-06-11Introduce non compulsory Wire timeoutGreyson Christoforo
move timout handling into its own function change timeout from milliseconds to microseconds don't forget operating slave address or the bitrate when we reset because of a timeout Co-Authored-By: Witold Markowski <witold.a.markowski@gmail.com> fix delay datatype uint16_t --> uint32_t Update libraries/Wire/src/utility/twi.c fix mix up using TWBR instea of TWAR! Co-Authored-By: Matthijs Kooijman <matthijs@stdin.nl> Update libraries/Wire/src/utility/twi.c fix 2nd TWBR/TWAR mixup Co-Authored-By: Matthijs Kooijman <matthijs@stdin.nl> twi_stop() should use the same timeout as everywhere else all while loops are now protected by timeouts Revert "twi_stop() should use the same timeout as everywhere else" This reverts commit 68fe5f1dae1bb41183bb37eeda3fb453394a580c. make timeout counter volatile rename timeout function for improved clarity - resetting the twi interface on timeouts is now optional - timeouts in the ISR are no longer hardcoded and now obey the set timeout value - a user-readable flag is now set whenever a timeout occurs - the user can clear this flag whenever they like
2020-06-11Merge pull request #340 from eudoxos/header-newMartino Facchin
Add "new" proxy header for compatibility with c++-standard #include<new>
2020-06-11Merge pull request #335 from cmaglie/add-precomp-lib-supportMartino Facchin
Added precompiled library support
2020-05-13Add "new" proxy header for compatibility with c++-standard #include<new>eudoxos
2020-05-04Merge pull request #337 from Max-Leopold/patch-1Martino Facchin
Correct comment on wiring_analog.c
2020-05-02Update comment on wiring_analog.cMaximilian Leopold
2020-04-28Added precompiled lib supportCristian Maglie
2020-03-19Merge pull request #318 from e28eta/typosMartino Facchin
Fix sine -> since typo in HardwareSerial files
2020-03-18Fix sine -> since typo in HardwareSerial filesDaniel Jackson
2019-12-02Release 1.8.2Cristian Maglie
2019-09-25Interrupt ordering for 32u2 and 16u2 MCU (#66)Manuel Reimer
* Interrupt ordering for 32u2 and 16u2 MCU * Added missing chip variants
2019-09-20Added SERIAL_PORT_MONITOR define to Arduino EthernetGiampiero Baggiani
Port of https://github.com/arduino/Arduino/pull/7023
2019-09-20Merge pull request #286 from arduino/remove-genuinoMartino Facchin
Remove Genuino Occurrences
2019-09-20Removed Genuino Micro and set to replace it with Arduino Micro on uploadCristian Maglie
2019-09-19Remove Genuino OccurrencesLuca Cipriani
2019-09-18Merge pull request #284 from arduino/revert-52-masterAlexander Entinger
Revert "Changed linking order, so precompiled libraries can be used"
2019-09-18Revert "Changed linking order, so precompiled libraries can use the Arduino ↵Alexander Entinger
c… (#52)" This reverts commit 41f15a1359943ccb3ec9666a2e28a2d15e9581fc.
2019-09-16Merge pull request #4 from awatterott/masterAlexander Entinger
No fixed value for USB power current.
2019-09-16Add i2c_scanner to example of Wire (#93)Asuki Kono
2019-09-16Changed linking order, so precompiled libraries can use the Arduino c… (#52)Corjan85
* Changed linking order, so precompiled libraries can use the Arduino code functions. * Added 'compiler.libraries.ldflags', reverted object order in previous commit
2019-09-16Merge pull request #82 from luco5826/masterAlexander Entinger
Minor optimization in shiftOut function
2019-09-16Merge pull request #95 from jrowberg/masterAlexander Entinger
Cast pins to signed integers to avoid Wtype-limits compile warning
2019-09-16Merge pull request #92 from matthijskooijman/cdc-no-prototocol-atAlexander Entinger
Do not claim AT-protocol in CDC interface descriptor
2019-09-16Merge pull request #99 from gigoh/fix-bootloader-pathAlexander Entinger
Correct yunmini.bootloader.file on boards.txt
2019-09-16Merge pull request #100 from CombiesGit/patch-1Alexander Entinger
[TWI] Add __attribute__ ((fallthrough)) to remove recent GCC warnings
2019-09-16Merge pull request #31 from jamadagni/patch-1Alexander Entinger
Add `bitToggle` macro to complement `bitSet` etc
2019-09-16Merge branch 'master' into patch-1Alexander Entinger
2019-09-16Merge pull request #33 from Pharap/add-placement-newAlexander Entinger
Add placement new operator
2019-09-16Merge pull request #64 from paulrnash/paulrnash-intellisenseAlexander Entinger
Add parameter names to common prototypes
2019-09-16Adding parenthesis around 'bitvalue' allowing correct macro expansion when ↵Alexander Entinger
using with ternary operator such as bitWrite(value, bit, some_computed_value == 5 ? 1: 0);'
2019-09-16Merge pull request #76 from dmadison/pluggable-unusedAlexander Entinger
Fix unused variable warning for non-pluggable USB in SendDescriptor
2019-09-16Merge pull request #103 from zakkie/fix/remove_ifAlexander Entinger
Removes unnecessary if branch (because length is checked in while statement below the if-clause).
2019-09-04remove unnecessary if branchAkihiro YAMAZAKI
checking `length` in below while statement
2019-08-16Update twi.cCombiesGit
Added __attribute__ ((fallthrough));
2019-08-02rename yunmini.bootloader.file on boards.txtGeonil Goh
2019-07-29Add null pointer test to String destructorJeff Rowberg
2019-07-21Cast pins to signed integers to avoid Wtype-limits compile warningJeff Rowberg
2019-06-08Do not claim AT-protocol in CDC interface descriptorMatthijs Kooijman
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