]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - quantum/split_common/split_util.c
Add Iris Rev. 3
[qmk_firmware.git] / quantum / split_common / split_util.c
index 340a63137503bd2678978ba44e085e33a798199b..7c87de4d9bdec6b0313bc5df65bd0e25331512d0 100644 (file)
@@ -101,35 +101,44 @@ void keyboard_slave_loop(void) {
    #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_master_buffer[SERIAL_BACKLIT_START]);
+        #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
+            // Add serial implementation for RGB here
+        #endif
     #endif
    }
 }