bool FtdiDevices::getModemStatus() { FT_STATUS ftStatus; ULONG Status; ftStatus = FT_GetModemStatus(m_ftHandleA, &Status); if (!FT_SUCCESS(ftStatus)) { return false; } return true; }
extern "C" void InitPort (void) { if (ParPort == -1) { DWORD modemWord = 0; usb_timeout_error = FALSE; ftStatus = FT_GetModemStatus (ftHandleB, &modemWord); if (ftStatus != FT_OK) { MessageBox(topHWnd, "USB Error: Get Power Status Failed!", "InitPort", MB_OK | MB_ICONERROR); return; } if (modemWord & 0x80) MessageBox(topHWnd, "USB CopyNES is OFF - turn on then hit OK", "InitPort", MB_OK | MB_ICONERROR); // flush receive/transmit buffers ftStatus = FT_Purge (ftHandleA, FT_PURGE_RX | FT_PURGE_TX); if (ftStatus != FT_OK) { MessageBox(topHWnd, "USB Error: Purge A Failed!", "InitPort", MB_OK | MB_ICONERROR); return; } ftStatus = FT_Purge (ftHandleB, FT_PURGE_RX | FT_PURGE_TX); if (ftStatus != FT_OK) { MessageBox(topHWnd, "USB Error: Purge B Failed!", "InitPort", MB_OK | MB_ICONERROR); return; } connection_initialized = TRUE; } else { if ((prECP() & 0x03) == 0x01) { pwECP(0x34); if (prECP() == 0x35) pwECP((prECP() & 0x1F) | 0x20); // try to set ECP port to bidirectional mode } shadow |= 0x40; // pull ACK line high - this way, printers won't listen to us pwControl(shadow); c = prStatus(); connection_initialized = TRUE; } }