Example #1
0
        public WaitForModemEvent serial_waitformodemevent(SafeSerialHandle handle, WaitForModemEvent mevent)
        {
            WaitForModemEvent result = UnsafeNativeMethods.serial_waitformodemevent(handle, mevent);

            errno = Marshal.GetLastWin32Error();
            return(result);
        }
        public WaitForModemEvent serial_waitformodemevent(IntPtr handle, WaitForModemEvent mevent)
        {
            WaitForModemEvent result = nserial_waitformodemevent(handle, mevent);

            errno = Marshal.GetLastWin32Error();
            return(result);
        }
Example #3
0
        private void PinChangeThread()
        {
            while (m_MonitorPins)
            {
                if (m_StopRunning.WaitOne(0))
                {
                    m_MonitorPins = false;
                    continue;
                }

                if (Log.SerialTrace(System.Diagnostics.TraceEventType.Verbose))
                {
                    Log.Serial.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 0,
                                          "{0}: PinChangeThread: Waiting", m_Name);
                }
                WaitForModemEvent mevent = m_Dll.serial_waitformodemevent(m_Handle, c_ModemEvents);
                if (mevent == WaitForModemEvent.Error)
                {
                    if (Log.SerialTrace(System.Diagnostics.TraceEventType.Error))
                    {
                        Log.Serial.TraceEvent(System.Diagnostics.TraceEventType.Error, 0,
                                              "{0}: PinChangeThread: Error aborting event; errno={1}; description={2}",
                                              m_Name, m_Dll.errno, m_Dll.serial_error(m_Handle));
                    }
                    m_MonitorPins = false;
                    return;
                }

                if (mevent != WaitForModemEvent.None)
                {
                    SerialPinChange pins = SerialPinChange.NoChange;
                    if ((mevent & WaitForModemEvent.ClearToSend) != 0)
                    {
                        pins |= SerialPinChange.CtsChanged;
                    }
                    if ((mevent & WaitForModemEvent.DataCarrierDetect) != 0)
                    {
                        pins |= SerialPinChange.CDChanged;
                    }
                    if ((mevent & WaitForModemEvent.DataSetReady) != 0)
                    {
                        pins |= SerialPinChange.DsrChanged;
                    }
                    if ((mevent & WaitForModemEvent.RingIndicator) != 0)
                    {
                        pins |= SerialPinChange.Ring;
                    }
                    // TODO: Break not implemented

                    if (Log.SerialTrace(System.Diagnostics.TraceEventType.Verbose))
                    {
                        Log.Serial.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 0,
                                              "{0}: PinChangeThread: Event Received: {1}", m_Name, mevent);
                    }
                    OnPinChanged(this, new SerialPinChangedEventArgs(pins));
                }
            }
        }
 internal static extern WaitForModemEvent serial_waitformodemevent(SafeSerialHandle handle, WaitForModemEvent mevent);
 private static extern WaitForModemEvent nserial_waitformodemevent(IntPtr handle, WaitForModemEvent mevent);
Example #6
0
 internal static extern WaitForModemEvent serial_waitformodemevent(IntPtr handle, WaitForModemEvent mevent);