Exemplo n.º 1
0
        public Model()
        {
            CrossingController = new CrossingController
            {
                Sensor      = new BarrierSensor(),
                Motor       = new BarrierMotor(),
                Radio       = new RadioModule(),
                Timer       = new Timer(),
                TrainSensor = new TrainSensor()
            };

            TrainController = new TrainController
            {
                Brakes   = new Brakes(),
                Odometer = new Odometer(),
                Radio    = new RadioModule()
            };

            Bind(nameof(Barrier.Speed), nameof(CrossingController.Motor.Speed));
            Bind(nameof(CrossingController.Sensor.BarrierAngle), nameof(Barrier.Angle));

            Bind(nameof(Train.Acceleration), nameof(TrainController.Brakes.Acceleration));
            Bind(nameof(CrossingController.TrainSensor.TrainPosition), nameof(Train.Position));

            Bind(nameof(TrainController.Radio.RetrieveFromChannel), nameof(Channel.Receive));
            Bind(nameof(TrainController.Radio.DeliverToChannel), nameof(Channel.Send));

            Bind(nameof(CrossingController.Radio.RetrieveFromChannel), nameof(Channel.Receive));
            Bind(nameof(CrossingController.Radio.DeliverToChannel), nameof(Channel.Send));

            Bind(nameof(TrainController.Odometer.TrainPosition), nameof(Train.Position));
            Bind(nameof(TrainController.Odometer.TrainSpeed), nameof(Train.Speed));
        }
Exemplo n.º 2
0
		public Model()
		{
			CrossingController = new CrossingController
			{
				Sensor = new BarrierSensor(),
				Motor = new BarrierMotor(),
				Radio = new RadioModule(),
				Timer = new Timer(),
				TrainSensor = new TrainSensor()
			};

			TrainController = new TrainController
			{
				Brakes = new Brakes(),
				Odometer = new Odometer(),
				Radio = new RadioModule()
			};

			Bind(nameof(Barrier.Speed), nameof(CrossingController.Motor.Speed));
			Bind(nameof(CrossingController.Sensor.BarrierAngle), nameof(Barrier.Angle));

			Bind(nameof(Train.Acceleration), nameof(TrainController.Brakes.Acceleration));
			Bind(nameof(CrossingController.TrainSensor.TrainPosition), nameof(Train.Position));

			Bind(nameof(TrainController.Radio.RetrieveFromChannel), nameof(Channel.Receive));
			Bind(nameof(TrainController.Radio.DeliverToChannel), nameof(Channel.Send));

			Bind(nameof(CrossingController.Radio.RetrieveFromChannel), nameof(Channel.Receive));
			Bind(nameof(CrossingController.Radio.DeliverToChannel), nameof(Channel.Send));

			Bind(nameof(TrainController.Odometer.TrainPosition), nameof(Train.Position));
			Bind(nameof(TrainController.Odometer.TrainSpeed), nameof(Train.Speed));
		}
Exemplo n.º 3
0
        public Model()
        {
            train = new Train.Train();

            tc = new TrainController()
            {
                Odometer    = new Odometer(),
                RadioModule = new RadioModule(),
                Brakes      = new EmergencyBrakes()
            };

            commChannel = new BidirectionalCommChannel();

            // Bind all of the ports of the odometer
            Bind(nameof(tc.Odometer.Position), nameof(train.Position));
            Bind(nameof(tc.Odometer.Speed), nameof(train.Speed));

            // Bind the emergency brakes to the train
            Bind(nameof(train.Acceleration), nameof(tc.Brakes.Acceleration));

            // Bind controller to breaks
            Bind(nameof(tc.Brakes.ShouldBrake), nameof(tc.ShouldBrake));


            Crossing = new Crossing.Crossing();

            cc = new CrossingController
            {
                CrossingSensor  = new CrossingSensor(),
                CrossingTimer   = new CrossingTimer(),
                Motor           = new CrossingMotor(),
                RadioModule     = new RadioModule(),
                TrainLeftSensor = new TrainLeftSensor()
            };

            Bind(nameof(cc.CrossingSensor.Angle), nameof(cc.Motor.Angle));
            Bind(nameof(cc.Motor.ControllerState), nameof(cc.CurrentState));
            Bind(nameof(cc.Motor.CrossingSesnsorState), nameof(cc.CrossingSensor.CurrentState));
            Bind(nameof(cc.CrossingTimer.controllerState), nameof(cc.CurrentState));


            Bind(nameof(cc.TrainLeftSensor.Position), nameof(train.Position));


            // Bind the communication channels
            Bind(nameof(tc.RadioModule.SendChannel), nameof(commChannel.DownChannel));
            Bind(nameof(tc.RadioModule.RecvChannel), nameof(commChannel.UpChannel));

            Bind(nameof(cc.RadioModule.SendChannel), nameof(commChannel.UpChannel));
            Bind(nameof(cc.RadioModule.RecvChannel), nameof(commChannel.DownChannel));
        }