   return (Wire.requestFrom(IO_ADDR_BASE | address, len) == len); // returns success fail
 }
 
-uint16_t i2cReadData() // get the data bytes and stuff them into a 16-bit unsigned value
+// get the data bytes and stuff them into a 16-bit unsigned value
+// call more than once if you have more than 2 bytes
+uint16_t i2cReadData()
 {
   return (~(Wire.read() | (Wire.read() << 8)));
 }

  return (matrix);
}

// get control input
int16_t helmGetAdjustment(boolean high, boolean low, int8_t adj)
{
  switch (high ? HIGH : (low ? LOW : NEUTRAL)) // high trumps low


void updateControl()
{
  boolean newControlEnable = digitalRead(PIN_ROT_CTRL_EN);

  // if it was on and now its off
  if (controlEnable && !newControlEnable)
  {
    Serial.println(DISABLE); // send disable sequence
  }
  else if (controlEnable || newControlEnable)
  {
    uint8_t roter = 0; // setup space

    noInterrupts(); // shutdown interrupts for this volatile operation
    roter = _vol_rotaryControl; // copy the volatile control variable
    interrupts(); // reenable interrupts immediately

    uint8_t newState = rotaryControl2State(roter); // convert to sas number

    if (newState != controlState)
    {
      controlState = newState; // update the hilighted state

      // do hiligting stuff //
      // here the currently hovered state will be a blinking
      // led, there should be a timer started now that if not
      // dealt with by pressing the dial button resets the
      // controlState variable back to what is actually selected
    }

    if (controlDebounce > 0)
    {
      controlDebounce--; // do dat sweet digi debounce
    }
    else
    {
      // if you press dis switch lock the sas control state (active low)
      if (!digitalRead(PIN_ROT_CTRL_SW))
      {
        controlLocked = controlState; // update locked variable

        Serial.println(ENABLE); // send enable
        Serial.println(controlLocked); // send new sas state

        controlDebounce = DELAY_CTRL; // reset delay
      }
    }
  }

  controlEnable = newControlEnable; // finally save the new state for next time around

  Serial.println(DISABLE); // skip or end transmission
}
