#ifndef KEYBOARD_WS2812_H
#define KEYBOARD_WS2812_H
#include "keyboard.h"
#include "scan.h"

//根据硬件电路更改
//WS2812  每个位置上灯的序号，ERROR_CODE 表示为空，即此位置无灯
struct Config_light
{
  uint8_t L_color = 0;   //灯光颜色 
  uint8_t L_brgightness = 0; //灯光亮度
  uint8_t L_mode = 0;        //灯光模式
  uint8_t L_speed = 0;       //灯光速度
};
const uint8_t light_num[KEYBOARD_ROW][KEYBOARD_COLUMN] = {
  {1, ERROR_CODE,   2,      3,             4,            5,      6,             7,          8,    9,    10,      11,       12,         13,               14,          15,      16},
  {33,     32,     31,     30,             29,           28,     27,            26,         25,   24,   23,      22,       21,         20,               19,          18,      17},
  {34,     35,     36,     37,             38,           39,     40,            41,         42,   43,   44,      45,       46,         47,               48,          49,      50},
  {63,     62,     61,     60,             59,           58,     57,            56,         55,   54,   53,      52,       51,       ERROR_CODE,      ERROR_CODE,  ERROR_CODE, ERROR_CODE},
  {64,     65,     66,     67,             68,           69,     70,            71,         72,   73,   74,      75,     ERROR_CODE, ERROR_CODE,      ERROR_CODE,     76,      ERROR_CODE},
  {87,     86,     85,   ERROR_CODE,    ERROR_CODE,      84,  ERROR_CODE,    ERROR_CODE,    83,   82,   81,      80,     ERROR_CODE, ERROR_CODE,         79,          78,       77}
};

uint8_t init_light_queue();
uint8_t light_task_begin();
void light_task_end();
uint8_t clean_led();
uint8_t set_speed(uint8_t s);
uint8_t get_speed(uint8_t *S_);
uint8_t set_rgb(uint8_t c);
uint8_t get_rgb(uint8_t *C_);
uint8_t set_brgightness(uint8_t l);
uint8_t get_brgightness();
uint8_t set_light_mode(uint8_t m);
uint8_t get_light_mode();

#endif
