power.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. bool is_charging;
  31. float current_charger;
  32. float current_gauge;
  33. float voltage_battery_charge_limit;
  34. float voltage_charger;
  35. float voltage_gauge;
  36. float voltage_vbus;
  37. uint32_t capacity_remaining;
  38. uint32_t capacity_full;
  39. float temperature_charger;
  40. float temperature_gauge;
  41. uint8_t charge;
  42. uint8_t health;
  43. } PowerInfo;
  44. /** Power off device
  45. */
  46. void power_off(Power* power);
  47. /** Reboot device
  48. *
  49. * @param mode PowerBootMode
  50. */
  51. void power_reboot(PowerBootMode mode);
  52. /** Get power info
  53. *
  54. * @param power Power instance
  55. * @param info PowerInfo instance
  56. */
  57. void power_get_info(Power* power, PowerInfo* info);
  58. /** Get power event pubsub handler
  59. *
  60. * @param power Power instance
  61. *
  62. * @return FuriPubSub instance
  63. */
  64. FuriPubSub* power_get_pubsub(Power* power);
  65. /** Check battery health
  66. *
  67. * @return true if battery is healthy
  68. */
  69. bool power_is_battery_healthy(Power* power);
  70. /** Enable or disable battery low level notification message
  71. *
  72. * @param power Power instance
  73. * @param enable true - enable, false - disable
  74. */
  75. void power_enable_low_battery_level_notification(Power* power, bool enable);
  76. #ifdef __cplusplus
  77. }
  78. #endif