Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/Continuous-Integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ jobs:
# First of all, clone the repo using the checkout action.
- name: Checkout
uses: actions/checkout@main
with:
submodules: true

- name: Compilation
id: Compile
Expand Down
31 changes: 31 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# v3.21 implemented semantic changes regarding $<TARGET_OBJECTS:...>
# See https://cmake.org/cmake/help/v3.21/command/target_link_libraries.html#linking-object-libraries-via-target-objects
cmake_minimum_required(VERSION 3.21)

add_library(STM32LowPower INTERFACE)
add_library(STM32LowPower_usage INTERFACE)

target_include_directories(STM32LowPower_usage INTERFACE
src
)


target_link_libraries(STM32LowPower_usage INTERFACE
base_config
)

target_link_libraries(STM32LowPower INTERFACE STM32LowPower_usage)



add_library(STM32LowPower_bin OBJECT EXCLUDE_FROM_ALL
src/low_power.c
src/STM32LowPower.cpp
)
target_link_libraries(STM32LowPower_bin PUBLIC STM32LowPower_usage)

target_link_libraries(STM32LowPower INTERFACE
STM32LowPower_bin
$<TARGET_OBJECTS:STM32LowPower_bin>
)

6 changes: 3 additions & 3 deletions src/STM32LowPower.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ void STM32LowPower::shutdown(uint32_t ms)
* In case of SHUTDOWN_MODE only, Wakeup pin capability is activated
* @retval None
*/
void STM32LowPower::attachInterruptWakeup(uint32_t pin, voidFuncPtrVoid callback, uint32_t mode, LP_Mode LowPowerMode)
void STM32LowPower::attachInterruptWakeup(pin_size_t pin, voidFuncPtr callback, PinStatus mode, LP_Mode LowPowerMode)
{
attachInterrupt(pin, callback, mode);

Expand All @@ -166,7 +166,7 @@ void STM32LowPower::attachInterruptWakeup(uint32_t pin, voidFuncPtrVoid callback
* mode.
* @retval None
*/
void STM32LowPower::enableWakeupFrom(HardwareSerial *serial, voidFuncPtrVoid callback)
void STM32LowPower::enableWakeupFrom(HardwareSerial *serial, voidFuncPtr callback)
{
if (serial != NULL) {
_serial = &(serial->_serial);
Expand All @@ -184,7 +184,7 @@ void STM32LowPower::enableWakeupFrom(HardwareSerial *serial, voidFuncPtrVoid cal
* @param data: optional pointer to callback data parameters (default NULL).
* @retval None
*/
void STM32LowPower::enableWakeupFrom(STM32RTC *rtc, voidFuncPtr callback, void *data)
void STM32LowPower::enableWakeupFrom(STM32RTC *rtc, voidFuncPtrParam callback, void *data)
{
if (rtc == NULL) {
rtc = &(STM32RTC::getInstance());
Expand Down
7 changes: 3 additions & 4 deletions src/STM32LowPower.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ enum LP_Mode : uint8_t {
SHUTDOWN_MODE
};

typedef void (*voidFuncPtrVoid)(void) ;

class STM32LowPower {
public:
Expand Down Expand Up @@ -89,10 +88,10 @@ class STM32LowPower {
shutdown((uint32_t)ms);
}
#endif
void attachInterruptWakeup(uint32_t pin, voidFuncPtrVoid callback, uint32_t mode, LP_Mode LowPowerMode = SHUTDOWN_MODE);
void attachInterruptWakeup(pin_size_t pin, voidFuncPtr callback, PinStatus mode, LP_Mode LowPowerMode = SHUTDOWN_MODE);

void enableWakeupFrom(HardwareSerial *serial, voidFuncPtrVoid callback);
void enableWakeupFrom(STM32RTC *rtc, voidFuncPtr callback, void *data = NULL);
void enableWakeupFrom(HardwareSerial *serial, voidFuncPtr callback);
void enableWakeupFrom(STM32RTC *rtc, voidFuncPtrParam callback, void *data = NULL);

private:
bool _configured; // Low Power mode initialization status
Expand Down
9 changes: 4 additions & 5 deletions src/low_power.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
******************************************************************************
*/

#include "Arduino.h"
#include "low_power.h"
#include "stm32yyxx_ll_cortex.h"
#include "stm32yyxx_ll_pwr.h"
Expand Down Expand Up @@ -202,7 +201,7 @@ void LowPower_init()
* @param mode: pin mode (edge or state). The configuration have to be compatible.
* @retval None
*/
void LowPower_EnableWakeUpPin(uint32_t pin, uint32_t mode)
void LowPower_EnableWakeUpPin(pin_size_t pin, PinStatus mode)
{
PinName p = digitalPinToPinName(pin);
#if defined(PWR_WAKEUP_SELECT_0) || defined(PWR_WAKEUP1_SOURCE_SELECTION_0)
Expand Down Expand Up @@ -975,10 +974,10 @@ void LowPower_shutdown(bool isRTC)
* with which low power mode the UART is compatible.
* Warning This function will change UART clock source to HSI
* @param serial: pointer to serial
* @param FuncPtr: pointer to callback
* @param callback: pointer to callback
* @retval None
*/
void LowPower_EnableWakeUpUart(serial_t *serial, void (*FuncPtr)(void))
void LowPower_EnableWakeUpUart(serial_t *serial, voidFuncPtr callback)
{
#if defined(UART_WKUP_SUPPORT)
#ifdef IS_UART_WAKEUP_SELECTION
Expand Down Expand Up @@ -1009,7 +1008,7 @@ void LowPower_EnableWakeUpUart(serial_t *serial, void (*FuncPtr)(void))
UNUSED(serial);
#endif
/* Save callback */
WakeUpUartCb = FuncPtr;
WakeUpUartCb = callback;
}

/**
Expand Down
5 changes: 3 additions & 2 deletions src/low_power.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
/* Includes ------------------------------------------------------------------*/
#include "stm32_def.h"
#include "uart.h"
#include "Arduino.h"

#if defined(HAL_PWR_MODULE_ENABLED) && !defined(HAL_PWR_MODULE_ONLY)

Expand All @@ -53,8 +54,8 @@ extern "C" {
/* Exported functions ------------------------------------------------------- */

void LowPower_init();
void LowPower_EnableWakeUpPin(uint32_t pin, uint32_t mode);
void LowPower_EnableWakeUpUart(serial_t *serial, void (*FuncPtr)(void));
void LowPower_EnableWakeUpPin(pin_size_t pin, PinStatus mode);
void LowPower_EnableWakeUpUart(serial_t *serial, voidFuncPtr callback);
void LowPower_sleep(uint32_t regulator);
void LowPower_stop(serial_t *obj);
void LowPower_standby();
Expand Down
Loading