You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
1.9 KiB

  1. #pragma once
  2. #include <stdint.h>
  3. #include <stdbool.h>
  4. #include "color.h"
  5. #if defined(__GNUC__)
  6. # define PACKED __attribute__((__packed__))
  7. #else
  8. # define PACKED
  9. #endif
  10. #if defined(_MSC_VER)
  11. # pragma pack(push, 1)
  12. #endif
  13. #if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES)
  14. # define RGB_MATRIX_KEYREACTIVE_ENABLED
  15. #endif
  16. // Last led hit
  17. #ifndef LED_HITS_TO_REMEMBER
  18. # define LED_HITS_TO_REMEMBER 8
  19. #endif // LED_HITS_TO_REMEMBER
  20. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  21. typedef struct PACKED {
  22. uint8_t count;
  23. uint8_t x[LED_HITS_TO_REMEMBER];
  24. uint8_t y[LED_HITS_TO_REMEMBER];
  25. uint8_t index[LED_HITS_TO_REMEMBER];
  26. uint16_t tick[LED_HITS_TO_REMEMBER];
  27. } last_hit_t;
  28. #endif // RGB_MATRIX_KEYREACTIVE_ENABLED
  29. typedef enum rgb_task_states { STARTING, RENDERING, FLUSHING, SYNCING } rgb_task_states;
  30. typedef uint8_t led_flags_t;
  31. typedef struct PACKED {
  32. uint8_t iter;
  33. led_flags_t flags;
  34. bool init;
  35. } effect_params_t;
  36. typedef struct PACKED {
  37. // Global tick at 20 Hz
  38. uint32_t tick;
  39. // Ticks since this key was last hit.
  40. uint32_t any_key_hit;
  41. } rgb_counters_t;
  42. typedef struct PACKED {
  43. uint8_t x;
  44. uint8_t y;
  45. } point_t;
  46. #define HAS_FLAGS(bits, flags) ((bits & flags) == flags)
  47. #define HAS_ANY_FLAGS(bits, flags) ((bits & flags) != 0x00)
  48. #define LED_FLAG_ALL 0xFF
  49. #define LED_FLAG_NONE 0x00
  50. #define LED_FLAG_MODIFIER 0x01
  51. #define LED_FLAG_UNDERGLOW 0x02
  52. #define LED_FLAG_KEYLIGHT 0x04
  53. #define NO_LED 255
  54. typedef struct PACKED {
  55. uint8_t matrix_co[MATRIX_ROWS][MATRIX_COLS];
  56. point_t point[DRIVER_LED_TOTAL];
  57. uint8_t flags[DRIVER_LED_TOTAL];
  58. } led_config_t;
  59. typedef union {
  60. uint32_t raw;
  61. struct PACKED {
  62. uint8_t enable : 2;
  63. uint8_t mode : 6;
  64. HSV hsv;
  65. uint8_t speed; // EECONFIG needs to be increased to support this
  66. };
  67. } rgb_config_t;
  68. #if defined(_MSC_VER)
  69. # pragma pack(pop)
  70. #endif