app_pwr_mgmt.h
Go to the documentation of this file.
1 /**
2 ****************************************************************************************
3 *
4 * @file app_pwr_mgmt.h
5 * @author BLE Driver Team
6 * @brief Header file containing functions prototypes of UART PWR library.
7 *
8 ****************************************************************************************
9 * @attention
10 #####Copyright (c) 2019 GOODIX
11 All rights reserved.
12
13 Redistribution and use in source and binary forms, with or without
14 modification, are permitted provided that the following conditions are met:
15 * Redistributions of source code must retain the above copyright
16 notice, this list of conditions and the following disclaimer.
17 * Redistributions in binary form must reproduce the above copyright
18 notice, this list of conditions and the following disclaimer in the
19 documentation and/or other materials provided with the distribution.
20 * Neither the name of GOODIX nor the names of its contributors may be used
21 to endorse or promote products derived from this software without
22 specific prior written permission.
23
24 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
28 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 POSSIBILITY OF SUCH DAMAGE.
35 ****************************************************************************************
36 */
37
38 /** @addtogroup PERIPHERAL Peripheral Driver
39 * @{
40 */
41
42 /** @addtogroup APP_DRIVER APP DRIVER
43 * @{
44 */
45
46 /** @defgroup APP_PWR_MGMT PWR MGMT
47 * @brief PWR MGMT APP module driver.
48 * @{
49 */
50
51
52 #ifndef _APP_PWR_MGMT_H_
53 #define _APP_PWR_MGMT_H_
54
55 #include "grx_sys.h"
56 #include "app_drv_config.h"
57 #include <stdint.h>
58 #include <stdbool.h>
59
60 /** @addtogroup APP_PWR_DEFINE Defines
61 * @{
62 */
63 /**
64 * @brief PWR MAX value for sleep check
65 */
66 #define APP_SLEEP_CB_MAX PWR_ID_MAX
67 /** @} */
68
69 /** @addtogroup APP_PWR_ENUMERATIONS Enumerations
70 * @{
71 */
72 /**
73 * @brief PWR ID Enumerations definition
74 */
75 typedef enum
76 {
77 DMA_PWR_ID,
78 UART_PWR_ID,
79 I2C_PWR_ID,
80 SPI_PWR_ID,
81 PWM_PWR_ID,
82 TIM_PWR_ID,
83 DUAL_TIM_PWR_ID,
84 ADC_PWR_ID,
85 COMP_PWR_ID,
86 RNG_PWR_ID,
87 #if defined SOC_GR5515 || defined SOC_GR5X25 || defined SOC_GR5526
88 QSPI_PWR_ID,
89 I2S_PWR_ID,
90 PKC_PWR_ID,
91 HMAC_PWR_ID,
92 AES_PWR_ID,
93 #endif
94 #if defined SOC_GR5515 || defined SOC_GR5526
95 ISO7816_PWR_ID,
96 #endif
97 #if defined SOC_GR5X25 || defined SOC_GR5526
98 DSPI_PWR_ID,
99 PDM_PWR_ID,
100 #endif
101 PWR_ID_MAX,
102 } pwr_id_t;
103 /** @} */
104
105 /** @addtogroup APP_PWR_STRUCTURES Structures
106 * @{
107 */
108 /**
109 * @brief PWR sleep check function Structure
110 */
111 typedef struct
112 {
113 bool (*app_prepare_for_sleep)(void); /**< Peripherals prepare sleep fuction. */
114 void (*app_wake_up_ind)(void); /**< Resume peripherals when chip wakeup. */
115 } app_sleep_callbacks_t;
116
117 /** @} */
118
119
120 /* Exported functions --------------------------------------------------------*/
121 /** @addtogroup APP_PWR_DRIVER_FUNCTIONS Functions
122 * @{
123 */
124 /**
125 ****************************************************************************************
126 * @brief Initialize the app power management module
127 ****************************************************************************************
128 */
129 void app_pwr_mgmt_init(void);
130
131 /**
132 ****************************************************************************************
133 * @brief set PWR sleep callback function
134 * @param p_cb : Device check callback function
135 * @param wakeup_priority : Device wakeup priority
136 * @param id : which id want to register
137 *
138 * @return ID
139 ****************************************************************************************
140 */
141 pwr_id_t pwr_register_sleep_cb(const app_sleep_callbacks_t *p_cb, wakeup_priority_t wakeup_priority, pwr_id_t id);
142
143 /**
144 ****************************************************************************************
145 * @brief Unregister PWR sleep callback function
146 * @param id : which id want to unregister
147 ****************************************************************************************
148 */
149 void pwr_unregister_sleep_cb(pwr_id_t id);
150
151 /**
152 ****************************************************************************************
153 * @brief Things to do after waking up.
154 ****************************************************************************************
155 */
156 void pwr_wake_up_ind(void);
157
158 /**
159 ****************************************************************************************
160 * @brief Check peripheral status before going to sleep.
161 ****************************************************************************************
162 */
163 pwr_mgmt_dev_state_t pwr_enter_sleep_check(void);
164 /** @} */
165
166 #endif
167
168 /** @} */
169 /** @} */
170 /** @} */
SPI_PWR_ID
@ SPI_PWR_ID
Definition: app_pwr_mgmt.h:80
ADC_PWR_ID
@ ADC_PWR_ID
Definition: app_pwr_mgmt.h:84
wakeup_priority_t
wakeup_priority_t
APP driver peripheral wakeup priority define.
Definition: app_drv_config.h:189
PWM_PWR_ID
@ PWM_PWR_ID
Definition: app_pwr_mgmt.h:81
pwr_register_sleep_cb
pwr_id_t pwr_register_sleep_cb(const app_sleep_callbacks_t *p_cb, wakeup_priority_t wakeup_priority, pwr_id_t id)
set PWR sleep callback function
UART_PWR_ID
@ UART_PWR_ID
Definition: app_pwr_mgmt.h:78
DMA_PWR_ID
@ DMA_PWR_ID
Definition: app_pwr_mgmt.h:77
pwr_enter_sleep_check
pwr_mgmt_dev_state_t pwr_enter_sleep_check(void)
Check peripheral status before going to sleep.
app_pwr_mgmt_init
void app_pwr_mgmt_init(void)
Initialize the app power management module.
PWR_ID_MAX
@ PWR_ID_MAX
Definition: app_pwr_mgmt.h:101
I2C_PWR_ID
@ I2C_PWR_ID
Definition: app_pwr_mgmt.h:79
pwr_unregister_sleep_cb
void pwr_unregister_sleep_cb(pwr_id_t id)
Unregister PWR sleep callback function.
pwr_wake_up_ind
void pwr_wake_up_ind(void)
Things to do after waking up.
pwr_mgmt_dev_state_t
pwr_mgmt_dev_state_t
power manager device work state.
Definition: gr55xx_pwr.h:115
COMP_PWR_ID
@ COMP_PWR_ID
Definition: app_pwr_mgmt.h:85
TIM_PWR_ID
@ TIM_PWR_ID
Definition: app_pwr_mgmt.h:82
RNG_PWR_ID
@ RNG_PWR_ID
Definition: app_pwr_mgmt.h:86
pwr_id_t
pwr_id_t
PWR ID Enumerations definition.
Definition: app_pwr_mgmt.h:76
grx_sys.h
GR55XX System API.
DUAL_TIM_PWR_ID
@ DUAL_TIM_PWR_ID
Definition: app_pwr_mgmt.h:83
app_drv_config.h
Header file of app driver config code.
app_sleep_callbacks_t
PWR sleep check function Structure.
Definition: app_pwr_mgmt.h:112