private static ButtonStates xor(ButtonStates a, ButtonStates b)
        {
            Debug.WriteLine("BuzzerLayer.xor()\t(static)\t{"+a+"} (+) {"+b+"}");
            ButtonStates result = new ButtonStates();
            if (xor(a.Red, b.Red))
                result.Red = true;
            if (xor(a.Blue, b.Blue))
                result.Blue = true;
            if (xor(a.Green, b.Green))
                result.Green = true;
            if (xor(a.Orange, b.Orange))
                result.Orange = true;
            if (xor(a.Yellow, b.Yellow))
                result.Yellow = true;

            Debug.WriteLine("BuzzerLayer.xor()\t(static)\treturning {"+result+"}");
            return result;
        }
        public BuzzerLayer()
        {
            Debug.WriteLine("BuzzerLayer.BuzzerLayer()\t(constructor)\tStarting...");
            devices = BuzzHandsetDevice.FindBuzzHandsets();
            Debug.WriteLine("BuzzerLayer.BuzzerLayer()\t(constructor)\tGot devices:" + devices);
            Debug.WriteLine("BuzzerLayer.BuzzerLayer()\t(constructor)\t# devices:" + devices.Count);

            states = new ButtonStates[devices.Count * 4];
            for (int i = 0; i < states.Length; i++)
                states[i] = new ButtonStates();

            lights = new Boolean[devices.Count,4];
            for (int i = 0; i < devices.Count; i++) {
                lights[i,0] = false;
                lights[i,1] = false;
                lights[i,2] = false;
                lights[i,3] = false;
            }

            foreach (IBuzzHandsetDevice d in devices) {
                d.DeviceRemoved += unplugged;
                d.ButtonChanged += somethingHappens;
            }
        }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="arrStates">State of the buttons</param>
 public BuzzButtonChangedEventArgs(ButtonStates[] arrStates)
 {
     Buttons = arrStates;
 }