]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - quantum/split_common/split_util.c
Replace serial.c of quantum/split_common/ (#4669)
[qmk_firmware.git] / quantum / split_common / split_util.c
index 340a63137503bd2678978ba44e085e33a798199b..e4475c535675be58df1f0fcf8d5ff1b7b58fd6ee 100644 (file)
@@ -11,9 +11,6 @@
 #include "timer.h"
 #include "split_flags.h"
 
-#ifdef RGBLIGHT_ENABLE
-#   include "rgblight.h"
-#endif
 #ifdef BACKLIGHT_ENABLE
 #   include "backlight.h"
 #endif
@@ -24,8 +21,6 @@
 
 #if defined(USE_I2C) || defined(EH)
 #  include "i2c.h"
-#else
-#  include "serial.h"
 #endif
 
 volatile bool isLeftHand = true;
@@ -94,42 +89,53 @@ void split_keyboard_setup(void) {
 
 void keyboard_slave_loop(void) {
    matrix_init();
-   
+
    //Init RGB
    #ifdef RGBLIGHT_ENABLE
       rgblight_init();
    #endif
 
    while (1) {
-      matrix_slave_scan();
-      
-      // read backlight info
+    // Matrix Slave Scan
+    matrix_slave_scan();
+
+    // Read Backlight Info
     #ifdef BACKLIGHT_ENABLE
-        if (BACKLIT_DIRTY) {
-            backlight_set(i2c_slave_buffer[I2C_BACKLIT_START]);
-            BACKLIT_DIRTY = false;
-        }
+        #ifdef USE_I2C
+            if (BACKLIT_DIRTY) {
+                backlight_set(i2c_slave_buffer[I2C_BACKLIT_START]);
+                BACKLIT_DIRTY = false;
+            }
+        #else // USE_SERIAL
+            backlight_set(serial_m2s_buffer.backlight_level);
+        #endif
     #endif
+    // Read RGB Info
     #ifdef RGBLIGHT_ENABLE
-        if (RGB_DIRTY) {
-            cli();
-            uint32_t dword;
-            
-            /*dword = i2c_slave_buffer[I2C_RGB_START + 3];
-            dword = (dword << 8) + i2c_slave_buffer[I2C_RGB_START + 2];
-            dword = (dword << 8) + i2c_slave_buffer[I2C_RGB_START + 1];
-            dword = (dword << 8) + i2c_slave_buffer[I2C_RGB_START];*/
-            
-            
-            uint8_t *dword_dat = (uint8_t *)(&dword);
-            for (int i = 0; i < 4; i++) {
-                dword_dat[i] = i2c_slave_buffer[I2C_RGB_START+i];
+        #ifdef USE_I2C
+            if (RGB_DIRTY) {
+                // Disable interupts (RGB data is big)
+                cli();
+                // Create new DWORD for RGB data
+                uint32_t dword;
+
+                // Fill the new DWORD with the data that was sent over
+                uint8_t *dword_dat = (uint8_t *)(&dword);
+                for (int i = 0; i < 4; i++) {
+                    dword_dat[i] = i2c_slave_buffer[I2C_RGB_START+i];
+                }
+
+                // Update the RGB now with the new data and set RGB_DIRTY to false
+                rgblight_update_dword(dword);
+                RGB_DIRTY = false;
+                // Re-enable interupts now that RGB is set
+                sei();
             }
-
-            rgblight_update_dword(dword);
-            RGB_DIRTY = false;
-            sei();
-        }
+        #else // USE_SERIAL
+          #ifdef RGBLIGHT_SPLIT
+            // Add serial implementation for RGB here
+          #endif
+        #endif
     #endif
    }
 }