text: #ifndef __CX_SWITCH_H
  #define __CX_SWITCH_H
  
  //////////////////////////////////////////////////////////////////////////
  // Copyright 2013 Focusrite Audio Engineering Ltd.
  //////////////////////////////////////////////////////////////////////////
  //
  // Redistribution and use in source and binary forms, with or without
  // modification, are permitted provided that the following conditions are
  // met:
  //
  // (1) Redistributions of source code must retain the above copyright
  // notice, this list of conditions and the following disclaimer.
  //
  // (2) Redistributions in binary form must reproduce the above copyright
  // notice, this list of conditions and the following disclaimer in
  // the documentation and/or other materials provided with the
  // distribution.
  //
  // (3)The name of the author may not be used to
  // endorse or promote products derived from this software without
  // specific prior written permission.
  //
  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  // DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
  // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  //  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  // IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  // POSSIBILITY OF SUCH DAMAGE.
  //////////////////////////////////////////////////////////////////////////
  
  struct sMultiSwitch
  {
  	u8 NewValue;
  	u8 OldValue;
  	u8 Countdown;
  };
  
  extern u8 switch_is_on(u8* SwitchState);
  extern u8 switch_is_off(u8* SwitchState, u8 DebounceInterval);
  
  extern u8 switch_multi_decode(u8 ADCValue, const u8* LookupTable, const u8 MaxIndex);
  extern u8 switch_multi_init(struct sMultiSwitch* SwitchState);
  extern u8 switch_multi(struct sMultiSwitch* SwitchState, u8 Value, u8 DebounceInterval);
  
  
  #endif