public SerialSignal GetSignals()
        {
            uint flags;

            if (!GetCommModemStatus(handle, out flags))
            {
                ReportIOError(null);
            }

            SerialSignal signals = SerialSignal.None;

            if ((flags & RsldOn) != 0)
            {
                signals |= SerialSignal.Cd;
            }
            if ((flags & CtsOn) != 0)
            {
                signals |= SerialSignal.Cts;
            }
            if ((flags & DsrOn) != 0)
            {
                signals |= SerialSignal.Dsr;
            }

            return(signals);
        }
        public void SetSignal(SerialSignal signal, bool value)
        {
            if (signal != SerialSignal.Rts && signal != SerialSignal.Dtr)
            {
                throw new Exception("Wrong internal value");
            }

            uint flag;

            if (signal == SerialSignal.Rts)
            {
                if (value)
                {
                    flag = SetRts;
                }
                else
                {
                    flag = ClearRts;
                }
            }
            else if (value)
            {
                flag = SetDtr;
            }
            else
            {
                flag = ClearDtr;
            }

            if (!EscapeCommFunction(handle, flag))
            {
                ReportIOError(null);
            }
        }
Ejemplo n.º 3
0
        public SerialSignal GetSignals()
        {
            int          error;
            SerialSignal signals = get_signals(fd, out error);

            if (error == -1)
            {
                ThrowIOException();
            }

            return(signals);
        }
Ejemplo n.º 4
0
        public void SetSignal(SerialSignal signal, bool value)
        {
            if (signal < SerialSignal.Cd || signal > SerialSignal.Rts ||
                signal == SerialSignal.Cd ||
                signal == SerialSignal.Cts ||
                signal == SerialSignal.Dsr)
            {
                throw new Exception("Invalid internal value");
            }

            if (set_signal(fd, signal, value) == -1)
            {
                ThrowIOException();
            }
        }
Ejemplo n.º 5
0
        public void SetSignal(SerialSignal signal, bool value)
        {
            if (signal < SerialSignal.Cd || signal > SerialSignal.Rts ||
                    signal == SerialSignal.Cd ||
                    signal == SerialSignal.Cts ||
                    signal == SerialSignal.Dsr)
                throw new Exception("Invalid internal value");

            if (set_signal(fd, signal, value) == -1)
                ThrowIOException();
        }
Ejemplo n.º 6
0
 static extern int set_signal(int fd, SerialSignal signal, bool value);
		static int set_signal (int fd, SerialSignal signal, bool value)
		{
			throw new System.NotImplementedException();
		}
Ejemplo n.º 8
0
        //step back
        protected override void NotifyBack(IColorable from, SerialSignal signal)
        {
            if (from != Output && from!=this)
                return;

            if (!SignalIfCan())
                return;
            Signal = signal;

            base.NotifyBack(this, signal);
            InvokeOnNotifyBack();
            SplitNotify(Input,signal);
        }
		public void SetSignal (SerialSignal signal, bool value)
		{
			if (signal != SerialSignal.Rts && signal != SerialSignal.Dtr)
				throw new Exception ("Wrong internal value");

			uint flag;
			if (signal == SerialSignal.Rts)
				if (value)
					flag = SetRts;
				else
					flag = ClearRts;
			else
				if (value)
					flag = SetDtr;
				else
					flag = ClearDtr;

			if (!EscapeCommFunction (handle, flag))
				ReportIOError (null);
		}
Ejemplo n.º 10
0
        /* public override IEnumerable<KeyValuePair<GraphNode, int>> GetNextNodes()
        {

            var connections = GetAllConnections();
            return connections.Select(connection =>
                {
                    if (connection == null || connection.To == null || connection.To.Parent == null)
                        return new KeyValuePair<GraphNode, int>(null,0);
                    return new KeyValuePair<GraphNode, int>(connection.To.Parent,connection.Length);
                }).Where(graphNode => graphNode.Key != null);

        }*/
        // private readonly List<IColorable> _zeroSignalConnections = new List<IColorable>();
        protected override void NotifyBack(IColorable from, SerialSignal signal)
        {
            signal.StopSending();
            Connections.Filter(from);
        }
Ejemplo n.º 11
0
 static int set_signal(int fd, SerialSignal signal, bool value)
 {
     throw new System.NotImplementedException();
 }
Ejemplo n.º 12
0
        private void SplitNotify(IEnumerable<IColorable> connections, SerialSignal signal)
        {
            var colorables = connections as IColorable[] ?? connections.ToArray();
            var splitSignal = signal.Split(colorables.Count());
            int i = 0;
            foreach (var connection in colorables)
            {

                var signali = splitSignal[i];
                if (connection == null)
                {
                    signal.StopSending();
                    continue;
                }
                IColorable connection1 = connection;
                new Thread(
                    () =>
                        connection1.NotifyBack(this, signali)
                    ) { IsBackground = true }.Start();
                i++;
            }

            splitSignal.WaitForAll();
            Signal.StopSending();
        }
Ejemplo n.º 13
0
 protected override void NotifyBack(IColorable from, SerialSignal signal)
 {
     Signalled = true;
     System.Diagnostics.Debug.WriteLine(String.Format("\tSerial Signalling {0} ({1}, color={2})", signal, ToString(), CurrentColor == null ? "null" : CurrentColor.ToStringDemuxed()));
 }
Ejemplo n.º 14
0
 protected virtual void Clear()
 {
     Signal = null;
     CurrentColor = null;
     Flowed = false;
     Signalled = false;
 }
Ejemplo n.º 15
0
 protected abstract void NotifyBack(IColorable from, SerialSignal signal);
Ejemplo n.º 16
0
        /// <summary>
        /// We finished or failed - send result to all preceding colorables. But current have to be last.
        /// </summary>
        /// <param name="from"></param>
        /// <param name="signal"></param>
        protected override void NotifyBack(IColorable from, SerialSignal signal)
        {
            if (!SignalIfCan())
                return;
            Signal = signal;
            base.NotifyBack(from, signal);

            List<IColorable> currentColor = new List<IColorable>();
            List<IColorable> otherColor = new List<IColorable>();
            foreach (var connection in Connections.NotFiltered)
            {
                if (connection==null)
                    continue;
                if (connection.GetCurrentColor() == CurrentColor)
                    currentColor.Add(connection);
                else
                    otherColor.Add(connection);
            }
            SplitNotify(otherColor,signal);
            SplitNotify(currentColor, signal);
            InvokeOnNotifyBack();
        }
Ejemplo n.º 17
0
 protected override void NotifyBack(IColorable @from, SerialSignal signal)
 {
     if (SignalIfCan())
     {
         Signal = signal;
         base.NotifyBack(from, signal);
         InvokeOnNotifyBack();
         From.NotifyBack(this, signal);
     }
 }
Ejemplo n.º 18
0
 static extern int set_signal(int fd, SerialSignal signal, bool value);
Ejemplo n.º 19
0
        //step back
        protected override void NotifyBack(IColorable from, SerialSignal signal)
        {
            if (!(from is OutPoint) && from!=this)
            //
                return;
            lock (this)
            {
                if( Output.IsFiltered(from))
                    return;
            }
            //Signal == true;
            signal.StopSending();

            Output.Filter(from);
            //if signal==true - we have to signal, otherwise we just need to find other output;
            if (from == CurrentPath)
            {
                FlowResult();
            }
            if (!SignalIfCan())
                    return;
                Signal = signal;
                Output.Filter(from);

                base.NotifyBack(this, signal);
                InvokeOnNotifyBack();
                Input.NotifyBack(this, signal);
        }