luat_pm.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #ifndef LUAT_PM_H
  2. #define LUAT_PM_H
  3. #include "luat_base.h"
  4. #define LUAT_PM_SLEEP_MODE_NONE 0 //系统处于活跃状态,未采取任何的降低功耗状态
  5. #define LUAT_PM_SLEEP_MODE_IDLE 1 //空闲模式,该模式在系统空闲时停止 CPU 和部分时钟,任意事件或中断均可以唤醒
  6. #define LUAT_PM_SLEEP_MODE_LIGHT 2 //轻度睡眠模式,CPU 停止,多数时钟和外设停止
  7. #define LUAT_PM_SLEEP_MODE_DEEP 3 //深度睡眠模式,CPU 停止,仅少数低功耗外设工作,可被特殊中断唤醒
  8. #define LUAT_PM_SLEEP_MODE_STANDBY 4 //待机模式,CPU 停止,设备上下文丢失(可保存至特殊外设),唤醒后通常复位
  9. //#define LUAT_PM_SLEEP_MODE_SHUTDOWN 5 //关断模式,比 Standby 模式功耗更低, 上下文通常不可恢复, 唤醒后复位
  10. // 开关类
  11. enum
  12. {
  13. LUAT_PM_POWER_USB,
  14. LUAT_PM_POWER_GPS,
  15. LUAT_PM_POWER_GPS_ANT,
  16. LUAT_PM_POWER_CAMERA,
  17. LUAT_PM_POWER_DAC_EN_PIN,
  18. LUAT_PM_POWER_POWERKEY_MODE
  19. };
  20. // 电平类
  21. enum
  22. {
  23. LUAT_PM_IOVLOT_GPIO,
  24. LUAT_PM_IOVLOT_AONGPIO
  25. };
  26. int luat_pm_request(int mode);
  27. int luat_pm_release(int mode);
  28. int luat_pm_dtimer_start(int id, size_t timeout);
  29. int luat_pm_dtimer_stop(int id);
  30. int luat_pm_dtimer_check(int id);
  31. // void luat_pm_cb(int event, int arg, void* args);
  32. int luat_pm_last_state(int *lastState, int *rtcOrPad);
  33. int luat_pm_force(int mode);
  34. int luat_pm_check(void);
  35. int luat_pm_dtimer_list(size_t* count, size_t* list);
  36. int luat_pm_dtimer_wakeup_id(int* id);
  37. int luat_pm_poweroff(void);
  38. int luat_pm_power_ctrl(int id, uint8_t val);
  39. int luat_pm_get_poweron_reason(void);
  40. int luat_pm_iovolt_ctrl(int id, int val);
  41. int luat_pm_wakeup_pin(int pin, int val);
  42. #endif