Exemple #1
0
        public StationControl(IDoor door, IRFIDReader rfidReader, IDisplay display,
                              IChargeControl chargeControl, IUSBCharger charger, IFileWriter fileWriter)
        {
            _state = LadeskabsState.Available;

            door.DoorChangedEvent       += HandleDoorChangedEvent;
            rfidReader.RFIDChangedEvent += HandleRFIDChangedEvent;

            _display       = display;
            _fileWriter    = fileWriter;
            _charger       = charger;
            _chargeControl = chargeControl;
            _door          = door;
            _rfidReader    = rfidReader;
        }
Exemple #2
0
        private void HandleRFIDChangedEvent(object s, RFIDChangedEventArgs e)
        {
            switch (_state)
            {
            case LadeskabsState.Available:
                if (_chargeControl.IsConnected())
                {
                    _oldID = e.RFID;
                    _charger.StartCharge();
                    _door.LockDoor();
                    _fileWriter.LogDoorLocked(_oldID);
                    _state = LadeskabsState.Locked;

                    _display.WriteMessage("Box is taken and locked with RFID: " + _oldID);
                }
                else
                {
                    _display.WriteMessage("Phone not connected properly, try connecting again");
                }
                break;

            case LadeskabsState.Locked:
                if (CheckID(_oldID, e.RFID))
                {
                    _charger.StopCharge();
                    _door.UnlockDoor();
                    _fileWriter.LogDoorUnlocked(_oldID);
                    _state = LadeskabsState.Available;

                    _display.WriteMessage("Remove phone");
                }
                else
                {
                    _display.WriteMessage("RFID error");
                }
                break;
            }
        }