Assumption that greentea test file is always named main.cpp is
incorrect. Updated mbed_greentea_add_test() macro to make TEST_SOURCES
parameter compulsory, which is used to specify greentea test
file(s). This allows tests to use C, or have a different name.
Therefore also updated all pre-existing greentea test CMake files to
explicity add main.cpp to TEST_SOURCES.
mbed-stubs-connectivity now depends on the mbed-stubs-rtos and
mbed-stubs-rtos-headers because it requires some headers and sources
which were moved to mbed-stubs-rtos and mbed-stubs-rtos-headers.
Some of the lines in `platform_mbed.h` only have `FEATURE_PSA`
checked, which is always set for Mbed OS PSA targets but the PSA
APIs are not actually available unless `FEATURE_EXPERIMENTAL_API`
is also enabled. To fix this and improve readability, group all
PSA-related lines and check both macros.
4a3c5c525b Merge remote-tracking branch 'origin/release_internal' into release_external
2b8d2e1356 Do not reset radio when MAC data request timeouts (#2647)
95c506a276 Frame counters for nw keys are now stored to NVM only after send key is set (#2641)
3b3010a79b Adjusted stagger random to [min,min+max] and for small nw set the stagger value to 10 seconds
02bc33a242 Adjusted security protocol (EAP-TLS,4WH,2WH) retry timers
eb26726020 High Priority timestamp compare overflow support fix.
928723a33e FHSS WS: Initialize broadcast channel count when enabling FHSS (#2642)
6040d703c8 Updated change log
667b191223 Changed initial EAPOL-key retries from trickle to exponential backup
d925145d33 Add RTT calculation for DHCP Time calculation
0b82953567 Traceroute bug fix.
04de6e26d8 Merge pull request #2638 from PelionIoT/mbed_os_fix_ufsi_calculation
20123477c6 Fixed FHSS UFSI calculation unit tests
436f16e84f Handle timer rollover in calculate_ufsi
411cf5c7a4 coding style
d6f44218d6 Correct ufsi timing calculation
560619d85d Add network time vendor data element to DHCPv6 reply message
6d290dc3c1 System time read/write callbacks (#2637)
7905df666d Restart or remove transmission when MAC data request timeouts (#2636)
c97695cfc6 Bug fix: EAPOL parent compare fix
e283e6285c Fixed channel mask usage with OFDM configurations (#2633)
24168f891b Do not send too old packets (#2632)
dbd83be16d Fix copyrights (#2631)
7f0cffdbf7 Merge pull request #2630 from PelionIoT/use_pelion_copyright
511bd5a3ad Corrected coding style
57ec0281a8 Corrected comparison
7d853de862 When EAPOL waiting queue is full oldest entry is removed
acf580fbd0 Update copyright in changed MDNS files
933c0bbf0a Update copyright
3aeb2af77c Statistics for data request latencies (#2629)
3f7eae64ef EAPOL FHSS temp entry discover
5200b666e7 DHCP time elapsed time write fix.
0536874f64 Removed empty EAPOL-key message send after 4WH completion to nodes on relay
8a2a683aef Fixed DHCP wrong time elapsed value write.
283f2ee685 DHCPv6 update:
99be7783ec EAPOL temp neighbour update
4f9e3d12ab Adaptation layer to remove oldest packet first
20f1f6492f Added ignoring of retry messages from RADIUS server when waiting EAP-TLS
8a8b407c47 Add RSL check for ETX Calculation for RPL parent selection
c05e1da757 Fix DHCP server Uninitialized memory read
77229eefa6 Fix CPP error from domain prefix check
7e47889111 support filtering of EAPOL parents based device-min-sens configuration
618a19192c Wi-SUN Expedite forward state update
4371462d66 Fix NULL read from RPL header addition
7802c7ee97 Update CHANGELOG.md
b2c810402c CHANGELOG for Nanostack v13.0.0 (#2615)
git-subtree-dir: connectivity/nanostack/sal-stack-nanostack
git-subtree-split: 4a3c5c525b2a62c19ecfb0ac64d09bd2a7f56ceb
The default get_ip_address implementation was not working for
BG9x. Furthermore the cellular connect routine tries to get the
address multiple times, which added around 2 seconds of
unnecessary delay to the connection. This commit adds the correct
implementation using the AT+QIACT? command.
We potentially save flash space by not enabling Mbed TLS self-tests
by default. A new test config file, TESTS/configs/mbedtls.json, is
provided to enable self tests. This newly created JSON file also
enables timing in Mbed TLS so timing gets tested.
This allows us to verify the support for Mbed TLS timing on Mbed OS.
Note: The macros MBEDTLS_TIMING_C and MBEDTLS_TIMING_ALT are not
enabled by default and need to be additionally enabled to run this
test.
Do not compile the Mbed implementation of Mbed TLS unless
MBEDTLS_TIMING_ALT is defined. This prevents a macro check error on
devices that do not have LPTICKER or USTICKER when Mbed TLS timing
is not enabled.
When MBEDTLS_TIMING_C and MBEDTLS_TIMING_ALT are enabled,
the Arm Compiler generates errors like the following (one for
each missing symbol):
Error: L6218E: Undefined symbol mbedtls_timing_get_delay
Reason:
The function `mbedtls_timing_self_test()` in the Mbed TLS default
`timing.c` always gets compiled, if MBEDTLS_SELF_TEST is defined.
And MBEDTLS_SELF_TEST is always defined, as we have a Greentea test
to run some of the Mbed TLS self tests. (In the future we should try
not to enable MBEDTLS_SELF_TEST except for tests, but it requires
a rework in our test flow.)
`mbedtls_timing_self_test()` tests (calls) the full API declared in
`timing.h`, and the ARM Compiler requires all symbols referenced by
all functions to be defined, even those not used by the final
application. This is unlike GCC_ARM which resolves what are required.
Solution:
To fix the "undefined symbol" errors, we add an implementation of
`mbedtls_timing_get_timer()` based on Mbed OS `LowPowerTimer` or
`Timer` (depending on which one is available), and copy Mbed TLS's
default `mbedtls_timing_set_delay()` and `mbedtls_timing_get_delay()`
which are built on top of `mbedtls_timing_get_timer()`. This will also
benefit user applications that need to enable timing in Mbed TLS.
Previously we used `gettimeofday()` for Mbed TLS timing, but its
implementation provided by Mbed OS is only precise to seconds. The
microsecond component of the output `struct timeval` is always set
to zero. But Mbed TLS requires millisecond precision.
To provide required timing precision, switch to use `LowPowerTicker`
or (microsecond) `Ticker`. `LowPowerTicker` is preferred as it saves
power and Mbed TLS does not require microsecond precision.
Adding mbed-os subdirectories that are not required for a specific project to .mbedignore is a good way to reduce compilation time. Sometimes it happens that tests depend on ignored files, which causes the test-build to fail even though the corresponding feature/component
is not configured. The reason is that the conditional that skips the test is placed after the includes.
Block-Wise request (block1) error handling improvements:
* Removed SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED usage. Block-Wise requests will now follow normal retranmission rules.
* Process block1 responses only once. If response is coming in wrong order just ignore it wait next response to happen.
Typically when adding a unit test directory to a CMake project a check
will be used to ensure the subdirectory is added only if the following
are true:
* The BUILD_TESTING option is set to ON.
* The current CMake project is the top-level project.
The reason being, if a downstream project includes our project they
generally don't want to build our unit tests.
In mbed-os, we do correctly specify the above condition before adding
the central UNITTEST subdirectory, which fetches googletest and adds the
"stub" libraries the unit tests depend on. However, we only check if
CMAKE_CROSSCOMPILING is OFF (or undefined) before actually adding the
unit tests. This mismatched logic would lead to unexpected build
failures in various scenarios. One likely case could be: a downstream
project including mbed-os happens to set CMAKE_CROSSCOMPILING to
OFF/undefined for any reason (possibly to build its own unit tests).
mbed-os would go ahead and attempt to build its tests without fetching
googletest or adding the required stub targets.
To fix the issue replace the check for CMAKE_CROSSCOMPILING in the unit
tests with the same BUILD_TESTING idiom we use for adding the central
UNITTESTS subdirectory.
We get a linker warning with the recently added timing module
implementation for Mbed. This is because there is Mbed TLS also ships a
file called timing.c, which we are including in Mbed OS also. With CLI
1, we get an error about unique object files because of the similarly
named implementation files.
Object file timing.o is not unique! It could be made from: mbed-os/connectivity/mbedtls/source/timing.c mbed-os/connectivity/mbedtls/platform/src/timing.cpp
Rename the Mbed timing module implementation to timing_mbed.cpp to avoid
this naming conflict.
Fixes: b8781e527b ("mbedtls: Add an alt implementation of timing")
Fixes#14759
Fix 'netsocket: several dynamic allocation results not checked' (#14210)
add_event_listener in NetworkInterface now returns an error if the method fails. Previous attempts to add the event listener would attempt to use an unchecked standard dynamically allocated ns_list_* item.
In other cases, the dynamically allocated items will now be checked, and if unsuccessful, will return after cleaning up any outstanding issues.
TCPSocket::accept will now check that its own internally allocated new TCPSocket call will succeed, and if not, will clean up the stack resources. This should help when memory is low but an incoming connection requests a connection when the TCPSocket is listening.
When calculating ufsi, the function was relying
on the slot processed by the unicast fhss timer
callback, which can be delayed. When it happens
the slot value is wrong, and the ufsi is incorrect.
The ufsi is then used by the peer to determined
the reply channel, so the devices are thus
unsynchronized until the next uplink packet.
The compiler gave redefinition warnings if
MBEDTLS_ENTROPY_HARDWARE_ALT is defined in the the compile
definitions. A check is added to prevent this warning.
Remove two expressions from at_cellularcontexttest that do nothing. This
fixes the following two warnings.
connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp:61:67: warning: expression result unused [-Wunused-value] ATHandler_stub::int_valid_count_table[kRead_int_table_size]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~^
connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp:64:66: warning: expression result unused [-Wunused-value] ATHandler_stub::read_string_table[kRead_string_table_size];
Many test stub functions are meant to return a value, but weren't. Clang
would generate a warning for each instance where we weren't returning
anything in a function that was meant to return a value.
warning: non-void function does not return a value [-Wreturn-type]
For a specific example, my_radio::time_on_air() is supposed to return a
uint32_t, but wasn't returning anything. We'll return a zero instead of
relying on undefined behavior.
Without this, clang 11.0.1 was generating a virtual function
implementation with a `ud2` instruction to abort at run-time, causing
some execution of some unit tests to abort.
Running main() from gmock_main.cc
[==========] Running 10 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 10 tests from Test_LoRaPHYUS915
[ RUN ] Test_LoRaPHYUS915.constructor
[ OK ] Test_LoRaPHYUS915.constructor (0 ms)
[ RUN ] Test_LoRaPHYUS915.restore_default_channels
[ OK ] Test_LoRaPHYUS915.restore_default_channels (0 ms)
[ RUN ] Test_LoRaPHYUS915.rx_config
[ OK ] Test_LoRaPHYUS915.rx_config (0 ms)
[ RUN ] Test_LoRaPHYUS915.tx_config
Process 35669 stopped
* thread #1, name = 'lorawan-loraphy-', stop reason = signal SIGILL: privileged instruction
frame #0: 0x0000000000276f73 lorawan-loraphy-us915-unittest`my_radio::time_on_air(this=0x0000000800c2b048, modem=MODEM_LORA, pkt_len='\0') at Test_LoRaPHYUS915.cpp:90:5
87 };
88
89 virtual uint32_t time_on_air(radio_modems_t modem, uint8_t pkt_len)
-> 90 {
91 };
92
93 virtual bool perform_carrier_sense(radio_modems_t modem,
(lldb) disassemble --pc
lorawan-loraphy-us915-unittest`my_radio::time_on_air:
-> 0x276f73 <+67>: ud2
0x276f75: int3
0x276f76: int3
0x276f77: int3
(lldb)
- Remove redundant cmake script as already added the CMake configuration file
- Remove redundant empty_baseline as it is no longer needed with the help of CMake configuration file
This commit introduces changes to fix a missing method, `as_entry`, and traces that were not updated properly to work with this new method.
Prior to this fix, it was not possible to use KVStoreSecurityDb as the build would fail since the `as_entry` method was not declared in the class header file.
This bug was introduced with commit 957486e0eb in PR ARMmbed/mbed-os#14198
Unlike some other cellular modem drivers which use
segmentation, the BG96 driver did not support sending of large
TCP packets, i.e. maximum TCP packet size was restricted to
1400 bytes. This adds segmentation to the send function, so
larger packets can be sent using the TCP socket.
mbedtls_stub uses memset but doesn't add the <string.h> include. This
causes build failures with clang.
Add the include so we can build unit tests using clang.
- Add a new MbedOS project in mbed os root CMake which can be used along with
BUILD_TESTING conditional check for enabling the unittest build
- Update UNITTEST CMake for setting the CMake configuration like c, cxx flags etc.,
- Add if CMAKE_CROSSCOMPILING conditional check wherever target configuration check
and toolchain configuration to avoid such configuration gets included for unittest build.
- Avoid using cmsis headers as it brings more redundant dependency into unittest build and for unittest build, all the required OS flags can provide from mbed rtos types header so replaced cmsis header with mbed os types header
Don't attempt to use default_random_seed unless both PSA and Experimental API
support are enabled. This prevents errors when the Mbed TLS NV Seed feature is
being used on platforms that have PSA enabled by default, but not Experimental
API support by default.
[DEBUG] Output: compilation terminated.
[ERROR] In file included from ./mbed-os/connectivity/mbedtls/include/mbedtls/config.h:31,
from ./mbed-os/connectivity/mbedtls/include/mbedtls/entropy.h:28,
./mbed-os/connectivity/mbedtls/platform/inc/platform_mbed.h:26:10: fatal error: default_random_seed.h: No such file or directory
26 | #include "default_random_seed.h"
Due to a known issue in Mbed TLS's architecture determination
(ARMmbed/mbedtls#1077), we get the error
error: inline assembly requires more registers than available
when compiling `bignum.c` for Cortex-M0/0+/1/M23 which do not have
the macro `__thumb2__` set by the compiler.
The workaround is to define the macro `MULADDC_CANNOT_USE_R7` which
is already defined by Mbed CLI 1 but missing in our CMake support.
FixesARMmbed/mbed-os-example-lorawan#220
mbed-nanostack should depend on mbed-802.15.4-rf to avoid a linker error
with an undefined reference to `NanostackRfPhy::get_default_instance()`.
The error occurs when `device_has: 802_15_4_PHY` is defined and the
consumer depends on mbed-nanostack in their CMakeLists.txt. Previously
we linked mbed-nanostack to mbed-802.15.4-rf, so mbed-802.15.4-rf's
usage requirements weren't forwarded to consumers who depended on
mbed-nanostack.
With the previous configuration, the consumer would have to depend on
mbed-802.15.4-rf directly to avoid an issue. This seems like a layering
violation: it appears that mbed-nanostack is "the API" and
mbed-802.15.4-rf is one of several possible implementations which are
selected based on configuration macros.
This commit changes the flow of dependencies so that mbed-nanostack ends
up with the correct symbol definitions.
Previously WisunBorderRouter start() used NetworkInterface type for mesh interface, although only
WisunInterface type is possible for the call. Added a new overloads of the start with the
WisunInterface as mesh interface type and deprecated the old ones. This makes the calls stricter
about the interface type and safer. It also allows to remove the reinterpret_cast that causes
compiler warning on ARM compiler.
Duplicate status callbacks don't bring any value and can cause
memory leaks if caller calls for this function multiple times with
same status_cb. Also remove all the instances of the status_cb when
removing event listener.
Add mbed_lib.json in the Ambiq target folder of FEATURE_BLE to make sure
the library is excluded in the baremetal build profile unless explicitly
added in `mbed_app.json`.
The CMake target mbed-mbedtls-cryptocell310 was not linked by
default, resulting in a compilation error on targets that use
Mbed TLS:
fatal error: mbedtls_device.h: No such file or directory
Other Mbed TLS drivers simply add themselve to mbed-mbedtls, so this
commits does the alignment to fix the build error.
Note: the driver and the core Mbed TLS have mutual dependency, so
they need to be one CMake target.
* Add traces to GattServerImpl.cpp
* Update BLGS traces
* Add context to BLGS traces
* Set value of TRACE_WRITE_VALUES to 0
* Add param logs to BLGS traces
* Apply changes from code review
* Add trace helper for UUIDs
* C++ string library is not needed
* Update to_string function for UUIDs
The previous implementation had a memory leak and did not format 128-bit UUIDs
* Possibly faster ternary
* Add more context to adding/inserting of services/characteristic
* Add trace to events and event path
* Refactor to_string helper for UUIDs
* Add traces to GapImpl.cpp
* Add helpers and param logs
* Update GapImpl.cpp
* Move helpers to ble_trace_helpers.h
* Add traces to whitelist setter & getter functions
* Prepend parent dir. to ble_trace_helpers.h include line
* Resolve portability issue by using PRI* macro in place of %lu
* Add traces to PalGapImpl.cpp
* Complete PAL GAP traces
* Remove stray include
* Make 'echo' traces in PAL configurable
Some of the tr_info traces at the beginning of PAL functions are duplicates ('echoes') of those in GAP functions. This commit enables including/excluding of these traces in mbed_app.json by writing 1/0, respectively to the MBED_CONF_CORDIO_TRACE_PAL_ECHOES config macro. The default is to exclude 'echo' traces.
* Add missing spaces in tr_info traces
* Clean-up param log for set_extended_advertising_parameters
* Remove "Failed: " from every tr_error trace
* Apply changes from PalGapImpl.cpp review
* Apply changes from GapImpl.cpp review
* Use binary for channel map trace
B0: ADVERTISING_CHANNEL_37
B1: ADVERTISING_CHANNEL_38
B2: ADVERTISING_CHANNEL_39
We're assuming that the user understands the above. This could be documented somewhere.
* Replace more %lu w/PRIu32
* Add tr_info to terminateSync for user call
* Make trace group for PAL traces BLDM
* Remove [PAL] prefix from every PAL trace
* Add trace to setPeripheralPrivacyConfiguration
* Make set scan params tr_info dependent on selected PHY
* Add trace to GAP events
* Other GAP events required traces
* add traces to gatt client
* add files to cmakelists
Co-Authored-By: Vincent Coubard <vincent.coubard@arm.com>
* fixed tracing variable name
Co-Authored-By: Vincent Coubard <vincent.coubard@arm.com>
* add pal tracing
* add more traces for successfull actions
* put write and read as tr_debug in pal
Co-authored-by: Vincent Coubard <vincent.coubard@arm.com>
* ble HCI tracing
* fix typo in SM trace
* add BLE instance tracing
* route wsf traces to mbed tr_debug
* Update connectivity/FEATURE_BLE/source/cordio/source/BLEInstanceBaseImpl.cpp
Co-authored-by: Vincent Coubard <vincent.coubard@arm.com>
* print hci on cordio side
* trace controller supported features
* log reset sequence
* include config for printing enums
* remove duplicate trace
* add tracing to security db
* workaround for macro error on use outside trace
Co-authored-by: Vincent Coubard <vincent.coubard@arm.com>
Add traces to the Bluetooth Security Manager and Privacy controller.
The traces are made to be comprehensive to improve the ux when users submit bugs.
A centralized set of helpers has been created to convert BLE types to string.
* BLE: Add SM traces
* BLE: Add traces to Security Manager PAL
* BLE: Make SM traces consistent.
- Prefix with Connection <id> - when appropriate.
- Display parameters after `:`.
- If multiple parameters should be displayed name then and print the value after =. They are separated by a `,`.
* BLE: Fix SM random number generation.
Only the first 8 bytes were generated from the stack.
* BLE: Regenerate CSRK if it is all zeroes.
* BLE: Add trace into privacy modules
Address resolution is set at the debug level as it is a very common operation and may clutter the output.
* Address trace review for SM:
- Put privacy traces in BLPR
- Add missing traces in PALSecurityManagerImpl.cpp
- Add missing EventHandler null pointer check
- Typo and parameters order fix.
Mbed TLS 2.24.0 has added a new function mbedtls_ecp_write_key()
which is the reverse of the existing mbedtls_ecp_read_key(). This
function should be platform agnostic, but needs to be copied into
Cypress's hardware-accelerated ECP driver as part of the updated
API.
The Mbed TLS importer accidentally imports Makefile and .gitignore
from Mbed TLS's `library/` directory. This commit restricts the
pattern to .h and .c files only, and removes the unnecessary files.
Files have been automatically imported by setting MBED_TLS_RELEASE to
mbedtls-2.24.0 in connectivity/mbedtls/tools/importer/Makefile and
running `make` in that directory.