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); } } }
////////////////////////////////////////////////////////////////////// // 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); }
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(...) { } }
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); }
////////////////////////////////////////////////////////////////////// // 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)); }
////////////////////////////////////////////////////////////////////// // 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); }
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()
void ConnectionManager::slotError(QAbstractSocket::SocketError err) { if(err == QAbstractSocket::HostNotFoundError || err == QAbstractSocket::ConnectionRefusedError || err == QAbstractSocket::NetworkError || err == QAbstractSocket::SocketTimeoutError) SetupConnection(INITIAL_SERVER, INITIAL_PORT); }