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.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

ledmap.h 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #ifndef LEDMAP_H
  2. #define LEDMAP_H
  3. #include "stdint.h"
  4. #include "stdbool.h"
  5. #if (LED_COUNT <= 8)
  6. typedef uint8_t led_pack_t;
  7. #elif (LED_COUNT <= 16)
  8. typedef uint16_t led_pack_t;
  9. #elif (LED_COUNT <= 32)
  10. typedef uint32_t led_pack_t;
  11. #else
  12. #error "LED_COUNT: invalid value"
  13. #endif
  14. typedef led_pack_t led_state_t;
  15. typedef led_pack_t led_binding_t;
  16. #if (LED_COUNT <= 16)
  17. #define LED_BIT(i) (1U<<(i))
  18. #elif (LED_COUNT <= 32)
  19. #define LED_BIT(i) (1UL<<(i))
  20. #else
  21. #error "LED_COUNT: invalid value"
  22. #endif
  23. #define LED_BIT_SET(x, i) ((x) |= LED_BIT(i))
  24. #define LED_BIT_CLEAR(x, i) ((x) &= ~LED_BIT(i))
  25. #define LED_BIT_IS_SET(x, i) ((x) & LED_BIT(i))
  26. typedef enum {
  27. LEDMAP_DEFAULT_LAYER_0 = 0,
  28. LEDMAP_DEFAULT_LAYER_31 = 31,
  29. LEDMAP_LAYER_0 = 32,
  30. LEDMAP_LAYER_31 = 63,
  31. LEDMAP_NUM_LOCK = 64,
  32. LEDMAP_CAPS_LOCK,
  33. LEDMAP_SCROLL_LOCK,
  34. LEDMAP_COMPOSE,
  35. LEDMAP_KANA,
  36. LEDMAP_BACKLIGHT = 0x80,
  37. LEDMAP_UNCONFIGURED = 0xFF
  38. } ledmap_code_t;
  39. #define LEDMAP_MASK 0x7F
  40. typedef union {
  41. uint8_t raw;
  42. struct {
  43. uint8_t binding : 7;
  44. bool backlight : 1;
  45. };
  46. } ledmap_t;
  47. #define LEDMAP_DEFAULT_LAYER(x) (LEDMAP_DEFAULT_LAYER_0 + x)
  48. #define LEDMAP_LAYER(x) (LEDMAP_LAYER_0 + x)
  49. void ledmap_init(void);
  50. #ifdef LEDMAP_ENABLE
  51. uint8_t ledmap_get_code(uint8_t index);
  52. void ledmap_led_init(void);
  53. void ledmap_led_on(uint8_t index);
  54. void ledmap_led_off(uint8_t index);
  55. #else
  56. #define ledmaps
  57. #define ledmap_get()
  58. #define ledmap_led_init()
  59. #define ledmap_led_on()
  60. #define ledmap_led_off()
  61. #endif
  62. #endif