power.h 1.7 KB

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