Example #1
0
 void IDispatcher.SetSignals(SignalsMessage pMessage)
 {
     MessageReceived = true;
     SyncContext.Post(async(object state) => {
         try {
             await Region.UpdateFromRun8Async(pMessage);
         } catch (CommunicationException) {
             LinkError = true;
         }
     }, null);
 }
Example #2
0
        void IDispatcher.SetSignals(SignalsMessage pMessage)
        {
            IDispatcher target;

            lock (this) {
                target = Target;
            }
            if (target != null)
            {
                target.SetSignals(pMessage);
            }
        }
Example #3
0
        /// <summary>
        /// Updates the indications of all controlled signals in this region.
        /// </summary>
        /// <param name="message">The received data.</param>
        public async Task UpdateFromRun8Async(SignalsMessage message)
        {
            SubArea subArea;

            if (SubAreas.TryGetValue((ushort)message.Route, out subArea))
            {
                await subArea.UpdateFromRun8Async(message);
            }
            else if (squelchUnknownSubAreas.Add(message.Route))
            {
                Debug.Print("Received update for unknown sub-area " + message.Route + ".");
            }
        }
Example #4
0
        /// <summary>
        /// Updates the indications of all controlled signals in this sub-area.
        /// </summary>
        /// <param name="message">The received data.</param>
        public async Task UpdateFromRun8Async(SignalsMessage message)
        {
            int count = Math.Min(ControlledSignals.Count, message.Signals.Count);

            Task[] tasks = new Task[count];
            for (int i = 0; i != count; ++i)
            {
                tasks[i] = ControlledSignals[i].UpdateFromRun8Async(message.Signals[i]);
            }
            foreach (Task i in tasks)
            {
                await i;
            }
            if (ControlledSignals.Count != message.Signals.Count && !SignalCountMismatchPrinted)
            {
                Debug.Print("Sub-area " + ID + " was configured with " + ControlledSignals.Count + " controlled signals but Run8 claims it has " + message.Signals.Count + ".");
                SignalCountMismatchPrinted = true;
            }
        }
Example #5
0
 public virtual void SetSignals(SignalsMessage pMessage)
 {
 }