예제 #1
0
 public void StopChargingICalled()
 {
     //Act
     uut_.StopCharge();
     //Assert
     usbCharger_.Received(1).StopCharge();
 }
예제 #2
0
        private void RfidDetected(int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.IsConnected())
                {
                    _door.LockDoor();


                    _charger.StartCharge();
                    _oldId = id;

                    _logFile.LockDoorLog(id);

                    _display.ShowMessageOccupiedLocker();
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.ShowMessageConnectionIsFailed();
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                DoorOpened();
                _state = LadeskabState.Available;

                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();

                    _logFile.UnLockDoorLog(id);

                    _display.ShowMessageCorrectId();

                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.ShowMessageWrongId();
                }

                break;

            case LadeskabState.DoorClosed:
                DoorClosed();
                // _state = LadeskabState.Available;

                break;
            }
        }
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(object sender, RfidDetectedEventArgs eventArgs)
        {
            int id = eventArgs.id;

            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.IsConnected())
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = id;
                    using (var writer = File.AppendText(logFile))
                    {
                        writer.WriteLine(DateTime.Now + ": Skab låst med RFID: {0}", id);
                    }

                    _display.Display("Ladeskab optaget");
                    Console.WriteLine("Skabet er låst og din telefon lades. Brug dit RFID tag til at låse op.");
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.Display("Tilslutningsfejl");
                    Console.WriteLine("Din telefon er ikke ordentlig tilsluttet. Prøv igen.");
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();
                    using (var writer = File.AppendText(logFile))
                    {
                        writer.WriteLine(DateTime.Now + ": Skab låst op med RFID: {0}", id);
                    }
                    _display.Display("Fjern telefon");
                    Console.WriteLine("Tag din telefon ud af skabet og luk døren");
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.Display("RFID fejl");
                    Console.WriteLine("Forkert RFID tag");
                }

                break;
            }
        }
        public void ChargeControl_StopCharge_Calls_UsbCharger_StopCharge()
        {
            //Arrange

            //Act
            _chargeControl.StopCharge();
            //Assert
            _usbCharger.Received(1).StopCharge();
        }
예제 #5
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_chargeControl.Connected)
                {
                    _door.LockDoor();

                    //_charger.StartCharge();
                    _chargeControl.StartCharge();

                    _oldId = id;

                    _log.LockwriteToFile(id);

                    _display.UnlockWithID();

                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.NoConnection();
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _oldId = id;

                    //_charger.StopCharge();
                    _chargeControl.StopCharge();

                    _door.UnlockDoor();

                    _log.UnlockWriteToFile(id);

                    _display.RemovePhone();

                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.WrongID();
                }

                break;
            }
        }
예제 #6
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.IsConnected())
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = id;
                    using (var writer = File.AppendText(logFile))
                    {
                        writer.WriteLine(DateTime.Now + ": Skab låst med RFID: {0}", id);
                    }

                    _display.print("Skabet er låst og din telefon lades. Brug dit RFID tag til at låse op.");


                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.print("Din telefon er ikke ordentlig tilsluttet. Prøv igen.");
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();

                    using (var writer = File.AppendText(logFile))
                    {
                        writer.WriteLine(DateTime.Now + ": Skab låst op med RFID: {0}", id);
                    }

                    _display.print("Åben lågen og tag din telefon.");


                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.print("Forkert RFID tag.");
                }

                break;
            }
        }
예제 #7
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(object sender, int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (!_chargeControl.IsConnected())
                {
                    _display.ShowConnectionError();
                }
                else
                {
                    try
                    {
                        _chargeControl.StartCharge();

                        _door.Lock();
                        _oldId = id;
                        _logger.LogDoorLocked(id);

                        _display.ShowChargingLockerOccupied();
                        _state = LadeskabState.Locked;
                    }
                    catch (NotConnectedException ex)
                    {
                        _display.ShowConnectionError();
                    }
                }
                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                bool idIsOk = CheckId(_oldId, id);

                if (idIsOk)
                {
                    _chargeControl.StopCharge();
                    _door.Unlock();
                    _logger.LogDoorUnlocked(id);

                    _display.ShowRemoveDevice();
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.ShowRfidError();
                }

                break;
            }
        }
예제 #8
0
        public void RfidDetected(int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse

                if (_chargeControl.IsConnected())
                {
                    _door.LockDoor();
                    _oldId = id;

                    _logfile.LogDoorLocked(id);

                    _display.Display1Message("Skabet er låst og din telefon lades. Brug dit RFID tag til at låse op.");
                    _state = LadeskabState.Locked;


                    _chargeControl.StartCharge();
                }
                else
                {
                    _display.Display1Message("Din telefon er ikke ordentlig tilsluttet. Prøv igen.");
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _chargeControl.StopCharge();
                    _door.UnlockDoor();


                    _logfile.LogDoorUnlocked(id);

                    _display.Display1Message("Tag din telefon ud af skabet og luk døren");
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.Display1Message("Forkert RFID tag");
                }

                break;
            }
        }
예제 #9
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(object sender, EventArg.RFIDEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.IsConnected())
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = e.id;
                    _log.LogWhenDoorLock(e.id);

                    _display.DisplayMsg(MessageType.PhoneCharging);
                    _display.DisplayMsg(MessageType.RfidRead);
                    //Console.WriteLine("Skabet er låst og din telefon lades. Brug dit RFID tag til at låse op.");
                    _state = LadeskabState.Locked;
                    _log.LogWhenDoorLock(e.id);
                }
                else
                {
                    _display.DisplayMsg(MessageType.ConnectionError);
                    //Console.WriteLine("Din telefon er ikke ordentlig tilsluttet. Prøv igen.");
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (e.id == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();
                    _log.LogWhenDoorUnlock(e.id);

                    _display.DisplayMsg(MessageType.DisconnectPhone);
                    //Console.WriteLine("Tag din telefon ud af skabet og luk døren");
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.DisplayMsg(MessageType.RfidWrong);
                    //Console.WriteLine("Forkert RFID tag");
                }

                break;
            }
        }
예제 #10
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_chargeControl.isConnected())
                {
                    _Door.LockDoor();
                    _chargeControl.StartCharge();
                    _oldId = id;
                    using (var writer = File.AppendText(logFile))
                    {
                        writer.WriteLine(DateTime.Now.ToLongDateString() + ": Skab låst med RFID: {0}", id);
                    }

                    _Display.displayCommands("Skabet er låst og din telefon lades. Brug dit RFID tag til at låse op.");
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _Display.displayCommands("Din telefon er ikke ordentlig tilsluttet. Prøv igen.");
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _chargeControl.StopCharge();
                    _Door.UnlockDoor();
                    using (var writer = File.AppendText(logFile))
                    {
                        writer.WriteLine(DateTime.Now.ToLongDateString() + ": Skab låst op med RFID: " + id.ToString());
                    }

                    _Display.displayCommands("Tag din telefon ud af skabet og luk døren");
                    _state = LadeskabState.Available;
                }
                else
                {
                    _Display.displayCommands("Forkert RFID tag");
                }

                break;
            }
        }
예제 #11
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.IsConnected())
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = id;
                    using (var writer = File.AppendText(logFile))
                    {
                        writer.WriteLine(DateTime.Now + ": Skab låst med RFID: {0}", id);
                    }

                    _display.DisplayChargingDoorLocked();
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.DisplayConnectionError();
                }

                break;

            /*case LadeskabState.DoorOpen:
             *  // Ignore
             *  break;*/

            case LadeskabState.Locked:
                // Check for correct ID
                if (CheckId(id))
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();
                    using (var writer = File.AppendText(logFile))
                    {
                        writer.WriteLine(DateTime.Now + ": Skab låst op med RFID: {0}", id);
                    }

                    _display.DisplayRemoveTelephone();
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.DisplayRfidError();
                }

                break;
            }
        }
예제 #12
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_chargeControl.IsConnected() && _doorOpenState == false)
                {
                    _door.LockDoor();
                    _chargeControl.StartCharge();
                    _oldId = id;
                    _filelogger.LogDoorLocked(id);

                    _consoleWriter.LockedMessage();                 //Skriver at skabet er låst
                    _state        = LadeskabState.Locked;
                    _stationState = (int)_state;
                }
                else
                {
                    _consoleWriter.NotConnectedMessage();           // Mobilen sidder ikke ordenligt i lader besked
                }

                break;

            case LadeskabState.DoorOpen:

                _consoleWriter.CloseDoorMessage();


                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _chargeControl.StopCharge();
                    _door.UnlockDoor();
                    _filelogger.LogDoorUnlocked(id);

                    _consoleWriter.UnlockedMessage();               // Døren er oplåst besked
                    _state        = LadeskabState.Available;
                    _stationState = (int)_state;
                }
                else
                {
                    _consoleWriter.WrongRFid();                     //Forkert RF-id besked
                }

                break;
            }
        }
예제 #13
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        public void RfidDetected(int id)
        {
            if (id < 0)
            {
                _logger.log("Id was negative", id);
                return;
            }
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.Connected)
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = id;
                    _logger.log(": Skab låst op med RFID: {0}", id);

                    Console.WriteLine("Skabet er låst og din telefon lades. Brug dit RFID tag til at låse op.");
                    _state = LadeskabState.Locked;
                }
                else
                {
                    Console.WriteLine("Din telefon er ikke ordentlig tilsluttet. Prøv igen.");
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();
                    _logger.log(": Skab låst op med RFID: {0}", id);

                    Console.WriteLine("Tag din telefon ud af skabet og luk døren");
                    _state = LadeskabState.Available;
                }
                else
                {
                    Console.WriteLine("Forkert RFID tag");
                }

                break;
            }
        }
예제 #14
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        public void RfidDetected(object sender, RFIDEventArgs e)
        {
            switch (_state)
            {
            case ChargingCabinetState.Available:
                // Check for ladeforbindelse
                if (_chargeControl.IsConnected())
                {
                    _door.LockDoor();
                    _oldId = e.RFID;

                    _logfile.WriteToLogLocked(_oldId);

                    _display.ChargingCabinetTaken();
                    _state = ChargingCabinetState.Locked;
                    _chargeControl.StartCharge();
                }
                else
                {
                    _display.ConnectionFail();
                }

                break;

            case ChargingCabinetState.DoorOpen:
            {
                _display.CloseDoor();
            }
            break;

            case ChargingCabinetState.Locked:
                // Check for correct ID
                if (e.RFID == _oldId)
                {
                    _chargeControl.StopCharge();
                    _door.UnlockDoor();

                    _logfile.WriteToLogUnlocked(_oldId);

                    _display.RemovePhone();
                    _state = ChargingCabinetState.Available;
                }
                else
                {
                    _display.RFIDFail();
                }

                break;
            }
        }
예제 #15
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        //Metode til når man scanner id-kortet på Rfid-readeren
        private void RfidDetected(int id)
        {
            switch (_state)
            {
            case ChargeBoxState.Available:
                // Check for ladeforbindelse
                if (_charger.GetConnected())
                {
                    _doorSimulator.LockDoor();
                    _charger.StartCharge();
                    _oldId = id;

                    _fileLog.LogDoorLocked(id);

                    _display.Print("Skabet er låst og din telefon lades. Brug dit RFID tag til at låse op.");

                    _state = ChargeBoxState.Locked;
                }
                else
                {
                    _display.Print("Din telefon er ikke ordentlig tilsluttet. Prøv igen.");
                }

                break;

            case ChargeBoxState.DoorOpen:
                // Ignore
                break;

            case ChargeBoxState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _charger.StopCharge();

                    _doorSimulator.UnlockDoor();

                    _fileLog.LogDoorUnlocked(id);

                    _display.Print("Tag din telefon ud af skabet og luk døren");
                    _state = ChargeBoxState.Available;
                }
                else
                {
                    _display.Print("Forkert RFID tag");
                }

                break;
            }
        }
예제 #16
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                //_chargeControl.IsConnected();//returnere en boolean
                //if (_charger.Connected) //Burde det ikke være _chargeControl.IsConnected?
                if (_chargeControl.IsConnected())
                {
                    _door.LockDoor("Døren er lukket");
                    //_charger.StartCharge(); //Burde det ikke være _ChargeControl.StartCharge() - Kia
                    _chargeControl.StartCharge();
                    _oldId = id;
                    _log.LogLadeskabAvailable(id);
                    Console.WriteLine("Skabet er låst og din telefon lades. Brug dit RFID tag til at låse op.");
                    _state = LadeskabState.Locked;
                }
                else
                {
                    Console.WriteLine("Din telefon er ikke ordentlig tilsluttet. Prøv igen.");
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    //_charger.StopCharge();
                    _chargeControl.StopCharge();
                    _door.UnlockDoor("Døren er åbnet");
                    _log.LogLadeskabLocked(id);
                    Console.WriteLine("Tag din telefon ud af skabet og luk døren");
                    _state = LadeskabState.Available;
                }
                else
                {
                    //Fejl, skulle det ikke være display som udskriver alt? og hvis, evt. ændre de andre steder
                    //Console.WriteLine("Forkert RFID tag");
                    _display.writeDisplay("Forkert RFID tag");
                }

                break;
            }
        }
예제 #17
0
        public void ChargeControl_StopCharge_ConnectedIsTrue_stopChargeIsCalled()
        {
            //Arrange
            _charger           = Substitute.For <ICharger>();
            _display           = Substitute.For <IDisplay>();
            _uut               = new ChargeControl(_charger, _display);
            _charger.Connected = true;

            //Act
            _uut.StopCharge();

            //Assert
            _charger.Received().StopCharge();
        }
        //Event Handlers:
        private void RfidReader_TagReadEvent(object sender, EventArgsClasses.RfidEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_chargeControl.IsConnected())
                {
                    _door.LockDoor();
                    _chargeControl.StartCharge();
                    _oldId = e.Id;

                    _display.CabinetOccupied();
                    _state = LadeskabState.Locked;
                    _logFile.DoorLocked(e.Id);
                }
                else
                {
                    //Display shows connection error
                    _display.ConnectionError();
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (e.Id == _oldId)
                {
                    _chargeControl.StopCharge();
                    _door.UnlockDoor();
                    _logFile.DoorUnlocked(e.Id);

                    // Display shows remove phone - message
                    _display.RemovePhone();
                    _state = LadeskabState.Available;
                }
                else
                {
                    //Display shows RFID-Error
                    _display.RFIDError();
                }

                break;
            }
        }
예제 #19
0
        private void RfidDetected(int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (ChargerIsConnected)
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = id;
                    _logFile.LogDoorLocked(_oldId);

                    _display.PrintStationLockedUseID();
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.PrintConnectionFail();
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                _display.PrintDoorIsOpen();
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();
                    _logFile.LogDoorUnlocked(_oldId);

                    _display.PrintTakePhoneCloseDoor();
                    _oldId = 0;
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.PrintWrongRFidTag();
                    _display.PrintStationOccupied();
                }

                break;
            }
        }
예제 #20
0
        //Triggerhandler for RfidReader

        private void RfidDetected(object sender, RfidEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.IsConnected())
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = e.Id;

                    _log.LogDoorLocked(e.Id);

                    _display.ShowMessage("Skabet er låst og din telefon lades. Brug dit RFID tag til at låse op.");
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.ShowMessage("Din telefon er ikke ordentlig tilsluttet. Prøv igen.");
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (e.Id == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();

                    _log.LogDoorUnlocked(e.Id);

                    _display.ShowMessage("Tag din telefon ud af skabet og luk døren");
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.ShowMessage("Forkert RFID tag");
                }

                break;
            }
        }
예제 #21
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.Connected)
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = id;
                    _logger.WriteToLog("Locked with RFID: " + id);

                    _display.NotifyStation("The locker is locked and your phone is charging. Use your RFID tag to unlock it.");
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.NotifyStation("Your phone is not connected properly. Try again");
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();

                    _logger.WriteToLog("Locker unlocked with RFID: " + id);


                    _display.NotifyStation("Grab your phone and close the door");
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.NotifyStation("Wrong RFID tag");
                }

                break;
            }
        }
예제 #22
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetectedHandler(object sender, RfidDetectedEventArgs arg)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_chargeControl.IsConnected())
                {
                    _door.LockDoor();
                    _chargeControl.StartCharge();
                    _oldId = arg.Id;

                    _log.logWrite(1, _oldId);
                    _display.CloseDoorMsg();

                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.CloseDoorErrorMsg();
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (arg.Id == _oldId)
                {
                    _chargeControl.StopCharge();
                    _door.UnlockDoor();

                    _log.logWrite(2, _oldId);
                    _display.UnlockDoorMsg();

                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.UnlockDoorErrorMsg();
                }

                break;
            }
        }
예제 #23
0
        private void CheckId(int OldId, int Id)
        {
            if (Id == OldId)
            {
                _charger.StopCharge();
                _door.UnlockDoor();
                _logFileSimulator.LogDoorUnlocked(Id);

                _displaySimulator.ShowTakePhoneAndCloseDoorMessage();
                _state = LadeskabState.Available;
            }
            else
            {
                _displaySimulator.ShowRfidErrorMessage();
            }
        }
예제 #24
0
        private void HandleRfidDetectedEvent(object sender, KeySwipedEventArgs e)
        {
            ReadRFIDTag = e.Id;
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.Connected())
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = ReadRFIDTag;
                    _logfile.Log($"{DateTime.Now.ToString()}: {ReadRFIDTag} locked the door.");

                    _display.Print("Door was locked using key.");
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.Print("Connect your phone first!");
                }

                break;

            case LadeskabState.DoorOpen:
                _display.Print("Please close door before swiping!");
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (ReadRFIDTag == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();
                    _logfile.Log($"{DateTime.Now.ToString()}: {ReadRFIDTag} unlocked the door.");

                    _display.Print("Disconnect phone");
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.Print(" is an incorrect key.");
                }

                break;
            }
        }
예제 #25
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(int id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_chargeControl.IsConnected())
                {
                    _door.LockDoor();
                    _chargeControl.StartCharge();
                    _oldId = id;
                    _logFile.LogDoorLocked(id);

                    _display.ShowOccupied();
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.ShowConnectionError();
                }

                break;

            //case LadeskabState.DoorOpen:
            //    // Ignore
            //    break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (CheckId(_oldId, id))
                {
                    _chargeControl.StopCharge();
                    _door.UnlockDoor();
                    _logFile.LogDoorUnlocked(id);

                    _display.ShowRemovePhone();
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.ShowRfidError();
                }

                break;
            }
        }
예제 #26
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        public void RfidDetected(string id)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_chargeControl.Connected)
                {
                    _door.LockDoor();
                    _chargeControl.StartCharge();
                    _oldId = id;
                    _log.DoorLocked(id);

                    _display.PrintChargingOn();

                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.PrintConnectionError();
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (id == _oldId)
                {
                    _chargeControl.StopCharge();
                    _door.UnlockDoor();
                    _log.DoorUnlocked(id);
                    _display.PrintRemoveDevice();
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.PrintRfidFail();
                }

                break;
            }
        }
예제 #27
0
        private void RfidDetected(object sender, RfidEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.IsConnected())
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = e.Id;
                    filelog.LogFile("Skab låst med RFID: " + e.Id);

                    _state = LadeskabState.Locked;
                    _display.UpdateUserMsg("Skabet er låst og din telefon lades. Brug dit RFID tag til at låse op.");
                }
                else
                {
                    _display.UpdateUserMsg("Din telefon er ikke ordentlig tilsluttet. Prøv igen.");
                }

                break;

            case LadeskabState.DoorOpen:
                _display.UpdateUserMsg("Dør er allerede åbnet med et RF-ID");
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (e.Id == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();
                    filelog.LogFile("Skab låst op med RFID: " + e.Id);

                    _display.UpdateUserMsg("Tag din telefon ud af skabet og luk døren");
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.UpdateUserMsg("Forkert RFID tag");
                }
                break;
            }
        }
예제 #28
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(object sender, RfidEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.IsConnected())
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = e.Id;
                    _logfile.LogDoorLocked(e.Id);

                    _display.StateChangedToLocked();
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.ErrorInPhoneConnection();
                }

                break;

            case LadeskabState.DoorOpen:
                throw new System.Exception("ERROR! RFID cannot be received when state is DoorOpen");

            case LadeskabState.Locked:
                // Check for correct ID
                if (e.Id == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();
                    _logfile.LogDoorUnlocked(e.Id);

                    _display.StateChangedToUnlocked();
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.RfidNoMatch();
                }
                break;
            }
        }
        /* Region content:
         * RfidDetected(object o, ScanEventArgs e)
         * DoorChanged(object o, DoorEventArgs e)
         */
        #region Handlers
        // method for event handler in RFIDscanner.
        private void RfidDetected(object o, ScanEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.isConnected())
                {
                    _door.LockDoor();
                    _oldId = e.ScannedId;
                    _Log.LogDoorLocked(e.ScannedId);
                    _charger.StartCharge();
                    _display.Busy();
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.ConnectionError();
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                if (e.ScannedId == _oldId)
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();
                    _Log.LogDoorUnlocked(e.ScannedId);
                    _display.PhoneDone();
                    _state = LadeskabState.Available;
                }
                else
                {
                    _display.RFIDError();
                }
                break;
            }
        }
예제 #30
0
        private void HandleRFIDRead(Object s, RFIDReadEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                if (_chargeControl.IsConnected())
                {
                    _door.LockDoor();
                    _logfile.LogDoorLocked(e.ID);
                    _oldId = e.ID;
                    _state = LadeskabState.Locked;
                    _display.DisplayUserInstructions("Ladeskab optaget.");
                    _chargeControl.StartCharge();
                }
                else
                {
                    _display.DisplayUserInstructions("Tilslutningsfejl.");
                }
                break;

            case LadeskabState.DoorOpen:
                _display.DisplayUserInstructions("Luk døren.");
                break;

            case LadeskabState.Locked:
                if (e.ID == _oldId)
                {
                    _chargeControl.StopCharge();
                    _door.UnlockDoor();
                    _logfile.LogDoorUnlocked(e.ID);
                    _state = LadeskabState.Available;
                    _display.DisplayUserInstructions("Fjern telefon.");
                }
                else
                {
                    _display.DisplayUserInstructions("Forkert RFID tag.");
                }
                break;
            }
        }