lp5562.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include <stdint.h>
  3. #include <stdbool.h>
  4. #include <furi_hal_i2c.h>
  5. /** Channel types */
  6. typedef enum {
  7. LP5562ChannelRed,
  8. LP5562ChannelGreen,
  9. LP5562ChannelBlue,
  10. LP5562ChannelWhite,
  11. } LP5562Channel;
  12. typedef enum {
  13. LP5562Direct = 0,
  14. LP5562Engine1 = 1,
  15. LP5562Engine2 = 2,
  16. LP5562Engine3 = 3,
  17. } LP5562Engine;
  18. /** Initialize Driver */
  19. void lp5562_reset(FuriHalI2cBusHandle* handle);
  20. /** Configure Driver */
  21. void lp5562_configure(FuriHalI2cBusHandle* handle);
  22. /** Enable Driver */
  23. void lp5562_enable(FuriHalI2cBusHandle* handle);
  24. /** Set channel current */
  25. void lp5562_set_channel_current(FuriHalI2cBusHandle* handle, LP5562Channel channel, uint8_t value);
  26. /** Set channel PWM value */
  27. void lp5562_set_channel_value(FuriHalI2cBusHandle* handle, LP5562Channel channel, uint8_t value);
  28. /** Get channel PWM value */
  29. uint8_t lp5562_get_channel_value(FuriHalI2cBusHandle* handle, LP5562Channel channel);
  30. /** Execute program sequence */
  31. void lp5562_execute_program(
  32. FuriHalI2cBusHandle* handle,
  33. LP5562Engine eng,
  34. LP5562Channel ch,
  35. uint16_t* program);
  36. /** Execute ramp program sequence */
  37. void lp5562_execute_ramp(
  38. FuriHalI2cBusHandle* handle,
  39. LP5562Engine eng,
  40. LP5562Channel ch,
  41. uint8_t val_start,
  42. uint8_t val_end,
  43. uint16_t time);