power.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #pragma once
  2. #include <stdint.h>
  3. #include <furi/pubsub.h>
  4. #include <stdbool.h>
  5. typedef struct Power Power;
  6. typedef enum {
  7. PowerBootModeNormal,
  8. PowerBootModeDfu,
  9. } PowerBootMode;
  10. typedef enum {
  11. PowerEventTypeStopCharging,
  12. PowerEventTypeStartCharging,
  13. PowerEventTypeFullyCharged,
  14. PowerEventTypeBatteryLevelChanged,
  15. } PowerEventType;
  16. typedef union {
  17. uint8_t battery_level;
  18. } PowerEventData;
  19. typedef struct {
  20. PowerEventType type;
  21. PowerEventData data;
  22. } PowerEvent;
  23. typedef struct {
  24. float current_charger;
  25. float current_gauge;
  26. float voltage_charger;
  27. float voltage_gauge;
  28. float voltage_vbus;
  29. uint32_t capacity_remaining;
  30. uint32_t capacity_full;
  31. float temperature_charger;
  32. float temperature_gauge;
  33. uint8_t charge;
  34. uint8_t health;
  35. } PowerInfo;
  36. /** Power off device
  37. */
  38. void power_off(Power* power);
  39. /** Reboot device
  40. *
  41. * @param mode PowerBootMode
  42. */
  43. void power_reboot(PowerBootMode mode);
  44. /** Get power info
  45. *
  46. * @param power Power instance
  47. * @param info PowerInfo instance
  48. */
  49. void power_get_info(Power* power, PowerInfo* info);
  50. /** Get power event pubsub handler
  51. *
  52. * @param power Power instance
  53. *
  54. * @return FuriPubSub instance
  55. */
  56. FuriPubSub* power_get_pubsub(Power* power);
  57. /** Check battery health
  58. *
  59. * @return true if battery is healthy
  60. */
  61. bool power_is_battery_healthy(Power* power);
  62. /** Enable or disable battery low level notification mesage
  63. *
  64. * @param power Power instance
  65. * @param enable true - enable, false - disable
  66. */
  67. void power_enable_low_battery_level_notification(Power* power, bool enable);