97 lines
2.4 KiB
C
97 lines
2.4 KiB
C
/*
|
|
* Copyright (c) XMEDIA. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __XMEDIA_PM_H__
|
|
#define __XMEDIA_PM_H__
|
|
|
|
#include <stdbool.h>
|
|
#include "xmedia_type.h"
|
|
#include "xmedia_errcode.h"
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#endif
|
|
|
|
/*
|
|
* xmedia_pm_init接口的输入参数,初始化类型
|
|
* PM_INIT_TYPE_NORMAL:初始化pm模块,不使能str待机功能.
|
|
* PM_INIT_TYPE_STR: 初始化pm模块,并使能str待机功能.
|
|
*
|
|
* 注意: str 待机功能依赖rtc功能.
|
|
* 如果不支持rtc功能,str待机功能也不支持,不能使用PM_INIT_TYPE_STR参数 !!!
|
|
*/
|
|
typedef enum {
|
|
PM_INIT_TYPE_NORMAL = 0,
|
|
PM_INIT_TYPE_STR,
|
|
PM_INIT_TYPE_MAX,
|
|
} xmedia_pm_init_type;
|
|
|
|
typedef struct {
|
|
xmedia_pm_init_type type;
|
|
} xmedia_pm_init_param;
|
|
|
|
typedef enum {
|
|
PM_WKMODE_WAKEUP = 0,
|
|
PM_WKMODE_STARTUP,
|
|
PM_WKMODE_BUTTON,
|
|
PM_WKMODE_RTC,
|
|
PM_WKMODE_MAX,
|
|
} xmedia_pm_wakeup_source;
|
|
|
|
typedef enum {
|
|
PMC_PWR_RISING_EDGE = 0,
|
|
PMC_PWR_FALLING_EDGE,
|
|
PMC_PWR_HIGH_LEVEL,
|
|
PMC_PWR_LOW_LEVEL,
|
|
PMC_PWR_MAX,
|
|
} xmedia_pm_wakeup_polarity;
|
|
|
|
typedef struct {
|
|
xmedia_bool rtc_enable; // 1:表示使能
|
|
xmedia_u32 rtc_timeout; // 单位为10ms
|
|
} xmedia_pm_rtc_attr;
|
|
|
|
typedef struct {
|
|
xmedia_u64 rtc_delta_time; // 单位为1ms
|
|
xmedia_u64 rtc_current_time;
|
|
xmedia_u64 rtc_last_suspend_time;
|
|
} xmedia_pm_rtc_info;
|
|
|
|
typedef struct {
|
|
xmedia_bool wakeup_enable; // 1:表示使能
|
|
xmedia_pm_wakeup_polarity wakeup_polarity; //上升沿、下降沿、高电平和低电平触发
|
|
} xmedia_pm_wakeup_attr;
|
|
|
|
|
|
typedef struct {
|
|
xmedia_bool button_adj_enable; //1:表示使能
|
|
xmedia_u32 button_adj_time; //button触发时间,精度100ms
|
|
}xmedia_pm_button_attr;
|
|
|
|
typedef struct {
|
|
xmedia_pm_wakeup_attr wakeup_attr;
|
|
xmedia_bool startup_enable;
|
|
xmedia_bool button_enable;
|
|
xmedia_pm_button_attr button_attr;
|
|
xmedia_pm_rtc_attr rtc_attr;
|
|
} xmedia_pm_attr;
|
|
|
|
xmedia_s32 xmedia_pm_init(xmedia_void);
|
|
xmedia_s32 xmedia_pm_init_ext(xmedia_pm_init_param *param);
|
|
xmedia_s32 xmedia_pm_deinit(xmedia_void);
|
|
xmedia_s32 xmedia_pm_get_wakeup_source(xmedia_pm_wakeup_source *source);
|
|
xmedia_s32 xmedia_pm_get_attr(xmedia_pm_attr *attr);
|
|
xmedia_s32 xmedia_pm_set_attr(xmedia_pm_attr *attr);
|
|
xmedia_s32 xmedia_pm_get_rtc_info(xmedia_pm_rtc_info *rtc_info);
|
|
xmedia_s32 xmedia_pm_suspend(xmedia_void);
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
#endif
|