power.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. * @param mode - PowerBootMode
  41. */
  42. void power_reboot(PowerBootMode mode);
  43. /** Get power info
  44. * @param power - Power instance
  45. * @param info - PowerInfo instance
  46. */
  47. void power_get_info(Power* power, PowerInfo* info);
  48. /** Get power event pubsub handler
  49. * @param power - Power instance
  50. */
  51. FuriPubSub* power_get_pubsub(Power* power);
  52. bool power_is_battery_well(PowerInfo* info);