power.h 1.8 KB

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