power_manage.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #ifndef __POWER_MANAGE_H_
  2. #define __POWER_MANAGE_H_
  3. #include "generic/typedef.h"
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. enum {
  8. DEVICE_EVENT_POWER_SHUTDOWN = 0x10,
  9. DEVICE_EVENT_POWER_STARTUP,
  10. DEVICE_EVENT_POWER_PERCENT,
  11. DEVICE_EVENT_POWER_CHARGER_IN,
  12. DEVICE_EVENT_POWER_CHARGER_OUT
  13. };
  14. #define PWR_SCAN_TIMES 3
  15. #define PWR_DELAY_INFINITE 0xffffffff
  16. #define PWR_WKUP_PORT "wkup_port"
  17. #define PWR_WKUP_ALARM "wkup_alarm"
  18. #define PWR_WKUP_PWR_ON "wkup_pwr_on"
  19. #define PWR_WKUP_ABNORMAL "wkup_abnormal"
  20. #define PWR_WKUP_SHORT_KEY "wkup_short_key"
  21. struct sys_power_hal_ops {
  22. void (*init)(void);
  23. void (*poweroff)(void *arg);
  24. int (*wakeup_check)(char *reason, int max_len);
  25. int (*port_wakeup_config)(const char *port, int enable);
  26. int (*alarm_wakeup_config)(u32 sec, int enable);
  27. int (*get_battery_voltage)(void);
  28. int (*get_battery_percent)(void);
  29. int (*charger_online)(void);
  30. };
  31. extern const struct sys_power_hal_ops sys_power_hal_ops_begin[];
  32. extern const struct sys_power_hal_ops sys_power_hal_ops_end[];
  33. #define REGISTER_SYS_POWER_HAL_OPS(ops) \
  34. static const struct sys_power_hal_ops ops sec(.sys_power_hal_ops)
  35. void sys_power_early_init();
  36. /*
  37. * @brief 断电关机,不释放资源
  38. */
  39. void sys_power_poweroff(void *arg);
  40. /*
  41. * @brief 软关机,触发DEVICE_EVENT_POWER_SHUTDOWN事件,app捕获事件释放资源再调用sys_power_poweroff()
  42. */
  43. void sys_power_shutdown();
  44. int sys_power_set_port_wakeup(const char *port, int enable);
  45. int sys_power_set_alarm_wakeup(u32 sec, int enable);
  46. const char *sys_power_get_wakeup_reason();
  47. void sys_power_clr_wakeup_reason(const char *str);
  48. int sys_power_get_battery_voltage();
  49. int sys_power_get_battery_persent();
  50. int sys_power_is_charging();
  51. int sys_power_charger_online(void);
  52. /*
  53. * @brief 倒计时自动关机
  54. * @parm dly_secs 延时关机时间,赋值0为永不关机
  55. * @return none
  56. */
  57. void sys_power_auto_shutdown_start(u32 dly_secs);
  58. void sys_power_auto_shutdown_pause();
  59. void sys_power_auto_shutdown_resume();
  60. void sys_power_auto_shutdown_clear();
  61. void sys_power_auto_shutdown_stop();
  62. int sys_power_low_voltage(u32 voltage);
  63. /*
  64. * @brief 低电延时关机
  65. * @parm p_low_percent 低电电量百分比
  66. * @parm dly_secs 延时关机时间,赋值0为立即关机,赋值PWR_DELAY_INFINITE为永不关机
  67. * @return none
  68. */
  69. void sys_power_low_voltage_shutdown(u32 voltage, u32 dly_secs);
  70. /*
  71. * @brief 插拔延时关机
  72. * @parm dly_secs 延时关机时间,赋值0为立即关机,赋值PWR_DELAY_INFINITE为永不关机
  73. * @return none
  74. */
  75. void sys_power_charger_off_shutdown(u32 dly_secs);
  76. #ifdef __cplusplus
  77. }
  78. #endif
  79. #endif