   flashThread.check();
   timeoutThread.check();
 }
+
+void processI2CIn (int numBytesRead) {
+  for (int x=0; x<numBytesRead; x++) {
+    inputBuffer[x] = Wire.read();
+  }
+  recentActivity = true;
+  switch (inputBuffer[0]) {
+    case 'd': { toggleDebug(); break; }
+    case 'V': { processColor(); break; } // set value specified in V#FFFFFF input
+    case 'S' : { gradientLoop = true; gradientReversingMode = true;  processGradient(); break;}
+    case 'L' : { gradientLoop = true; gradientReversingMode = false;  processGradient(); break;}
+    case 'G' : { gradientLoop = false; processGradient(); break;}
+    case 'F' : { processFlash(); break; }
+  }
+  if (debugMode) {
+    processDebugIn();
+  }
+  clearBuffer();
+}
+
 
 void processSerialIn() {
   Serial.readBytesUntil('\n',inputBuffer,SERIAL_BUFFER_LENGTH);

//        evaluate memory gain from using #define for some constants

#include <stdarg.h>

// JUMPER SETUP FOR COMP



// -------------  LED SETUP -------------
const boolean GROVE_DRIVER = false; // Grove LED driver or DFRobot shield?

//    if (debugMode) { Serial.print("|");
//                     for (int x=0; x<10; x++) { Serial.print(inputBuffer[x]); }
//                     Serial.print("|"); }
    switch (inputBuffer[0]) {
      case 'd': { toggleDebug(); break; }
      case 'V': { processColor(); break; } // set value specified in V#FFFFFF input
