PairingResult PairingManagerImpl::BeginPairing(const PairMakerPtr& pairMaker, PairingListener* listener)
{
    if (m_bPairingInProgress)
    {
        return PairingResult::PairingAlreadyInProgress;
    }

    // First, clear out any existing pairing info
    ClearPairingInfo();

    m_pairMaker = pairMaker;
    m_listenerList = ListenerList::Create();
    m_listenerList->AddListener(listener);

    if (m_pairMaker->IsReadyToConnect())
    {
        PairingResult result = SetupConnection();
        if (result != PairingResult::Ok)
        {
            // Failed to setup the pairing attempt
            TeardownPairing(false, result);
            return result;
        }
    }

    return PairingResult::Ok;
}
void PairingManagerImpl::Update()
{
    // If the pair maker is ready to connect, but we haven't started pairing yet, then kick off the pairing process
    if (m_pairMaker && m_pairMaker->IsReadyToConnect() && !m_bPairingInProgress)
    {
        PairingResult result = SetupConnection();
        if (result != PairingResult::Ok)
        {
            TeardownPairing(true, result);
        }
    }
}
Example #3
0
//////////////////////////////////////////////////////////////////////
// ShowConfigDialog
// return:   0  success
//          -1  error
//
int CAsyncPort::ShowConfigDialog(HWND hWnd)
{
	COMMCONFIG commConfig;
	//memset(& commConfig, 0, sizeof (COMMCONFIG));
	//commConfig.dwSize = sizeof(COMMCONFIG);
	memcpy(& commConfig, & m_commConfig, sizeof (COMMCONFIG));

	if (! CommConfigDialog(m_szCommDevName, hWnd, & commConfig)) {
		return -1;
	}

	return SetupConnection(commConfig.dcb);
}
Example #4
0
COutlookButton::COutlookButton(CComPtr <Office::CommandBarControl> pButton)
{
	m_cRef		= 0;
	m_dwCookie	= 0;
	m_pButton	= NULL;
	m_pCP		= NULL;
	try
	{
		if (SetupConnection(pButton))
		{
			m_pButton = pButton;
		}
	}
	catch(...)
	{
	}
}
Example #5
0
void ConnectionManager::Redirection(void)
{
    QString responseStr(GetResponse());
    Parser result(responseStr);

    if(result.GetKeyValue(RESULT_KEY) == ERROR_VAL)
    {
        //handle an error here
        qWarning(ERROR_WARNING);
        return;
    }

    QString server(result.GetKeyValue(SERVER_KEY));
    int port = result.GetKeyValue(PORT_KEY).toInt();

    ++actionCounter;

    SetupConnection(server, port);
}
Example #6
0
//////////////////////////////////////////////////////////////////////
// SetupConnection
// return:   0  success
//          -1  error
//
int CAsyncPort::SetupConnection(DWORD dwBaudRate, BYTE bByteSize, BYTE bParity, BYTE bStopBits)
{
    DCB dcb;

	// setup connection properties

	dcb.DCBlength = sizeof (DCB) ;

	::GetCommState(m_hCommDev, & dcb);

	dcb.BaudRate = dwBaudRate;
	dcb.ByteSize = bByteSize;
	dcb.Parity = bParity;
	dcb.StopBits = bStopBits;

	// setup hardware flow control

	dcb.fDtrControl = DTR_CONTROL_DISABLE;
	dcb.fRtsControl = RTS_CONTROL_ENABLE;

	// setup software flow control

	dcb.fInX = FALSE;
	dcb.fOutX = FALSE;
	dcb.XonChar = 0x11;
	dcb.XoffChar = 0x13;
	dcb.XonLim = 100;
	dcb.XoffLim = 100;

	// other various settings

	dcb.fBinary = TRUE;
	dcb.fParity = TRUE;

	return (SetupConnection(dcb));
}
Example #7
0
//////////////////////////////////////////////////////////////////////
// OpenConnection
// return:   0  success
//          -1  error
//
int CAsyncPort::OpenConnection(const char *pszPortName, DCB dcb)
{
	// already connected
	if (m_isConnected) {
		return -1;
	}

	// store port name
	strcpy(m_szCommDevName, pszPortName);

	// open COMM device
	m_hCommDev = CreateFile (
		m_szCommDevName,
		GENERIC_READ | GENERIC_WRITE,
		0,								// exclusive access
		NULL,							// no security attrs
		OPEN_EXISTING,
		FILE_ATTRIBUTE_NORMAL |
		FILE_FLAG_OVERLAPPED,			// overlapped I/O
		NULL
	);
	if (INVALID_HANDLE_VALUE == m_hCommDev) {
		return -1;
	}

	// get any early notifications
	SetCommMask(m_hCommDev, EV_RXCHAR);

	// setup device buffers
	SetupComm(m_hCommDev, IN_QUEUE_SIZE, OUT_QUEUE_SIZE);

	// purge any information in the buffer
	PurgeComm (
		m_hCommDev,
		PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR
	);

	// setup connection
	if (0 == SetupConnection(dcb)) {

		// set connected flag
		m_isConnected = TRUE;
	
		// create a thread to watch for input data
		m_hWatchThread = CreateThread (
			(LPSECURITY_ATTRIBUTES) NULL,
			0,
			(LPTHREAD_START_ROUTINE) CommWatchProc,
			(LPVOID) this,
			0,
			& m_dwThreadID
		);
		if (NULL == m_hWatchThread) {

			// clear connected flag
			m_isConnected = FALSE;
			
			// close port
			CloseHandle(m_hCommDev);
			
			return -1;

		} else {
			// assert DTR
			EscapeCommFunction(m_hCommDev, SETDTR);
		}
	} else {

		// clear connected flag
		m_isConnected = FALSE;
		
		// close port
		CloseHandle(m_hCommDev) ;

		return -1;
	}
	return (0);
}
Example #8
0
BOOL NEAR OpenConnection(HWND hWnd)
{
    char szPort[15], szTemp[10];
    BOOL fRetVal;

    HANDLE hCommWatchThread;
    DWORD dwThreadID;
    COMMTIMEOUTS CommTimeOuts;

    // load the COM prefix string and append port number

    strcpy(szTemp, "COM");
    wsprintf(szPort, "%s%d", (LPSTR)szTemp, headfinderInfo.bPort);

    // open COMM device

    if ((headfinderInfo.idComDev = CreateFile(szPort, GENERIC_READ | GENERIC_WRITE,
                                              0, // exclusive access
                                              NULL, // no security attrs
                                              OPEN_EXISTING,
                                              FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, // overlapped I/O
                                              NULL)) == (HANDLE)-1)
        return (FALSE);
    else
    {
        // get any early notifications

        SetCommMask(headfinderInfo.idComDev, EV_RXCHAR);

        // setup device buffers

        SetupComm(headfinderInfo.idComDev, 4096, 4096);

        // purge any information in the buffer

        PurgeComm(headfinderInfo.idComDev, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);

        // set up for overlapped I/O

        CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
        CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
        CommTimeOuts.ReadTotalTimeoutConstant = 1000;
        // CBR_9600 is approximately 1byte/ms. For our purposes, allow
        // double the expected time per character for a fudge factor.
        CommTimeOuts.WriteTotalTimeoutMultiplier = 2 * CBR_9600 / headfinderInfo.dwBaudRate;
        CommTimeOuts.WriteTotalTimeoutConstant = 0;
        SetCommTimeouts(headfinderInfo.idComDev, &CommTimeOuts);
    }

    fRetVal = SetupConnection(hWnd);

    if (fRetVal)
    {
        headfinderInfo.fConnected = TRUE;

        // Create a secondary thread
        // to watch for an event.

        if (NULL == (hCommWatchThread = CreateThread((LPSECURITY_ATTRIBUTES)NULL,
                                                     0,
                                                     (LPTHREAD_START_ROUTINE)CommWatchProc,
                                                     (LPVOID)&headfinderInfo,
                                                     0, &dwThreadID)))
        {
            headfinderInfo.fConnected = FALSE;
            CloseHandle(headfinderInfo.idComDev);
            fRetVal = FALSE;
        }
        else
        {
            headfinderInfo.dwThreadID = dwThreadID;
            headfinderInfo.hWatchThread = hCommWatchThread;

            // assert DTR
            EscapeCommFunction(headfinderInfo.idComDev, SETDTR);
        }
    }
    else
    {
        headfinderInfo.fConnected = FALSE;
        CloseHandle(headfinderInfo.idComDev);
    }

    return (fRetVal);

} // end of OpenConnection()
Example #9
0
void ConnectionManager::slotError(QAbstractSocket::SocketError err)
{
    if(err == QAbstractSocket::HostNotFoundError || err == QAbstractSocket::ConnectionRefusedError || err == QAbstractSocket::NetworkError ||  err == QAbstractSocket::SocketTimeoutError)
        SetupConnection(INITIAL_SERVER, INITIAL_PORT);
}