lp5562.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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 = (1 << 0),
  8. LP5562ChannelGreen = (1 << 1),
  9. LP5562ChannelBlue = (1 << 2),
  10. LP5562ChannelWhite = (1 << 3),
  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. /** Set channel source */
  31. void lp5562_set_channel_src(FuriHalI2cBusHandle* handle, LP5562Channel channel, LP5562Engine src);
  32. /** Execute program sequence */
  33. void lp5562_execute_program(
  34. FuriHalI2cBusHandle* handle,
  35. LP5562Engine eng,
  36. LP5562Channel ch,
  37. uint16_t* program);
  38. /** Stop program sequence */
  39. void lp5562_stop_program(FuriHalI2cBusHandle* handle, LP5562Engine eng);
  40. /** Execute ramp program sequence */
  41. void lp5562_execute_ramp(
  42. FuriHalI2cBusHandle* handle,
  43. LP5562Engine eng,
  44. LP5562Channel ch,
  45. uint8_t val_start,
  46. uint8_t val_end,
  47. uint16_t time);
  48. /** Start blink program sequence */
  49. void lp5562_execute_blink(
  50. FuriHalI2cBusHandle* handle,
  51. LP5562Engine eng,
  52. LP5562Channel ch,
  53. uint16_t on_time,
  54. uint16_t period,
  55. uint8_t brightness);