Skip to content

Commit

Permalink
mbed-ce@master + fixes + gcc 11 support (ARMmbed#135)
Browse files Browse the repository at this point in the history
* Fix rtos::Mutex stub, add trylock() method

* LowPowerTicker - Add ::attach(...) method + call callback

* mbed_power_management - rename sleep --> mbed_sleep to avoid conflicts

Fixes conflicts w/ unistd.h and boost::ut

* GCC 11/C++ 20 - Remove deprecated type_traits

* GCC 11/C++ 20 - Remove redundant templating of methods

* Warning - pragma ignore invalid-noreturn for unit tests

* Fix astyle errors

* Fix missing mbed_sleep() calls
  • Loading branch information
ladislas authored Feb 21, 2023
1 parent eda766e commit 3176fc7
Show file tree
Hide file tree
Showing 12 changed files with 33 additions and 25 deletions.
2 changes: 1 addition & 1 deletion cmsis/device/rtos/source/mbed_rtx_idle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ extern "C" {
// critical section to complete sleep with locked deepsleep
core_util_critical_section_enter();
sleep_manager_lock_deep_sleep();
sleep();
mbed_sleep();
sleep_manager_unlock_deep_sleep();
core_util_critical_section_exit();
}
Expand Down
12 changes: 6 additions & 6 deletions connectivity/FEATURE_BLE/include/ble/gatt/GattCharacteristic.h
Original file line number Diff line number Diff line change
Expand Up @@ -1915,7 +1915,7 @@ class ReadOnlyGattCharacteristic : public GattCharacteristic {
* attribute value that equals sizeof(T). For a variable length alternative,
* use GattCharacteristic directly.
*/
ReadOnlyGattCharacteristic<T>(
ReadOnlyGattCharacteristic(
const UUID &uuid,
T *valuePtr,
uint8_t additionalProperties = BLE_GATT_CHAR_PROPERTIES_NONE,
Expand Down Expand Up @@ -1958,7 +1958,7 @@ class WriteOnlyGattCharacteristic : public GattCharacteristic {
* attribute value with maximum size equal to sizeof(T). For a fixed length
* alternative, use GattCharacteristic directly.
*/
WriteOnlyGattCharacteristic<T>(
WriteOnlyGattCharacteristic(
const UUID &uuid,
T *valuePtr,
uint8_t additionalProperties = BLE_GATT_CHAR_PROPERTIES_NONE,
Expand Down Expand Up @@ -2000,7 +2000,7 @@ class ReadWriteGattCharacteristic : public GattCharacteristic {
* attribute value with maximum size equal to sizeof(T). For a fixed length
* alternative, use GattCharacteristic directly.
*/
ReadWriteGattCharacteristic<T>(
ReadWriteGattCharacteristic(
const UUID &uuid,
T *valuePtr,
uint8_t additionalProperties = BLE_GATT_CHAR_PROPERTIES_NONE,
Expand Down Expand Up @@ -2043,7 +2043,7 @@ class WriteOnlyArrayGattCharacteristic : public GattCharacteristic {
* attribute value with maximum size equal to sizeof(T) * NUM_ELEMENTS.
* For a fixed length alternative, use GattCharacteristic directly.
*/
WriteOnlyArrayGattCharacteristic<T, NUM_ELEMENTS>(
WriteOnlyArrayGattCharacteristic(
const UUID &uuid,
T valuePtr[NUM_ELEMENTS],
uint8_t additionalProperties = BLE_GATT_CHAR_PROPERTIES_NONE,
Expand Down Expand Up @@ -2087,7 +2087,7 @@ class ReadOnlyArrayGattCharacteristic : public GattCharacteristic {
* attribute value that equals sizeof(T) * NUM_ELEMENTS. For a variable
* length alternative, use GattCharacteristic directly.
*/
ReadOnlyArrayGattCharacteristic<T, NUM_ELEMENTS>(
ReadOnlyArrayGattCharacteristic(
const UUID &uuid,
T valuePtr[NUM_ELEMENTS],
uint8_t additionalProperties = BLE_GATT_CHAR_PROPERTIES_NONE,
Expand Down Expand Up @@ -2132,7 +2132,7 @@ class ReadWriteArrayGattCharacteristic : public GattCharacteristic {
* attribute value with maximum size equal to sizeof(T) * NUM_ELEMENTS.
* For a fixed length alternative, use GattCharacteristic directly.
*/
ReadWriteArrayGattCharacteristic<T, NUM_ELEMENTS>(
ReadWriteArrayGattCharacteristic(
const UUID &uuid,
T valuePtr[NUM_ELEMENTS],
uint8_t additionalProperties = BLE_GATT_CHAR_PROPERTIES_NONE,
Expand Down
16 changes: 10 additions & 6 deletions drivers/tests/UNITTESTS/doubles/drivers/LowPowerTicker.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
#ifndef MBED_LOWPOWERTICKER_H
#define MBED_LOWPOWERTICKER_H

#include <chrono>

#include "hal/ticker_api.h"
#include "Callback.h"

Expand All @@ -28,21 +30,23 @@ namespace mbed {
class LowPowerTicker {

public:
LowPowerTicker()
{
}
LowPowerTicker() = default;

virtual ~LowPowerTicker() = default;

virtual ~LowPowerTicker()
void attach(Callback<void()> func, std::chrono::microseconds t)
{
func();
}

void attach_us(Callback<void()> func, us_timestamp_t t)
{

func();
}

void detach()
{

// nothing to do
}
};

Expand Down
2 changes: 1 addition & 1 deletion events/source/equeue_mbed.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ bool equeue_sema_wait(equeue_sema_t *s, int ms)

core_util_critical_section_enter();
while (!*s && ms != 0) {
sleep();
mbed_sleep();
core_util_critical_section_exit();
__ISB();
core_util_critical_section_enter();
Expand Down
2 changes: 1 addition & 1 deletion hal/tests/TESTS/mbed_hal/lp_ticker/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ void lp_ticker_deepsleep_test()
TEST_ASSERT_TRUE(sleep_manager_can_deep_sleep_test_check());

while (!intFlag) {
sleep();
mbed_sleep();
}

TEST_ASSERT_EQUAL(1, intFlag);
Expand Down
2 changes: 1 addition & 1 deletion hal/tests/TESTS/mbed_hal/rtc/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ void rtc_sleep_test_support(bool deepsleep_mode)
TEST_ASSERT(sleep_manager_can_deep_sleep_test_check() == deepsleep_mode);

while (!expired) {
sleep();
mbed_sleep();
}

const auto stop = RealTimeClock::now();
Expand Down
8 changes: 4 additions & 4 deletions hal/tests/TESTS/mbed_hal/sleep/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ void sleep_usticker_test()

us_ticker_set_interrupt(next_match_timestamp);

sleep();
mbed_sleep();

const unsigned int wakeup_timestamp = us_ticker_read();

Expand Down Expand Up @@ -130,7 +130,7 @@ void deepsleep_lpticker_test()
Since this interrupt wakes-up the board from the sleep we need to go to sleep after CMPOK is handled. */
TEST_ASSERT_TRUE(sleep_manager_can_deep_sleep_test_check());

sleep();
mbed_sleep();

/* On some targets like STM family boards with LPTIM enabled an interrupt is triggered on counter rollover.
We need special handling for cases when next_match_timestamp < start_timestamp (interrupt is to be fired after rollover).
Expand All @@ -140,7 +140,7 @@ void deepsleep_lpticker_test()
if ((next_match_timestamp < start_timestamp) && lp_ticker_read() < next_match_timestamp) {
lp_ticker_set_interrupt(next_match_timestamp);
wait_ns(200000);
sleep();
mbed_sleep();
}
#endif

Expand Down Expand Up @@ -182,7 +182,7 @@ void deepsleep_high_speed_clocks_turned_off_test()

const unsigned int us_ticks_before_sleep = us_ticker_read();

sleep();
mbed_sleep();

const unsigned int us_ticks_after_sleep = us_ticker_read();
const unsigned int lp_ticks_after_sleep = lp_ticker_read();
Expand Down
3 changes: 0 additions & 3 deletions platform/cxxsupport/mstd_type_traits
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,6 @@ using std::is_trivial;
using std::is_trivially_copyable;
using std::is_standard_layout;
using std::is_pod;
using std::is_literal_type;
using std::is_empty;
using std::is_polymorphic;
using std::is_abstract;
Expand Down Expand Up @@ -274,8 +273,6 @@ using std::decay;
using std::decay_t;
using std::common_type;
using std::common_type_t;
using std::result_of;
using std::result_of_t;

/* C++20 remove_cvref */
template <typename T>
Expand Down
2 changes: 1 addition & 1 deletion platform/include/platform/mbed_power_mgmt.h
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ void sleep_manager_sleep_auto(void);
* Flash re-programming and the USB serial port will remain active, but the mbed program will no longer be
* able to access the LocalFileSystem
*/
static inline void sleep(void)
static inline void mbed_sleep(void)
{
#if DEVICE_SLEEP
#if (MBED_CONF_RTOS_PRESENT == 0) || (DEVICE_SYSTICK_CLK_OFF_DURING_SLEEP == 0) || defined(MBED_TICKLESS)
Expand Down
2 changes: 1 addition & 1 deletion platform/source/mbed_os_timer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ void do_sleep_operation(OpT &op)
// we go round to set the timer again.
if (op.sleep_prepared()) {
// Enter HAL sleep (normal or deep)
sleep();
mbed_sleep();
}
}

Expand Down
2 changes: 2 additions & 0 deletions platform/tests/UNITTESTS/doubles/mbed_assert_stub.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
#include <stdio.h>
#include <stdbool.h>

#pragma GCC diagnostic ignored "-Winvalid-noreturn"

bool mbed_assert_throw_errors = false;

extern "C" void mbed_assert_internal(const char *expr, const char *file, int line)
Expand Down
5 changes: 5 additions & 0 deletions rtos/tests/UNITTESTS/doubles/Mutex_stub.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,8 @@ osStatus rtos::Mutex::unlock()
{
return osOK;
}

bool rtos::Mutex::trylock()
{
return true;
}

0 comments on commit 3176fc7

Please sign in to comment.