mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
drivers: periph: pm: introduce new power management API
This commit is contained in:
parent
0194091673
commit
6150e2753a
@ -28,6 +28,8 @@
|
||||
#include "irq.h"
|
||||
#include "log.h"
|
||||
|
||||
#include "periph/pm.h"
|
||||
|
||||
#ifdef MODULE_SCHEDSTATISTICS
|
||||
#include "sched.h"
|
||||
#endif
|
||||
@ -64,6 +66,7 @@ static void *idle_thread(void *arg)
|
||||
(void) arg;
|
||||
|
||||
while (1) {
|
||||
pm_set_lowest();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
58
drivers/include/periph/pm.h
Normal file
58
drivers/include/periph/pm.h
Normal file
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Kaspar Schleiser <kaspar@schleiser.de>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup drivers_periph_pm Power Management
|
||||
* @ingroup drivers_periph
|
||||
* @brief The kernels power management interface
|
||||
* @{
|
||||
*
|
||||
* The following functions *must* be available for every platform:
|
||||
*
|
||||
* pm_reboot()
|
||||
* pm_off()
|
||||
*
|
||||
* @file
|
||||
* @brief Power management interface
|
||||
*
|
||||
* @author Kaspar Schleiser <kaspar@schleiser.de>
|
||||
*/
|
||||
|
||||
#ifndef PM_H_
|
||||
#define PM_H_
|
||||
|
||||
#include "assert.h"
|
||||
#include "periph_cpu.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Reboot MCU
|
||||
*/
|
||||
void pm_reboot(void);
|
||||
|
||||
/**
|
||||
* @brief Turn off MCU completely
|
||||
*/
|
||||
void pm_off(void);
|
||||
|
||||
/**
|
||||
* @brief Switches the MCU to the lowest possible power mode
|
||||
*
|
||||
* This function will be called by the idle thread.
|
||||
*/
|
||||
void pm_set_lowest(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __PM_H_ */
|
||||
/** @} */
|
33
drivers/periph_common/pm.c
Normal file
33
drivers/periph_common/pm.c
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Kaspar Schleiser <kaspar@schleiser.de>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup drivers_periph_pm
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Platform-independent power management fallback code
|
||||
*
|
||||
* @author Kaspar Schleiser <kaspar@schleiser.de>
|
||||
*
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include "irq.h"
|
||||
#include "periph/pm.h"
|
||||
|
||||
#define ENABLE_DEBUG (0)
|
||||
#include "debug.h"
|
||||
|
||||
void __attribute__((weak)) pm_set_lowest(void) {}
|
||||
|
||||
void __attribute__((weak)) pm_off(void)
|
||||
{
|
||||
irq_disable();
|
||||
while(1) {};
|
||||
}
|
Loading…
Reference in New Issue
Block a user