public static void SetLightColorFromBuildState(Build buildFromSource, Light light)
 {
     switch (buildFromSource.State)
     {
         case Build.BuildState.Success:
             {
                 light.LightColor = Light.Color.Green;
                 light.TurnOn(buildFromSource.IsBuilding);
                 break;
             }
         case Build.BuildState.Unstable:
             {
                 light.LightColor = Light.Color.Yellow;
                 light.TurnOn(buildFromSource.IsBuilding);
                 break;
             }
         case Build.BuildState.Failure:
             {
                 light.LightColor = Light.Color.Red;
                 light.TurnOn(buildFromSource.IsBuilding);
                 break;
             }
         case Build.BuildState.Aborted:
         case Build.BuildState.Unknown:
             {
                 light.TurnOff();
                 break;
             }
         default:
             {
                 throw new UnknownBuildStateException(buildFromSource.State.ToString());
             }
     }
 }
        public static void HandleException(Exception exception, BuildServiceManager manager, Light buildLight)
        {
            if (exception is UnknownBuildStateException)
            {

                buildLight.LightColor = Light.Color.Yellow;
                buildLight.TurnOn();
                Thread.Sleep(250);
                buildLight.LightColor = Light.Color.Green;
                buildLight.TurnOn();

                Thread.Sleep(3000);
                buildLight.LightColor = Light.Color.Yellow;
                manager.Reset();
                buildLight.LightColor = Light.Color.Green;
                manager.Reset();

                return;
            }

            if (exception is BuildNotFoundException)
            {
                buildLight.LightColor = Light.Color.Yellow;
                buildLight.TurnOn();
                Thread.Sleep(250);
                buildLight.LightColor = Light.Color.Red;
                buildLight.TurnOn(true);

                Thread.Sleep(3000);
                buildLight.LightColor = Light.Color.Yellow;
                manager.Reset();
                buildLight.LightColor = Light.Color.Red;
                manager.Reset();

                return;
            }

            if (exception is DeviceNotConnectedException)
            {
                //have to ignore
                return;
            }

            //default
            buildLight.LightColor = Light.Color.Yellow;
            buildLight.TurnOn(true);
            Thread.Sleep(250);
            buildLight.LightColor = Light.Color.Green;
            buildLight.TurnOn(true);
            Thread.Sleep(250);
            buildLight.LightColor = Light.Color.Red;
            buildLight.TurnOn(true);

            Thread.Sleep(3000);
            buildLight.LightColor = Light.Color.Red;
            manager.Reset();
            buildLight.LightColor = Light.Color.Yellow;
            manager.Reset();
            buildLight.LightColor = Light.Color.Green;
            manager.Reset();
        }