2017-04-04 21:31:06 +02:00
|
|
|
#ifndef __FPM_SLEEP_H__
|
|
|
|
#define __FPM_SLEEP_H__
|
|
|
|
#include "user_interface.h"
|
2019-07-23 06:22:38 +02:00
|
|
|
#include <stdint.h>
|
2017-04-04 21:31:06 +02:00
|
|
|
#include "lauxlib.h"
|
|
|
|
#include "gpio.h"
|
|
|
|
#include "platform.h"
|
|
|
|
#include "task/task.h"
|
2019-07-21 23:58:21 +02:00
|
|
|
#include <string.h>
|
2017-04-04 21:31:06 +02:00
|
|
|
|
|
|
|
#if defined(DEVELOP_VERSION)
|
|
|
|
#define PMSLEEP_DEBUG
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(PMSLEEP_DEBUG)
|
|
|
|
#define PMSLEEP_DBG(fmt, ...) dbg_printf("\tPMSLEEP(%s):"fmt"\n", __FUNCTION__, ##__VA_ARGS__)
|
|
|
|
#else
|
|
|
|
#define PMSLEEP_DBG(...) //c_printf(__VA_ARGS__)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(NODE_ERROR)
|
|
|
|
#define PMSLEEP_ERR(fmt, ...) NODE_ERR("%s"fmt"\n", "PMSLEEP:", ##__VA_ARGS__)
|
|
|
|
#else
|
|
|
|
#define PMSLEEP_ERR(...)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define PMSLEEP_SLEEP_MIN_TIME 50000
|
|
|
|
#define PMSLEEP_SLEEP_MAX_TIME 268435454 //FPM_MAX_SLEEP_TIME-1
|
|
|
|
#define pmSleep_INIT_CFG(X) pmSleep_param_t X = {.sleep_duration=0, .wake_pin=255, \
|
|
|
|
.preserve_opmode=TRUE, .suspend_cb_ptr=NULL, .resume_cb_ptr=NULL}
|
|
|
|
|
|
|
|
#define PMSLEEP_INT_MAP \
|
2019-05-08 13:08:20 +02:00
|
|
|
LROT_NUMENTRY( INT_BOTH, GPIO_PIN_INTR_ANYEDGE ) \
|
|
|
|
LROT_NUMENTRY( INT_UP, GPIO_PIN_INTR_POSEDGE ) \
|
|
|
|
LROT_NUMENTRY( INT_DOWN, GPIO_PIN_INTR_NEGEDGE ) \
|
|
|
|
LROT_NUMENTRY( INT_HIGH, GPIO_PIN_INTR_HILEVEL ) \
|
|
|
|
LROT_NUMENTRY( INT_LOW, GPIO_PIN_INTR_LOLEVEL )
|
2017-04-04 21:31:06 +02:00
|
|
|
|
|
|
|
typedef struct pmSleep_param{
|
|
|
|
uint32 sleep_duration;
|
|
|
|
uint8 sleep_mode;
|
|
|
|
uint8 wake_pin;
|
|
|
|
uint8 int_type;
|
|
|
|
bool preserve_opmode;
|
|
|
|
void (*suspend_cb_ptr)(void);
|
|
|
|
void (*resume_cb_ptr)(void);
|
|
|
|
}pmSleep_param_t; //structure to hold pmSleep configuration
|
|
|
|
|
|
|
|
|
|
|
|
enum PMSLEEP_STATE{
|
|
|
|
PMSLEEP_AWAKE = 0,
|
|
|
|
PMSLEEP_SUSPENSION_PENDING = 1,
|
|
|
|
PMSLEEP_SUSPENDED = 2
|
|
|
|
};
|
|
|
|
|
|
|
|
uint8 pmSleep_get_state(void);
|
|
|
|
void pmSleep_resume(void (*resume_cb_ptr)(void));
|
|
|
|
void pmSleep_suspend(pmSleep_param_t *param);
|
|
|
|
void pmSleep_execute_lua_cb(int* cb_ref);
|
|
|
|
int pmSleep_parse_table_lua( lua_State* L, int table_idx, pmSleep_param_t *cfg, int *suspend_lua_cb_ref, int *resume_lua_cb_ref);
|
|
|
|
|
|
|
|
|
|
|
|
#endif // __FPM_SLEEP_H__
|