Exemplo n.º 1
0
        private void DoorEventHandler(object sender, DoorEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Only if the door opens
                if (e.DoorState == true)
                {
                    _state = LadeskabState.DoorOpen;
                    _display.ConnectPhone();
                }
                else
                {
                    throw new System.Exception("ERROR! Door cannot close when state is Available");
                }
                break;

            case LadeskabState.DoorOpen:
                // Only if the door is closed
                if (e.DoorState == false)
                {
                    _state = LadeskabState.Available;
                    _display.ReadRfid();
                }
                else
                {
                    throw new System.Exception("ERROR! Door cannot open when state is DoorOpen");
                }
                break;

            case LadeskabState.Locked:
                throw new System.Exception("ERROR! Door cannot open when state is Locked!");
            }
        }
Exemplo n.º 2
0
        private void doorStateChangeDetected(DoorEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                if (!e.DoorClosed)
                {
                    _Display.ConnectPhoneRequest();
                    _state = LadeskabState.DoorOpen;
                }
                else
                {
                    _Display.Error();
                }
                break;

            case LadeskabState.DoorOpen:
                if (e.DoorClosed)
                {
                    _Display.ReadRFIDRequest();
                    _state = LadeskabState.Available;
                }
                else
                {
                    _Display.Error();
                }
                break;

            case LadeskabState.Locked:
                _Display.DisplayLockerOccupied();
                break;
            }
        }
Exemplo n.º 3
0
        protected virtual void HandleDoorChange(object sender, DoorOpenEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                if (e.IsOpen)
                {
                    _state = LadeskabState.DoorOpen;
                    _display.NotifyStation("Connect your phone");
                }

                break;

            case LadeskabState.DoorOpen:
                if (!e.IsOpen)
                {
                    _state = LadeskabState.Available;
                    _display.NotifyStation("Scan RFID");
                }

                break;

            case LadeskabState.Locked:
                //ignore
                break;
            }
        }
Exemplo n.º 4
0
        //RFID EVENT HANDLER
        private void RfidDetected(object sender, RFIDEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.connected() && e.RFID > 0 && e.RFID <= 10000)
                {
                    _door.LockDoor();
                    _charger.startCharging();
                    _oldId = e.RFID;
                    _log.LockerLocklog(_oldId);
                    _display.StatusDoorLocked();
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _display.FejlInPhoneConnection();
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                throw new System.Exception("ERROR! DOOR IS OPEN!!!!");

            case LadeskabState.Locked:
                // Check for correct ID
                CheckId(_oldId, e.RFID);

                break;
            }
        }//end RFID detected
Exemplo n.º 5
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;
            }
        }
Exemplo n.º 6
0
        private void DoorClosed(object sender, DoorEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                //ignore
                break;

            case LadeskabState.DoorOpen:
                _state = LadeskabState.Available;

                if (_charger.IsConnected())
                {
                    _disp.DisplayMessage("Indlæs RFID");
                }
                else
                {
                    _disp.DisplayMessage("Ladeskab tilgængelig for en anden telefon");
                }
                break;

            case LadeskabState.Locked:
                //Ignored
                break;
            }
        }
Exemplo n.º 7
0
        //Denne kan ikke testes :? kun hvis vi tester på hvad der skrives ud :? men altså det kan vi ikke. Spørg frank
        private void DoorOpened(object sender, DoorEventArgs e)
        {
            if (e.EventDoorState == DoorState.Opened)
            {
                switch (_state)
                {
                case LadeskabState.Available:
                    _state = LadeskabState.DoorOpen;

                    if (_charger.IsConnected())
                    {
                        _disp.DisplayMessage("Tag telefon fra opladeren");
                    }
                    else
                    {
                        _disp.DisplayMessage("Tilslut telefon");
                    }
                    break;

                case LadeskabState.DoorOpen:
                    // Ignore
                    break;

                case LadeskabState.Locked:
                    _disp.DisplayMessage("Lås skabet op for at kunne åbne skabet");
                    break;
                }
            }
            else
            {
                _disp.DisplayMessage("Fejl, med at åbne døren");
            }
        }
        private void DoorEventHandler(object sender, DoorStateEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                if (e.DoorOpen == true)
                {
                    _state = LadeskabState.DoorOpen;
                    _display.ShowInstruction("Tilslut Telefon");
                }
                break;

            case LadeskabState.DoorOpen:
                if (e.DoorOpen == false)
                {
                    _state = LadeskabState.Available;
                    _display.ShowInstruction("Indlæs RFID");
                }
                else
                {
                    _display.ShowInstruction("Luk døren");
                }
                break;

            case LadeskabState.Locked:

                break;
            }
        }
Exemplo n.º 9
0
        private void doorStateChangeDetected(DoorEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                if (!e.DoorClosed)
                {
                    _Display.displayCommands("Connect phone (and close door(press 'C'))");
                    _state = LadeskabState.DoorOpen;
                }
                else
                {
                    _Display.displayCommands("Error");
                }
                break;

            case LadeskabState.DoorOpen:
                if (e.DoorClosed)
                {
                    _Display.displayCommands("Read rfid (press 'R')");
                    _state = LadeskabState.Available;
                }
                else
                {
                    _Display.displayCommands("Error");
                }
                break;

            case LadeskabState.Locked:
                _Display.displayCommands("Locker is occupied");
                break;
            }
        }
Exemplo n.º 10
0
        // Her mangler de andre trigger handlere
        private void DoorEventHandler(object sender, DoorEventArgs e)  //eventuelt handler
        {
            switch (_state)
            {
            case LadeskabState.Available:

                if (e.DoorState == true)          //Kan åbne door - Ulåst
                {
                    _state = LadeskabState.DoorOpen;
                    _display.UpdateUserMsg("Tilslut Telefon");
                }
                else
                {
                    _display.UpdateUserMsg("Door cannot close when state is Available");
                }
                break;

            case LadeskabState.DoorOpen:
                if (e.DoorState == false)          // Door er closed og ulåst
                {
                    _state = LadeskabState.Available;
                    _display.UpdateUserMsg("Indlæs RFID");
                }
                else
                {
                    _display.UpdateUserMsg("Door cannot open when state = DoorOpen");
                }
                break;

            case LadeskabState.Locked:
                _display.UpdateUserMsg("Door cannot open when state = Locked");
                break;
            }
        }
Exemplo n.º 11
0
        // Eksempel på event handler for eventet "RFID Detected" fra tilstandsdiagrammet for klassen
        private void RfidDetected(object sender, RFIDDetectedEventArgs e)
        {
            switch (_state)
            {
            case LadeskabState.Available:
                // Check for ladeforbindelse
                if (_charger.IsConnected())
                {
                    _door.LockDoor();
                    _charger.StartCharge();
                    _oldId = e.RFIDDetected;
                    _logFileSimulator.LogDoorLocked(e.RFIDDetected);

                    _displaySimulator.ShowPhoneChargingMessage();
                    _state = LadeskabState.Locked;
                }
                else
                {
                    _displaySimulator.ShowConnectionErrorMessage();
                }

                break;

            case LadeskabState.DoorOpen:
                // Ignore
                break;

            case LadeskabState.Locked:
                // Check for correct ID
                CheckId(_oldId, e.RFIDDetected);
                break;
            }
        }
Exemplo n.º 12
0
 public void DoorClosed()
 {
     if (_state == LadeskabState.DoorOpen)
     {
         _state = LadeskabState.Available;
         _display.ShowReadRfid();
     }
 }
Exemplo n.º 13
0
 // event handlers for Door. Displays the appropriate message when the door is opened and closed
 private void DoorOpened(object sender, EventArgs e)
 {
     if (State == LadeskabState.Available)
     {
         State = LadeskabState.DoorOpen;
         _display.PrintStationMsg("Tilslut telefon");
     }
 }
Exemplo n.º 14
0
 private void DoorClosed(object sender, EventArgs e)
 {
     if (State == LadeskabState.DoorOpen)
     {
         State = LadeskabState.Available;
         _display.PrintStationMsg("Indlæs RFID");
     }
 }
Exemplo n.º 15
0
 private void DoorOpened(object sender, EventArgs e)
 {
     if (_state == LadeskabState.Available)
     {
         _state = LadeskabState.DoorOpen;
         _display.ShowConnectDevice();
     }
 }
Exemplo n.º 16
0
 public void DoorOpened()
 {
     if (_state == LadeskabState.Available)
     {
         _state = LadeskabState.DoorOpen;
         _display.ShowConnectPhone();
     }
 }
Exemplo n.º 17
0
 private void DoorClosed(object sender, EventArgs e)
 {
     if (_state == LadeskabState.DoorOpen)
     {
         _state = LadeskabState.Available;
         _display.ShowLoadRfid();
     }
 }
Exemplo n.º 18
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;
            }
        }
Exemplo n.º 19
0
 /* Hardware triggere */
 private void HandleDoorOpenedEvent(object sender, EventArgs args)
 {
     if (_state == LadeskabState.Available)
     {
         _state = LadeskabState.DoorOpen;
         _display.CurrentMessageId = DisplayMessageId.ConnectPhone;
         _display.UpdateDisplay();
     }
 }
Exemplo n.º 20
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;
            }
        }
Exemplo n.º 21
0
 // Her mangler constructor
 public StationControl(IIdReader idReader, IDoor door, IChargeControl charger, ILogger log)
 {
     idReader.IdReadEvent += HandleReadEvent;
     door.DoorEvent       += HandleDoorEvent;
     _charger              = charger;
     _door   = door;
     _state  = LadeskabState.Available;
     _logger = log;
 }
Exemplo n.º 22
0
 private void HandleDoorCloseEvent(object sender, EventArgs args)
 {
     if (_state == LadeskabState.DoorOpen || _state == LadeskabState.Available)
     {
         _state = LadeskabState.Available;
         _display.CurrentMessageId = DisplayMessageId.WaitingRfid;
         _display.UpdateDisplay();
     }
 }
        // 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;
            }
        }
Exemplo n.º 24
0
        private void DoorClosed(object sender, DoorCloseEventArgs e)
        {
            if (_state == LadeskabState.DoorOpen)
            {
                _state = LadeskabState.Available;

                _displaySimulator.ShowReadRfidMessage();
            }
        }
Exemplo n.º 25
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;
            }
        }
Exemplo n.º 26
0
 public StationControl(IChargeControl Charger, IDoor Door, IRfidReader RfidReader, IDisplay Display, ILogger Logger)
 {
     _charger                 = Charger;
     _door                    = Door;
     _rfidReader              = RfidReader;
     _logger                  = Logger;
     _display                 = Display;
     _state                   = LadeskabState.Available;
     _door.DoorChangeEvent   += new EventHandler <DoorOpenEventArgs>(HandleDoorChange);
     _rfidReader.ReadIdEvent += new EventHandler <RfidReadEventArgs>(HandleRfidRead);
 }
 public StationControl(IChargeControl charger, IDoor door, IScanner scanner, IDisplay display, ILog log)
 {
     _charger           = charger;
     _door              = door;
     door.StateChanged += DoorChanged;
     _display           = display;
     _Log               = log;
     _scanner           = scanner;
     scanner.ScanEvent += RfidDetected;
     _state             = LadeskabState.Available;
 }
Exemplo n.º 28
0
        //Triggerhandlers for DoorSimulator

        private void DoorOpened(object sender, DoorStatusEventArgs e)
        {
            if (_state == LadeskabState.Available)
            {
                if (!e.DoorLocked)
                {
                    _state = LadeskabState.DoorOpen;
                    _display.ShowMessage("Tilslut telefon");
                }
            }
        }
Exemplo n.º 29
0
 private void DoorClosed(object sender, DoorStatusEventArgs e)
 {
     if (_state == LadeskabState.DoorOpen)
     {
         if (e.DoorLocked)
         {
             _state = LadeskabState.Available;
             _display.ShowMessage("Indlæs RFID");
         }
     }
 }
Exemplo n.º 30
0
 public StationControl(IDoor door, IChargerControl chargeControl, IRfIdReader rfIdReader, Ilog log, IDisplay display)
 {
     _door          = door;
     _chargeControl = chargeControl;
     _rfIdReader    = rfIdReader;
     _display       = display;
     _log           = log;
     _state         = LadeskabState.Available;
     _door.DoorStateChangedEvent   += HandleDoorStateChangedEvent;
     _rfIdReader.RfIdDetectedEvent += HandleRfidDetectedEvent;
 }