Exemplo n.º 1
0
 /// <summary>
 /// Tells the logical layer that the update output message was successfully sent
 /// Allows the Logical layer to then update the ui with that information
 /// </summary>
 /// <param name="inEvent"></param>
 public void updateOutputSent(UpdateOutputEvent inEvent)
 {
     if (_updateUIDelegate != null)
     {
         _updateUIDelegate.updateOutputState(inEvent);
     }
 }
Exemplo n.º 2
0
        private void changeOutput(DIOPins pinToChange, bool shouldSetHigh)
        {
            UpdateOutputEvent clickTarget = new UpdateOutputEvent(pinToChange, shouldSetHigh);

            if (_uiDelegate != null)
            {
                log.Debug(string.Format("Adding UpdateOutputEvent (pin to set : {0} should set high : {1}) to UIProcessing queue", pinToChange, shouldSetHigh));
                _uiDelegate.enqueueEvent(clickTarget);
            }
        }
Exemplo n.º 3
0
        public void updateOutputState(UpdateOutputEvent inEvent)
        {
            switch (inEvent._pinToUpdate)
            {
            case DIOPins.Heater_AN1:
                if (inEvent._shouldBeHigh)
                {
                    Dispatcher.Invoke((Action) delegate() { heaterIOBox.IsChecked = true; });
                }
                else
                {
                    Dispatcher.Invoke((Action) delegate() { heaterIOBox.IsChecked = false; });
                }
                break;

            case DIOPins.AirSolenoid_AN0:
                if (inEvent._shouldBeHigh)
                {
                    Dispatcher.Invoke((Action) delegate() { airIOBox.IsChecked = true; });
                }
                else
                {
                    Dispatcher.Invoke((Action) delegate() { airIOBox.IsChecked = false; });
                }
                break;

            case DIOPins.WaterPump_AN2:
                if (inEvent._shouldBeHigh)
                {
                    Dispatcher.Invoke((Action) delegate() { waterIOBox.IsChecked = true; });
                }
                else
                {
                    Dispatcher.Invoke((Action) delegate() { waterIOBox.IsChecked = false; });
                }
                break;

            case DIOPins.AirPump_AN3:
                if (inEvent._shouldBeHigh)
                {
                    Dispatcher.Invoke((Action) delegate() { airPumpIOBox.IsChecked = true; });
                }
                else
                {
                    Dispatcher.Invoke((Action) delegate() { airPumpIOBox.IsChecked = false; });
                }
                break;

            default:
                break;
            }
        }
Exemplo n.º 4
0
 public void controlOutput(UpdateOutputEvent inEvent)
 {
     if (_deviceConnected)
     {
         log.Debug(string.Format("Trying to set pin {0} to state {1}", inEvent._pinToUpdate, inEvent._shouldBeHigh));
         bool oldValue;
         _pinStates.TryGetValue(inEvent._pinToUpdate, out oldValue);
         _physicalLayer.setOutputState(inEvent);
         _pinStates.TryUpdate(inEvent._pinToUpdate, inEvent._shouldBeHigh, oldValue);
     }
     else
     {
         log.Error("Can not control output pins because device is not connected");
     }
 }
Exemplo n.º 5
0
        public void setOutputState(UpdateOutputEvent inEvent)
        {
            int newPinState;

            if (inEvent._shouldBeHigh)
            {
                newPinState = 0x01;
            }
            else
            {
                newPinState = 0x00;
            }
            log.Debug(string.Format("Sending DigitalIOControl message to turn pin {0} to state {1}", (int)inEvent._pinToUpdate, newPinState));
            sendMessage(inEvent, buildMessage(new List <int> {
                0x05, 0x35, (int)inEvent._pinToUpdate, 0x00, newPinState
            }));
        }
Exemplo n.º 6
0
        //*************************** EventInterface End **************************************************//



        /// <summary>
        /// Method which the processing thread will execute in order to
        /// process the ui event queue.
        ///
        /// Will stop when the _shouldStop flag is set
        /// </summary>
        private void processQueue()
        {
            while (!_shouldStop)
            {
                //Get out the newest event
                log.Debug("Waiting for new event in UIHandle_LLSL processing queue");
                _enqueueEvent.WaitOne(100);
                if (_eventQueue.Count() < 1)
                {
                    continue;
                }
                log.Debug("UIHandle_LLSL processing thread received item enqueued event");
                Event newEvent;
                bool  dequeueSuccessful = _eventQueue.TryDequeue(out newEvent);
                if (!dequeueSuccessful)
                {
                    continue;
                }
                log.Info(string.Format("UIHandle_LLSL processing queue dequeued event {0}", newEvent.getEventIdentifier()));

                //Decide what to do with the event
                switch (newEvent.getEventIdentifier())
                {
                case EventIdentifier.GenericEvent:
                    break;

                case EventIdentifier.ConnectRequest:
                    log.Debug("Handling ConnectRequest ui event");
                    handleConnectEvent();
                    break;

                case EventIdentifier.ToggleLEDRequest:
                    log.Debug("Handling toggleLED ui event");
                    handleToggleLEDEvent();
                    break;

                case EventIdentifier.FlashLEDRequest:
                    log.Debug("Handling flashLED ui event");
                    handleFlashLEDEvent();
                    break;

                case EventIdentifier.ChangeLEDStateRequest:
                    ChangeLEDStateEvent changeLEDEvent = (ChangeLEDStateEvent)newEvent;
                    bool ledIsHigh = changeLEDEvent._isHigh;
                    log.Debug(string.Format("Handling changeLED (setting high: {0}) ui event", changeLEDEvent._isHigh));
                    handleChangeLEDStateEvent(ledIsHigh);
                    break;

                case EventIdentifier.ToggleOutputRequest:
                    ToggleOutputEvent toggleOutputEvent = (ToggleOutputEvent)newEvent;
                    DIOPins           pinToToggle       = toggleOutputEvent._pinToToggle;
                    log.Debug(string.Format("Handling toggleOutput (toggle pin: {0}) ui event", toggleOutputEvent._pinToToggle));
                    handleToggleOutputEvent(pinToToggle);
                    break;

                case EventIdentifier.StartSequencerRequest:
                    log.Debug("Handling startTestSequence ui event");
                    StartSequencerEvent sequencerEvent = (StartSequencerEvent)newEvent;
                    handleStartSequencerEvent(sequencerEvent);
                    break;

                case EventIdentifier.UpdateOutputRequest:
                    log.Debug("Handling updateOutput UI Event");
                    UpdateOutputEvent updateOutput = (UpdateOutputEvent)newEvent;
                    DIOPins           pinToChange  = updateOutput._pinToUpdate;
                    bool shouldSetHigh             = updateOutput._shouldBeHigh;
                    handleUpdateOutputEvent(pinToChange, shouldSetHigh);
                    break;

                default:
                    break;
                }
            }
        }