]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboards/ergodox_ez/ergodox_ez.c
rgb_led struct conversion (aka: Per led (key) type rgb matrix effects - part 2) ...
[qmk_firmware.git] / keyboards / ergodox_ez / ergodox_ez.c
index 65671b38fe3fd2367e82d6549db50a6d7a2f0408..09443cf72529bed15484cba780a3ca1ca5a62be9 100644 (file)
@@ -22,7 +22,6 @@ extern inline void ergodox_right_led_set(uint8_t led, uint8_t n);
 
 extern inline void ergodox_led_all_set(uint8_t n);
 
-
 bool i2c_initialized = 0;
 i2c_status_t mcp23018_status = 0x20;
 
@@ -125,23 +124,23 @@ uint8_t init_mcp23018(void) {
     // - unused  : input  : 1
     // - input   : input  : 1
     // - driving : output : 0
-    mcp23018_status = i2c_start(I2C_ADDR_WRITE, 0);    if (mcp23018_status) goto out;
-    mcp23018_status = i2c_write(IODIRA, 0);            if (mcp23018_status) goto out;
-    mcp23018_status = i2c_write(0b00000000, 0);        if (mcp23018_status) goto out;
-    mcp23018_status = i2c_write(0b00111111, 0);        if (mcp23018_status) goto out;
-    i2c_stop(0);
+    mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT);    if (mcp23018_status) goto out;
+    mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT);            if (mcp23018_status) goto out;
+    mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT);        if (mcp23018_status) goto out;
+    mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT);        if (mcp23018_status) goto out;
+    i2c_stop();
 
     // set pull-up
     // - unused  : on  : 1
     // - input   : on  : 1
     // - driving : off : 0
-    mcp23018_status = i2c_start(I2C_ADDR_WRITE, 0);    if (mcp23018_status) goto out;
-    mcp23018_status = i2c_write(GPPUA, 0);             if (mcp23018_status) goto out;
-    mcp23018_status = i2c_write(0b00000000, 0);        if (mcp23018_status) goto out;
-    mcp23018_status = i2c_write(0b00111111, 0);        if (mcp23018_status) goto out;
+    mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT);    if (mcp23018_status) goto out;
+    mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT);             if (mcp23018_status) goto out;
+    mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT);        if (mcp23018_status) goto out;
+    mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT);        if (mcp23018_status) goto out;
 
 out:
-    i2c_stop(0);
+    i2c_stop();
 
 #ifdef LEFT_LEDS
     if (!mcp23018_status) mcp23018_status = ergodox_left_leds_update();
@@ -165,22 +164,22 @@ uint8_t ergodox_left_leds_update(void) {
     // - unused  : hi-Z : 1
     // - input   : hi-Z : 1
     // - driving : hi-Z : 1
-    mcp23018_status = i2c_start(I2C_ADDR_WRITE, 0);
+    mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT);
     if (mcp23018_status) goto out;
-    mcp23018_status = i2c_write(OLATA, 0);
+    mcp23018_status = i2c_write(OLATA, ERGODOX_EZ_I2C_TIMEOUT);
     if (mcp23018_status) goto out;
     mcp23018_status = i2c_write(0b11111111
                                 & ~(ergodox_left_led_3<<LEFT_LED_3_SHIFT),
-                                0);
+                                ERGODOX_EZ_I2C_TIMEOUT);
     if (mcp23018_status) goto out;
     mcp23018_status = i2c_write(0b11111111
                                 & ~(ergodox_left_led_2<<LEFT_LED_2_SHIFT)
                                 & ~(ergodox_left_led_1<<LEFT_LED_1_SHIFT),
-                                0);
+                                ERGODOX_EZ_I2C_TIMEOUT);
     if (mcp23018_status) goto out;
 
  out:
-    i2c_stop(0);
+    i2c_stop();
     return mcp23018_status;
 }
 #endif
@@ -270,68 +269,39 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
 };
 
 
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-
-    /*{row | col << 4}
-      |             {x=0..224, y=0..64}
-      |              |                    modifier
-      |              |                    | */
-    {{0|(0<<4)},   {24.9*5, 16*0}, 0}, // LED 1 on right
-    {{0|(1<<4)},   {24.9*6, 16*0}, 0}, // LED 2
-    {{0|(2<<4)},   {24.9*7, 16*0}, 0}, // LED 3
-    {{0|(3<<4)},   {24.9*8, 16*0}, 0}, // LED 4
-    {{0|(4<<4)},   {24.9*9, 16*0}, 0}, // LED 5
-
-    {{1|(5<<4)},   {24.9*5, 16*1}, 0}, // LED 6
-    {{1|(6<<4)},   {24.9*6, 16*1}, 0}, // LED 7
-    {{1|(7<<4)},   {24.9*7, 16*1}, 0}, // LED 8
-    {{1|(8<<4)},   {24.9*8, 16*1}, 0}, // LED 9
-    {{1|(9<<4)},   {24.9*9, 16*1}, 0}, // LED 10
-
-    {{2|(5<<4)},   {24.9*5, 16*2}, 0}, // LED 11
-    {{2|(6<<4)},   {24.9*6, 16*2}, 0}, // LED 12
-    {{2|(7<<4)},   {24.9*7, 16*2}, 0}, // LED 13
-    {{2|(8<<4)},   {24.9*8, 16*2}, 0}, // LED 14
-    {{2|(9<<4)},   {24.9*9, 16*2}, 0}, // LED 15
-
-    {{3|(5<<4)},   {24.9*5, 16*2}, 0}, // LED 16
-    {{3|(6<<4)},   {24.9*6, 16*2}, 0}, // LED 17
-    {{3|(7<<4)},   {24.9*7, 16*2}, 0}, // LED 18
-    {{3|(8<<4)},   {24.9*8, 16*2}, 0}, // LED 19
-    {{3|(9<<4)},   {24.9*9, 16*2}, 0}, // LED 20
-
-    {{4|(6<<4)},   {24.9*6, 16*2}, 0}, // LED 21
-    {{4|(7<<4)},   {24.9*7, 16*2}, 0}, // LED 22
-    {{4|(8<<4)},   {24.9*8, 16*2}, 0}, // LED 23
-    {{4|(9<<4)},   {24.9*9, 16*2}, 0}, // LED 24
-
-    {{0|(0<<4)},   {24.9*4, 16*0}, 0}, // LED 1 on left
-    {{0|(1<<4)},   {24.9*3, 16*0}, 0}, // LED 2
-    {{0|(2<<4)},   {24.9*2, 16*0}, 0}, // LED 3
-    {{0|(3<<4)},   {24.9*1, 16*0}, 0}, // LED 4
-    {{0|(4<<4)},   {24.9*0, 16*0}, 0}, // LED 5
-
-    {{1|(5<<4)},   {24.9*4, 16*1}, 0}, // LED 6
-    {{1|(6<<4)},   {24.9*3, 16*1}, 0}, // LED 7
-    {{1|(7<<4)},   {24.9*2, 16*1}, 0}, // LED 8
-    {{1|(8<<4)},   {24.9*1, 16*1}, 0}, // LED 9
-    {{1|(9<<4)},   {24.9*0, 16*1}, 0}, // LED 10
-
-    {{2|(5<<4)},   {24.9*4, 16*2}, 0}, // LED 11
-    {{2|(6<<4)},   {24.9*3, 16*2}, 0}, // LED 12
-    {{2|(7<<4)},   {24.9*2, 16*2}, 0}, // LED 13
-    {{2|(8<<4)},   {24.9*1, 16*2}, 0}, // LED 14
-    {{2|(9<<4)},   {24.9*0, 16*2}, 0}, // LED 15
-
-    {{3|(5<<4)},   {24.9*4, 16*2}, 0}, // LED 16
-    {{3|(6<<4)},   {24.9*3, 16*2}, 0}, // LED 17
-    {{3|(7<<4)},   {24.9*2, 16*2}, 0}, // LED 18
-    {{3|(8<<4)},   {24.9*1, 16*2}, 0}, // LED 19
-    {{3|(9<<4)},   {24.9*0, 16*2}, 0}, // LED 20
-
-    {{4|(6<<4)},   {24.9*3, 16*2}, 0}, // LED 21
-    {{4|(7<<4)},   {24.9*2, 16*2}, 0}, // LED 22
-    {{4|(8<<4)},   {24.9*1, 16*2}, 0}, // LED 23
-    {{4|(9<<4)},   {24.9*0, 16*2}, 0}, // LED 24
-};
+led_config_t g_led_config = { {
+    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+    {  28,  33,  38,  43,  47, NO_LED },
+    {  27,  32,  37,  42,  46, NO_LED },
+    {  26,  31,  36,  41,  45, NO_LED },
+    {  25,  30,  35,  40,  44, NO_LED },
+    {  24,  29,  34,  39, NO_LED, NO_LED },
+    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+    {   0,   5,  10,  15, NO_LED, NO_LED },
+    {   1,   6,  11,  16,  20, NO_LED },
+    {   2,   7,  12,  17,  21, NO_LED },
+    {   3,   8,  13,  18,  22, NO_LED },
+    {   4,   9,  14,  19,  23, NO_LED },
+    { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
+}, {
+    { 137,   0 }, { 154,   0 }, { 172,   0 }, { 189,   0 }, { 206,   0 }, { 137,  12 },
+    { 154,  12 }, { 172,  12 }, { 189,  12 }, { 206,  12 }, { 137,  25 }, { 154,  25 },
+    { 172,  25 }, { 189,  25 }, { 206,  25 }, { 137,  38 }, { 154,  38 }, { 172,  38 },
+    { 189,  38 }, { 206,  38 }, { 154,  51 }, { 172,  51 }, { 189,  51 }, { 206,  51 },
+    {  86,   0 }, {  68,   0 }, {  51,   0 }, {  34,   0 }, {  17,   0 }, {  86,  12 },
+    {  68,  12 }, {  51,  12 }, {  34,  12 }, {  17,  12 }, {  86,  25 }, {  68,  25 },
+    {  51,  25 }, {  34,  25 }, {  17,  25 }, {  86,  38 }, {  68,  38 }, {  51,  38 },
+    {  34,  38 }, {  17,  38 }, {  68,  51 }, {  51,  51 }, {  34,  51 }, {  17,  51 }
+}, {
+    4, 4, 4, 4, 4, 4,
+    4, 4, 4, 4, 4, 4,
+    4, 4, 4, 4, 4, 4,
+    4, 4, 1, 1, 1, 1,
+    4, 4, 4, 4, 4, 4,
+    4, 4, 4, 4, 4, 4,
+    4, 4, 4, 4, 4, 4,
+    4, 4, 1, 1, 1, 1
+} };
+
 #endif