static void Reset(int reset) { switch (board_type) { case BT_powermeter: if (reset) clear_cbus (2); else set_cbus (2); break; case BT_powermeterproto: if (reset) clear_cbus (3); else set_cbus (3); break; default: if (reset) Fail (FT_ClrDtr (handle)); else Fail (FT_SetDtr (handle)); break; } }
static void FTClassicPort_clrDtr(FTClassicPort *self){ self->status = FT_ClrDtr(self->handle); }
bool CUsb3003DF2ETInterface::ResetDevice(void) { bool ok = false; FT_STATUS ftStatus; int len, i; char rxpacket[100]; std::cout << "Trying DF2ET-3003 soft reset" << std::endl; DWORD n, b; char txpacket[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; char reset_packet[7] = { PKT_HEADER, 0, 3, 0, PKT_RESET, PKT_PARITYBYTE, 3 ^ PKT_RESET ^ PKT_PARITYBYTE }; char *p; for (i = 0; i < 35; i++) { p = &txpacket[0]; n = 10; do { ftStatus = FT_Write( m_FtdiHandle, p, n, &b); if (FT_OK != ftStatus) { return 1; } n -= b; p += b; } while (n > 0); } p = &reset_packet[0]; n = 7; do { ftStatus = FT_Write( m_FtdiHandle, p, n, &b); if (FT_OK != ftStatus) { return 1; } n -= b; p += b; } while (n > 0); len = FTDI_read_packet( m_FtdiHandle, rxpacket, sizeof(rxpacket) ); ok = ((len == 7) && (rxpacket[4] == PKT_READY)); if ( ok ) { std::cout << "DF2ET-3003 soft reset succeeded" << std::endl; } else { std::cout << "DF2ET-3003 soft reset failed" << std::endl; std::cout << "Trying DF2ET-3003 hard reset" << std::endl; ftStatus = FT_ClrDtr( m_FtdiHandle ); CTimePoint::TaskSleepFor(10); ftStatus = FT_SetDtr( m_FtdiHandle ); CTimePoint::TaskSleepFor(10); len = FTDI_read_packet( m_FtdiHandle, rxpacket, sizeof(rxpacket) ); ok = ((len == 7) && (rxpacket[4] == PKT_READY)); if ( ok ) { std::cout << "DF2ET-3003 hard reset succeeded" << std::endl; } else { std::cout << "DF2ET-3003 hard reset failed" << std::endl; } } return ok; }
void ResetNES (int rtype) { if (ParPort == -1) { if (rtype & RESET_PLAYMODE) { //clr /RTS=1 ftStatus = FT_ClrRts(ftHandleB); if (ftStatus != FT_OK) { MessageBox(topHWnd, "USB Error: ClrRts Failed!", "ResetNES", MB_OK | MB_ICONERROR); return; } } else { //set /RTS=0 ftStatus = FT_SetRts(ftHandleB); if (ftStatus != FT_OK) { MessageBox(topHWnd, "USB Error: SetRts Failed!", "ResetNES", MB_OK | MB_ICONERROR); return; } } if (!(rtype & RESET_NORESET)) { // pull /RESET low clear D2 //set /dtr=0 ftStatus = FT_ClrDtr(ftHandleB); if (ftStatus != FT_OK) { MessageBox(topHWnd, "USB Error: ClrDtr Failed!", "ResetNES", MB_OK | MB_ICONERROR); return; } Sleep(SLEEP_SHORT); } // pull /RESET high set D2 //clr /dtr=1 ftStatus = FT_SetDtr(ftHandleB); if (ftStatus != FT_OK) { MessageBox(topHWnd, "USB Error: SetDtr Failed!", "ResetNES", MB_OK | MB_ICONERROR); return; } Sleep(SLEEP_SHORT); InitPort(); Sleep(SLEEP_SHORT); } else { if (rtype & RESET_ALTPORT) shadow &= 0xF7; else shadow |= 0x08; if (rtype & RESET_PLAYMODE) shadow &= 0xFE; else shadow |= 0x01; if (!(rtype & RESET_NORESET)) { shadow &= 0xFB; pwControl(shadow); // pull /RESET low Sleep(SLEEP_SHORT); } shadow |= 0x04; // pull /RESET high pwControl(shadow); Sleep(SLEEP_SHORT); } }
int nifalcon_load_firmware(falcon_device* dev, const char* firmware_filename) { unsigned long bytes_written; unsigned char check_msg_1[3] = {0x0a, 0x43, 0x0d}; unsigned char check_msg_2[1] = "A"; unsigned char send_buf[128], receive_buf[128]; FILE* firmware_file; if(!dev->is_open) nifalcon_error_return(NIFALCON_DEVICE_NOT_FOUND_ERROR, "tried load firmware to an unopened device"); if((dev->falcon_status_code = FT_ResetDevice(dev->falcon)) != FT_OK) return -dev->falcon_status_code; //Set to: // 9600 baud // 8n1 // No Flow Control // RTS Low // DTR High if((dev->falcon_status_code = FT_SetBaudRate(dev->falcon, 9600)) != FT_OK) return -dev->falcon_status_code; if((dev->falcon_status_code = FT_SetDataCharacteristics(dev->falcon, FT_BITS_8, FT_STOP_BITS_1, FT_PARITY_NONE)) != FT_OK) return -dev->falcon_status_code; if((dev->falcon_status_code = FT_SetFlowControl(dev->falcon, FT_FLOW_NONE, 0, 0)) != FT_OK) return -dev->falcon_status_code; if((dev->falcon_status_code = FT_ClrRts(dev->falcon)) != FT_OK) return -dev->falcon_status_code; if((dev->falcon_status_code = FT_ClrDtr(dev->falcon)) != FT_OK) return -dev->falcon_status_code; if((dev->falcon_status_code = FT_SetDtr(dev->falcon)) != FT_OK) return -dev->falcon_status_code; //Send 3 bytes: 0x0a 0x43 0x0d if((dev->falcon_status_code = nifalcon_write(dev, check_msg_1, 3)) < 3) return -dev->falcon_status_code; //Expect 5 bytes back if((dev->falcon_status_code = nifalcon_read(dev, receive_buf, 5, 1000)) < 5) return -dev->falcon_status_code; //Set to: // DTR Low // 140000 baud (0x15 clock ticks per signal) if((dev->falcon_status_code = FT_ClrDtr(dev->falcon)) != FT_OK) return -dev->falcon_status_code; if((dev->falcon_status_code = FT_SetBaudRate(dev->falcon, 140000)) != FT_OK) return -dev->falcon_status_code; //Send "A" character if((dev->falcon_status_code = nifalcon_write(dev, check_msg_2, 1)) < 0) return -dev->falcon_status_code; //Expect back 2 bytes: // 0x13 0x41 if((dev->falcon_status_code = nifalcon_read(dev, receive_buf, 2, 1000)) < 0) return -dev->falcon_status_code; firmware_file = fopen(firmware_filename, "rb"); if(!firmware_file) { nifalcon_error_return(NIFALCON_FIRMWARE_NOT_FOUND_ERROR, "cannot find falcon firmware file"); } while(!feof(firmware_file)) { int firmware_bytes_read; int i; firmware_bytes_read = fread(send_buf, 1, 128, firmware_file); if((dev->falcon_status_code = nifalcon_write(dev, send_buf, firmware_bytes_read)) < 0) return dev->falcon_status_code; if((dev->falcon_status_code = nifalcon_read(dev, receive_buf, firmware_bytes_read, 1000)) < 0) return dev->falcon_status_code; if(firmware_bytes_read < 128) break; } fclose(firmware_file); if((dev->falcon_status_code = FT_SetBaudRate(dev->falcon, 1456312)) != FT_OK) return -dev->falcon_status_code; return FT_OK; }