public virtual void SwitchPhase(TrafficPhase trafficPhase) { if (isDisposed) { return; } CurrentPhase = trafficPhase; switch (trafficPhase) { case TrafficPhase.RedPhase: TrafficLight.RedSignal.Status = SetPinValue(TrafficLight.RedSignal.Pin, PinValue.High); TrafficLight.YellowSignal.Status = SetPinValue(TrafficLight.YellowSignal.Pin, PinValue.Low); break; case TrafficPhase.RedYellowPhase: TrafficLight.RedSignal.Status = SetPinValue(TrafficLight.RedSignal.Pin, PinValue.High); TrafficLight.YellowSignal.Status = SetPinValue(TrafficLight.YellowSignal.Pin, PinValue.High); break; case TrafficPhase.YellowPhase: TrafficLight.YellowSignal.Status = SetPinValue(TrafficLight.YellowSignal.Pin, PinValue.High); TrafficLight.GreenSignal.Status = SetPinValue(TrafficLight.GreenSignal.Pin, PinValue.Low); break; case TrafficPhase.GreenPhase: TrafficLight.RedSignal.Status = SetPinValue(TrafficLight.RedSignal.Pin, PinValue.Low); TrafficLight.YellowSignal.Status = SetPinValue(TrafficLight.YellowSignal.Pin, PinValue.Low); TrafficLight.GreenSignal.Status = SetPinValue(TrafficLight.GreenSignal.Pin, PinValue.High); break; } }
public TrafficLightControllerBase(TrafficLight trafficLight, TrafficPhase initialPhase) { TrafficLight = trafficLight; ControllerGuid = Guid.NewGuid(); controller = new GpioController(); SetupPin(); SwitchPhase(initialPhase); }
public TrafficLightStatusMessageArgs(string message, TrafficPhase phase, Guid guid) { Message = message; TrafficPhase = phase; ControllerGuid = guid; }
private void SendStatusMessage(string message, TrafficPhase phase) { TrafficLightStatusMessageHandler?.Invoke(this, new TrafficLightStatusMessageArgs(message, phase, ControllerGuid)); }
/// <summary> /// Createas a new Trafficlight controller /// </summary> /// <param name="trafficLight">The traffic light to controll</param> /// <param name="initialPhase">The initial phase for this traffic light</param> public TrafficLightController(TrafficLight trafficLight, TrafficPhase initialPhase) :base(trafficLight, initialPhase) { }