Commit Graph

758 Commits (e16f59a2ee138f03b86ab1a3faa19f12ca320b8f)

Author SHA1 Message Date
Lingkai Dong e16f59a2ee timing_mbed.cpp: Check MBEDTLS_TIMING_ALT
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.
2021-06-14 17:48:42 +01:00
Lingkai Dong 17ae051075 mbedtls: Add full platform implementation of timing
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.
2021-06-14 17:29:19 +01:00
Lingkai Dong f96f98e60e mbedtls: Use LowPowerTimer/Timer for timing
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.
2021-06-14 17:25:08 +01:00
Martin Kojtal 2a73d44343
Merge pull request #14750 from tymoteuszblochmobica/size_spi
Increase SPI stack size to 2048 for BlueNrg driver
2021-06-14 10:32:51 +02:00
Martin Kojtal 50e23b75f8
Merge pull request #14765 from rwalton-arm/fix_unittest_check
Fix unittest check
2021-06-14 10:17:17 +02:00
Martin Kojtal 39644781a2
Merge pull request #14748 from AlbanJeantheau-silabs/fix_calculate_ufsi
Correct ufsi timing calculation
2021-06-11 16:11:10 +02:00
Martin Kojtal 530d4beea5
Merge pull request #14734 from jeromecoutant/PR_RFSWITCH
STM32WL LORA: HW specific out of STM32WL_LoRaRadio class
2021-06-11 16:09:48 +02:00
Martin Kojtal 86b85a3e84
Merge pull request #14760 from Patater/tls-timing-alt-fix
mbedtls: Rename Mbed timing implementation
2021-06-11 14:05:33 +02:00
Martin Kojtal df12718139
Merge pull request #14737 from paul-szczepanek-arm/cmake-ble-rebased
BLE: Add cmake unittest fakes for BLE and events
2021-06-11 14:04:47 +02:00
AlbanJeantheau-silabs 3001e52216
Handle timer rollover in calculate_ufsi
Co-authored-by: Jarkko Paso <jarkko.paso@arm.com>
2021-06-11 10:39:16 +02:00
Alban Jeantheau b4b35c6a88 coding style 2021-06-11 10:35:47 +02:00
Robert Walton a0befae2d4 CMake: Only build unit tests if Mbed OS is the current project
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.
2021-06-10 23:34:14 +01:00
Jaeden Amero 87d1992f4f mbedtls: Rename Mbed timing implementation
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
2021-06-10 17:02:28 +01:00
Martin Kojtal aeaac0e70c
Merge pull request #14746 from jeromecoutant/PR_WB15CC
STM32WB: introduce STM32WB15CC NUCLEO
2021-06-10 14:16:10 +02:00
Martin Kojtal 7620120843
Merge pull request #14756 from Patater/tls-timing-alt
mbedtls: Add an alt implementation of timing
2021-06-10 12:11:39 +02:00
Jaeden Amero b8781e527b mbedtls: Add an alt implementation of timing
Implement the MBEDTLS_TIMING_ALT interface for Mbed OS. This
implementation is sufficient to run the Mbed TLS benchmarking
application.
2021-06-09 17:43:18 +01:00
Martin Kojtal 0bbc3e225e
Merge pull request #14740 from chrisswinchatt-arm/fix-netsocket-dynalloc
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.
2021-06-09 16:39:02 +02:00
Martin Kojtal a8fd7b3f0e
Merge pull request #14693 from 16L-YT/master
Fix compilation errors with kvstore - TDB_INTERNAL option to store BLE bonding info
2021-06-09 16:35:56 +02:00
Tymoteusz Bloch 39e821db61 Increase SPI stack size to 2048 for BlueNrg driver
This is needed to avoid stack overflow due numerous calls and allocation.
2021-06-09 15:12:45 +02:00
Martin Kojtal e377383f6d
Merge pull request #14672 from paul-szczepanek-arm/fix-advertising-start
BLE: Fix advertising start and stop
2021-06-09 10:38:34 +02:00
Alban Jeantheau 8187325560 Correct ufsi timing calculation
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.
2021-06-08 16:27:25 +02:00
Paul Szczepanek 2d9a781dd8 fix typos and traces 2021-06-08 09:48:45 +01:00
jeromecoutant 9f0ee46475 STM32WB15xC MCU support 2021-06-07 16:05:41 +02:00
Chris Swinchatt 053eb24ab0 Fix 'netsocket: several dynamic allocation results not checked' (#14210)
Incorporates PR #14223 + changes required for spellchecker
2021-06-07 14:54:37 +01:00
Martin Kojtal 9fbb89e2d1
Merge pull request #14692 from jeromecoutant/PR_WB_HCI
STM32WB: improve FLASH size
2021-06-07 11:18:26 +02:00
Paul Szczepanek 0515408f21 add default BLE roles configuration in case no json present 2021-06-06 11:54:24 +01:00
jeromecoutant 777b2730bd STM32WL LORA: HW specific out of STM32WL_LoRaRadio class 2021-06-03 13:19:32 +02:00
Martin Kojtal be9850be53
Merge pull request #14701 from donatieng/utf-8-check
Add Travis test to make sure text files are UTF-8 encoded
2021-06-02 15:49:14 +02:00
Donatien Garnier decd7d0167 Convert shci.h from (presumably) latin1 encoding to UTF-8 2021-06-02 12:12:34 +01:00
Paul Szczepanek c51dc2f6cc set to pending only after issuing command 2021-06-02 12:06:43 +01:00
Paul Szczepanek b21ee6b0a0 add information about privacy refresh to config option 2021-06-02 12:06:12 +01:00
Paul Szczepanek 8ec7cfd820 start and stop adv sets in batches 2021-06-01 22:38:39 +01:00
Paul Szczepanek 0670470af6 add config for number of pending adv sets starting 2021-06-01 22:38:13 +01:00
Paul Szczepanek 8dedd43e7c add status to start and stop events 2021-06-01 22:37:43 +01:00
Paul Szczepanek e99741dd3d change function names 2021-06-01 15:45:08 +01:00
Martin Kojtal 0738aabb87
Merge pull request #14710 from noonfom/non-low-power-devices
BLE: support non-low power devices
2021-06-01 11:26:21 +02:00
Martin Kojtal da13755a9f
Merge pull request #14699 from jeromecoutant/PR_ASTYLE
STM32 astyle format
2021-06-01 10:02:34 +02:00
Martin Kojtal bfedc39f7c
Merge pull request #14471 from arduino/whd_patch
COMPONENT_WHD: make reusable code available for other targets
2021-05-31 15:49:25 +02:00
Martin Kojtal bc7fc2b2e7
Merge pull request #14708 from Patater/fix-test-function-return
test: Fix function does not return a value warnings
2021-05-31 12:20:00 +02:00
Martin Kojtal a2d62f9597
Merge pull request #14652 from Patater/upgrade-mbedtls-2.25.0
tls: Upgrade to Mbed TLS v2.25.0
2021-05-31 11:36:26 +02:00
Abbas Bracken Ziad 8ee7fb8642 BLE: support non-low power devices 2021-05-27 10:11:05 +01:00
Jaeden Amero 8ce03867c2 test: at: Remove dead code
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];
2021-05-27 09:38:18 +01:00
Jaeden Amero 7f7571657e test: Fix function does not return a value warnings
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)
2021-05-27 09:38:18 +01:00
Rajkumar Kanagaraj 50fc85dc44 CMake: Remove all unittest.cmake script from test suite
- 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
2021-05-26 07:09:14 -07:00
Anna Bridge ef0b31ab53
Merge pull request #14629 from artokin/phy_mode_and_channel_plan_master
Mesh api: Added PHY mode, channel plan IDs and configuration functions
2021-05-25 14:04:32 +01:00
jeromecoutant cfd86882d3 STM32H7 astyle 2021-05-25 14:45:52 +02:00
Anna Bridge 8b1cd98a8e
Merge pull request #14574 from noonfom/string-buffer-length
Fix string buffer length in UUID trace helper
2021-05-25 12:38:06 +01:00
jeromecoutant 645fed5393 STM32WB HCI driver: Add check for code size configuration 2021-05-25 12:06:55 +02:00
Yahya Tawil ae31d20904
Merge branch 'master' into master 2021-05-24 20:04:41 +03:00
Anna Bridge 77927d0c7a
Merge pull request #14684 from AGlass0fMilk/fix-kvstore-security-db
Fix missing `as_entry` method in KVStoreSecurityDb
2021-05-24 13:22:31 +01:00