Beispiel #1
0
        public Control(IDoor door, IRFIDReader rfidReader,
                       ICharger charger, ILogger logger, IDisplay display)
        {
            _door      = door;
            _charger   = charger;
            _logger    = logger;
            _display   = display;
            _lockState = ChargerLockState.Available;

            _door.Opened += new EventHandler(DoorOpened);
            _door.Closed += new EventHandler(DoorClosed);

            rfidReader.DetectRfid += new EventHandler <RfidChangedEventArgs>(RfidDetected);
        }
Beispiel #2
0
        // Event handler for the event "RFID Detected" from the state machine diagram for the class
        private void RfidDetected(object sender, RfidChangedEventArgs e)
        {
            switch (_lockState)
            {
            case ChargerLockState.Available:
                _display.ShowConnectPhone();
                // Check for charger connection
                if (_charger.IsConnected())
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = e.Rfid;
                    _logger.LogDoorLocked(e.Rfid);
                    _display.ShowOccupied();

                    _lockState = ChargerLockState.Locked;
                }
                else
                {
                    _display.ShowConnectionErr();
                }

                break;

            case ChargerLockState.DoorOpen:
                _display.ShowInputRfid();
                _lockState = ChargerLockState.Available;
                break;

            case ChargerLockState.Locked:
                // Check for correct ID
                if (CheckId(e.Rfid))
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();
                    _logger.LogDoorUnlocked(e.Rfid);
                    _display.ShowRmvPhone();
                    _lockState = ChargerLockState.Available;
                }
                else
                {
                    _display.ShowRfidErr();
                }

                break;
            }
        }
Beispiel #3
0
        private void DoorClosed(object sender, EventArgs e)
        {
            switch (_lockState)
            {
            case ChargerLockState.Available:
                // Error message : Locker cannot be closed whilst available
                break;

            case ChargerLockState.Locked:
                // Error message : Locker is already locked locked
                break;

            case ChargerLockState.DoorOpen:
                _display.ShowInputRfid();
                _lockState = ChargerLockState.Available;
                break;
            }
        }
Beispiel #4
0
        private void DoorOpened(object sender, EventArgs e)
        {
            switch (_lockState)
            {
            case ChargerLockState.Available:
                _display.ShowConnectPhone();
                _lockState = ChargerLockState.DoorOpen;
                break;

            case ChargerLockState.Locked:
                // Error message : Locker is locked
                break;

            case ChargerLockState.DoorOpen:
                // Error message : Locker is already open
                break;
            }
        }