1
0
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:
Kaspar Schleiser 2017-01-09 17:10:58 +01:00
parent 0194091673
commit 6150e2753a
3 changed files with 94 additions and 0 deletions

View File

@ -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;

View 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_ */
/** @} */

View 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) {};
}