power.h 1.8 KB

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