Kinetis SDK v.1.2 Demo Applications User's Guide  Rev. 0
Freescale Semiconductor, Inc.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
task_lpm.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014, Freescale Semiconductor, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * o Redistributions of source code must retain the above copyright notice, this list
9  * of conditions and the following disclaimer.
10  *
11  * o Redistributions in binary form must reproduce the above copyright notice, this
12  * list of conditions and the following disclaimer in the documentation and/or
13  * other materials provided with the distribution.
14  *
15  * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 #ifndef TASK_LPM_H
31 #define TASK_LPM_H
32 // Includes
35 // Standard C Included Files
36 #include <stdlib.h>
37 #include <stdint.h>
38 #include <stdio.h>
39 
40 // SDK Included Files
41 #include "fsl_adc16_driver.h"
42 // #include "fsl_pdb_driver.h"
43 #include "fsl_clock_manager.h"
44 #include "fsl_pmc_hal.h"
45 #include "board.h"
46 
47 // Project Included Files
48 #include "lpm_rtos.h"
49 #include "adc16_temperature.h"
50 #include "fsl_debug_console.h"
51 #if (defined PM_RTOS_DEMO_RTC_FUNC_INSTANCE)
52 #include "rtc_setup.h"
53 #endif
54 #include "lptmr_setup.h"
55 
57 // Definitions
59 /* Checking return value then print out error message. */
60 #define CHECK_RET_VAL(ret, mode) \
61 if (ret != kPowerManagerSuccess) \
62 { \
63  PRINTF("POWER_SYS_SetMode(%u) returned unexpected status : %u\n\r",mode,ret); \
64 }
65 
67 // Structures & enumerations
69 typedef enum demo_power_modes {
70  kDemoMin = 'A' -1,
71  kDemoRun = 'A', // Normal RUN mode
77 #if FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE
78  kDemoLls,
79 #endif
80 #if FSL_FEATURE_SMC_HAS_STOP_SUBMODE0 & BOARD_SW_HAS_LLWU_PIN
81  kDemoVlls0,
82 #endif
84 #if FSL_FEATURE_SMC_HAS_STOP_SUBMODE2
85  kDemoVlls2,
86 #endif
88 #if FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE
89  kDemoHsRun, // HighSpeed RUN mode
90 #endif
91  kDemoCM0, // Clock Manager Mode configuration 0
92  kDemoCM1, // Clock Manager Mode configuration 1
96 
97 // callback type for power manager user callback data.
98 // each callback message has this variables for counting events
99 typedef struct {
100  uint32_t counter;
101  uint32_t status;
102  uint32_t err;
104 
105 // callback type which is used for power manager user callback
106 typedef struct {
107  callback_data_t before;
108  callback_data_t after;
109  power_manager_notify_t lastType;
110  uint32_t err;
112 
113 typedef enum wakeUpSource
114 {
120 
121 typedef struct lptmrStructure
122 {
123  uint32_t instance;
124  lptmr_user_config_t lptmrUserConfig;
125  lptmr_state_t lptmrState;
127 
129 // Variables
131 
133 
134 /*--------------------------------MODE---------------------------------------*/
135 extern power_manager_user_config_t const vlprConfig;
136 
137 extern power_manager_user_config_t const vlpwConfig;
138 
139 #if FSL_FEATURE_SMC_HAS_STOP_SUBMODE0 & BOARD_SW_HAS_LLWU_PIN
140 extern power_manager_user_config_t const vlls0Config;
141 #endif
142 extern power_manager_user_config_t const vlls1Config;
143 #if FSL_FEATURE_SMC_HAS_STOP_SUBMODE2
144 extern power_manager_user_config_t const vlls2Config;
145 #endif
146 extern power_manager_user_config_t const vlls3Config;
147 #if FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE
148 extern power_manager_user_config_t const llsConfig;
149 #endif
150 extern power_manager_user_config_t const vlpsConfig;
151 extern power_manager_user_config_t const waitConfig;
152 extern power_manager_user_config_t const stopConfig;
153 extern power_manager_user_config_t const runConfig;
154 #if FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE
155 extern power_manager_user_config_t const hsrunConfig;
156 #endif
157 
158 extern power_manager_user_config_t const *powerConfigs[];
159 
160 /*---------------------------------------------------------------------------*/
161 extern power_manager_error_code_t rtos_pm_callback(power_manager_notify_struct_t * notify,
162  power_manager_callback_data_t * dataPtr);
163 
164 extern clock_manager_error_code_t rtos_cm_callback(clock_notify_struct_t *notify,
165  void* callbackData);
166 extern clock_manager_error_code_t dbg_console_cm_callback(clock_notify_struct_t *notify,
167  void* callbackData);
168 extern power_manager_error_code_t adc16_pm_callback(power_manager_notify_struct_t * notify,
169  power_manager_callback_data_t * dataPtr);
170 
171 extern clock_manager_error_code_t adc16_cm_callback(clock_notify_struct_t * notify, void* callbackData);
172 
173 extern clock_manager_callback_user_config_t dbg_console_cm_callback_data;
174 
175 extern clock_manager_callback_user_config_t rtos_cm_callback_data;
176 
177 extern clock_manager_callback_user_config_t adc16_cm_callback_data;
178 
179 extern clock_manager_callback_user_config_t *cm_callback_tbl[];
180 
181 extern power_manager_callback_user_config_t const adc16_pm_callback_data;
182 
183 extern power_manager_callback_user_config_t const rtos_pm_callback_data;
184 
185 extern power_manager_callback_user_config_t *pm_callback_tbl[];
186 
187 extern size_t const cm_callback_tbl_size;
188 extern size_t const powerConfigsSize;
189 extern size_t const pm_callback_tbl_size;
190 
192 // Prototypes
194 
195 /* LLW_IRQHandler that would cover the same name's APIs in startup code */
196 void MODULE_IRQ_HANDLER(LLWU)(void);
204 void cmdAlarm(wakeUpSource_t wus, uint8_t offsetSec);
205 
210 
215 
219 void setWakeUpSource(wakeUpSource_t wus,char *textMode);
220 
224 void BOARD_SW_LLWU_IRQ_HANDLER(void);
225 
229 uint8_t setWakeUpTimeOut(wakeUpSource_t wus);
230 
240 
241 #if FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE
242 
245 void llwuDisableWakeUp(void);
246 #endif
247 
251 void gpioDisableWakeUp(void);
252 
256 void gpioEnableWakeUp(void);
257 
261 void displayPowerMode(void);
262 
266 void updateClockManagerToRunMode(uint8_t cmConfigMode);
267 
271 void updateClockManagerToVlprMode(uint8_t cmConfigMode);
272 
273 #if FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE
274 
277 void updateClockManagerToHsRunMode(uint8_t cmConfigMode);
278 #endif
279 
283 void updateClockMode(uint8_t cmConfigMode);
284 
288 void delay(uint32_t delay_time);
289 
293 void task_lpm(task_param_t param);
294 
295 #endif
296 
298 // EOF
Definition: demo_apps/power_manager_hal_demo/main.c:106
clock_manager_error_code_t rtos_cm_callback(clock_notify_struct_t *notify, void *callbackData)
Definition: rtos_lpm_callback.c:77
power_manager_user_config_t const vlpwConfig
Definition: register_callback.c:72
uint8_t selectWakeUpSource(demo_power_modes_t mode)
Get the wakeup source choice from user.
Definition: demo_apps/power_manager_hal_demo/main.c:362
power_manager_user_config_t const * powerConfigs[]
Definition: register_callback.c:168
clock_manager_callback_user_config_t dbg_console_cm_callback_data
power_manager_user_config_t const vlls1Config
Definition: register_callback.c:90
power_manager_callback_user_config_t * pm_callback_tbl[]
Definition: register_callback.c:227
void printWakeUpSourceText(void)
Print on debug console the available wakeup source memu.
Definition: demo_apps/power_manager_hal_demo/main.c:344
Definition: demo_apps/power_manager_hal_demo/main.c:93
void updateClockMode(uint8_t cmConfigMode)
Update clock to compatible with RUN mode.
Definition: task_lpm.c:425
Definition: demo_apps/power_manager_hal_demo/main.c:77
demo_power_modes_t
Definition: demo_apps/power_manager_hal_demo/main.c:70
Definition: task_lpm.h:118
power_manager_user_config_t const vlls3Config
Definition: register_callback.c:108
void cmdAlarm(wakeUpSource_t wus, uint8_t offsetSec)
set alarm command.
Definition: task_lpm.c:90
lptmr_state_t lptmrState
Definition: task_lpm.h:125
void updateClockManagerToVlprMode(uint8_t cmConfigMode)
update clock manager to vlpr mode.
Definition: demo_apps/power_manager_hal_demo/main.c:524
Definition: demo_apps/power_manager_hal_demo/main.c:88
clock_manager_callback_user_config_t * cm_callback_tbl[]
Definition: register_callback.c:207
power_manager_user_config_t const runConfig
Definition: register_callback.c:157
Definition: demo_apps/power_manager_hal_demo/main.c:92
Definition: demo_apps/power_manager_hal_demo/main.c:71
Definition: demo_apps/power_manager_hal_demo/main.c:99
Definition: task_lpm.h:116
#define MODULE_IRQ_HANDLER(module)
Definition: lpm_rtos.h:78
Definition: demo_apps/power_manager_hal_demo/main.c:76
lptmrStructure_t cmCallbackData
Definition: register_callback.c:56
void updateClockManagerToRunMode(uint8_t cmConfigMode)
update clock manager to run mode.
Definition: demo_apps/power_manager_hal_demo/main.c:514
power_manager_callback_user_config_t const rtos_pm_callback_data
power_manager_user_config_t const vlprConfig
Definition: register_callback.c:63
lptmr_user_config_t lptmrUserConfig
Definition: task_lpm.h:124
Definition: demo_apps/power_manager_hal_demo/main.c:73
void MODULE_IRQ_HANDLER() LLWU(void)
Definition: task_lpm.c:147
power_manager_error_code_t adc16_pm_callback(power_manager_notify_struct_t *notify, power_manager_callback_data_t *dataPtr)
Definition: adc16_lpm_callback.c:41
Definition: task_lpm.h:121
power_manager_user_config_t const waitConfig
Definition: register_callback.c:141
size_t const cm_callback_tbl_size
Definition: register_callback.c:233
clock_manager_error_code_t dbg_console_cm_callback(clock_notify_struct_t *notify, void *callbackData)
Definition: debug_console_lpm_callback.c:41
power_manager_user_config_t const vlpsConfig
Definition: register_callback.c:133
power_manager_error_code_t rtos_pm_callback(power_manager_notify_struct_t *notify, power_manager_callback_data_t *dataPtr)
Definition: rtos_lpm_callback.c:138
void displayPowerMode(void)
display current power mode.
Definition: demo_apps/power_manager_hal_demo/main.c:490
Definition: demo_apps/power_manager_hal_demo/main.c:74
Definition: demo_apps/power_manager_hal_demo/main.c:72
wakeUpSource_t
Definition: task_lpm.h:113
clock_manager_callback_user_config_t rtos_cm_callback_data
Definition: demo_apps/power_manager_hal_demo/main.c:94
size_t const pm_callback_tbl_size
Definition: register_callback.c:235
power_manager_user_config_t const stopConfig
Definition: register_callback.c:149
size_t const powerConfigsSize
Definition: register_callback.c:234
void gpioEnableWakeUp(void)
set gpio switch as wakeup source.
Definition: demo_apps/power_manager_hal_demo/main.c:452
wakeUpSource_t getWakeupSource(uint8_t val, demo_power_modes_t mode)
get wake up source from given character.
Definition: task_lpm.c:107
Definition: task_lpm.h:115
uint8_t setWakeUpTimeOut(wakeUpSource_t wus)
set timeout for timer module.
Definition: task_lpm.c:178
void gpioDisableWakeUp(void)
disable gpio switch.
Definition: demo_apps/power_manager_hal_demo/main.c:440
Definition: demo_apps/power_manager_hal_demo/main.c:84
Definition: demo_apps/power_manager_hal_demo/main.c:75
clock_manager_callback_user_config_t adc16_cm_callback_data
void task_lpm(task_param_t param)
Definition: task_lpm.c:454
void BOARD_SW_LLWU_IRQ_HANDLER(void)
IRQ handler for switch/button.
Definition: demo_apps/power_manager_hal_demo/main.c:256
clock_manager_error_code_t adc16_cm_callback(clock_notify_struct_t *notify, void *callbackData)
Definition: task_lpm.h:93
Definition: task_lpm.h:117
void delay(uint32_t delay_time)
Definition: task_lpm.c:445
power_manager_callback_user_config_t const adc16_pm_callback_data
void setWakeUpSource(uint8_t source, char *textMode)
Definition: demo_apps/power_manager_hal_demo/main.c:464
uint32_t instance
Definition: task_lpm.h:123