Added mbed-events from https://github.com/ARMMbed/mbed-events. Changes
from upstream:
- the whole code is licensed under the Apache license. Sources and
headers were updates with this information.
- removed the porting layers for Windows and FreeRTOS and the references
to these porting layers in equeue_platform.h.
- moved the TESTS directory in mbed-events to the TESTS directory of
mbed-os.
The callback class can now accept generalized function-objects:
class Thing {
public:
int value;
void operator()() {
printf("hi! %d\n", value);
}
};
Callback<void()> cb(Thing(2));
However, with the intention of avoiding implicit dynamic-memory
allocations, the Callback class is limited to a single word of storage.
Exceeding this size will eliminate the function-object type from the
overload set and fail to compile.
Effort was invested to make this situation very clear to the user. Here
is an example error message with noise removed:
[ERROR] ./main.cpp: In function 'int main()':
./mbed-os/hal/api/Ticker.h:101:10: note:
no known conversion for argument 1 from 'BigFunc' to 'mbed::Callback<void()>'
The real benefit of this change is the ability for users to hook into
the attributes of the Callback class. This mostly allows lifetime
management of the function-objects from third-party libraries (such as
the Event class from mbed-events).
Note: The convenient `callback` function may become ambiguous if
provided with a type that defines multiple incompatible `operator()`
member functions.
This allows additional attributes to be attached to the internally
generated type such as move and destructor operations with no increase
in RAM footprint.
The current overloads can't take advantage of this, but it does open
the possibility for more powerful overloads that can provide these
additional attributes.
Changes to mbed-os memory consumption:
.text .data .bss
before 57887 2292 7692
after 57842 2292 7691
When the border router is switched off, the several retries will end up triggering the asserts in NanostackSocket::open. This is caused because socket_tbl elements, are never set to NULL.
Enable the low power timer for the following targets:
- NUCLEO_F411RE
- NUCLEO_F401RE
- DISCO_F429ZI
- NUCLEO_F446RE
- NUCLEO_F410RB
- DISCO_F469NI
- NUCLEO_F446ZE
- B86B_F446VE
* 'master' of https://github.com/ARMmbed/mbed-os: (63 commits)
[XDOT_L151] add IAR support
Modify mbedtls scripts to add config-no-entropy.h
Remove extra spaces
[XDOT_L151] include xDot in mbed 5 releases
[STM32F429ZI] INITIAL_SP correction
[STM32F091RC] patch for tests-mbedmicro-rtos-mbed-threads
mbedtls trng - remove MBEDTLS_ENTROPY_HARDWARE_ALT
targets - add TRNG device_has to STM32F7 targets
mbedtls - move TRNG mbed impl into platform folder
TRNG HAL - fix length doc wording for get_bytes
HAL TRNG - add dummy variable to empty structs
TRNG - protect HAL implementation if DEVICE_TRNG is not defined
TRNG - remove set seed function
HAL - RNG rename to TRNG
HAL - rng nuvoton cleanup code style
RNG - fix warnings due to obj not used for some targets
RNG - rename rng_get_numbers to rng_get_bytes
mbedtls - mbed wrapper rename to mbed_rng
HAL: Add rng set seed value function
NUMAKER_PFM_NUC472: Add RGN HAL API implementation
...
# Conflicts:
# hal/targets/hal/TARGET_NORDIC/TARGET_NRF5/serial_api.c