power.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #pragma once
  2. #include <stdint.h>
  3. #include <furi/pubsub.h>
  4. typedef struct Power Power;
  5. typedef enum {
  6. PowerBootModeNormal,
  7. PowerBootModeDfu,
  8. } PowerBootMode;
  9. typedef enum {
  10. PowerEventTypeStopCharging,
  11. PowerEventTypeStartCharging,
  12. PowerEventTypeFullyCharged,
  13. PowerEventTypeBatteryLevelChanged,
  14. } PowerEventType;
  15. typedef union {
  16. uint8_t battery_level;
  17. } PowerEventData;
  18. typedef struct {
  19. PowerEventType type;
  20. PowerEventData data;
  21. } PowerEvent;
  22. typedef struct {
  23. float current_charger;
  24. float current_gauge;
  25. float voltage_charger;
  26. float voltage_gauge;
  27. float voltage_vbus;
  28. uint32_t capacity_remaining;
  29. uint32_t capacity_full;
  30. float temperature_charger;
  31. float temperature_gauge;
  32. uint8_t charge;
  33. uint8_t health;
  34. } PowerInfo;
  35. /** Power off device
  36. */
  37. void power_off();
  38. /** Reboot device
  39. * @param mode - PowerBootMode
  40. */
  41. void power_reboot(PowerBootMode mode);
  42. /** Get power info
  43. * @param power - Power instance
  44. * @param info - PowerInfo instance
  45. */
  46. void power_get_info(Power* power, PowerInfo* info);
  47. /** Get power event pubsub handler
  48. * @param power - Power instance
  49. */
  50. PubSub* power_get_pubsub(Power* power);