USB Gecko
This is an old revision of this page, as edited by NoNameNo (talk | contribs) at 19:11, 22 February 2008. It may differ significantly from the current revision. |
To code computer side usbgecko application you need :
I have started a linux application, all seems ok, except the ftdi_read_data that always return 0 :/ For those who interrested this page can be a base to make a usable application.
#include <stdio.h> #include <sys/types.h> #include <ftdi.h> //-------------------------- Globals ---------------------------------- int32_t status; int ret; int32_t TxSent; int32_t RxSent; struct ftdi_context ftdic; int cmd_readmem = 0x04; //-------------------------- Function Prototypes ---------------------------------- void gecko_opendevice(); int main(int argc, char **argv) { void* plop; unsigned char responseback = 0; ftdi_init(&ftdic); printf("-----------------------------------\n"); printf("- NoNameNo's UsbGecko Linux Tools -\n"); printf("-----------------------------------\n\n"); gecko_opendevice(); printf("Connecting to Wii.\n"); printf("%x\n",gecko_writebyte(&cmd_readmem,1)); printf("%x\n",gecko_readbyte(&responseback, 1)); ftdi_usb_close(&ftdic); ftdi_deinit(&ftdic); return EXIT_SUCCESS; } //---------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------- int gecko_readbyte(unsigned char* lpBuffer, int dwBytesToRead) { status = ftdi_read_data(&ftdic, lpBuffer, dwBytesToRead); if (status > 0){ if(status != dwBytesToRead){ return 2; } } else{ printf("[Error] UsbGecko Reading Device\n"); //ftdi_usb_close(&ftdic); //ftdi_deinit(&ftdic); return status; } return 1; } //---------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------- int gecko_writebyte(unsigned char* lpBuffer, int dwBytesToWrite) { status = ftdi_write_data(&ftdic, lpBuffer, dwBytesToWrite); if (status > 0){ if(status != dwBytesToWrite){ return 2; } } else{ printf("[Error] UsbGecko Writing Device\n"); ftdi_usb_close(&ftdic); ftdi_deinit(&ftdic); return 0; } return 1; } //---------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------- void gecko_opendevice() { //---------------------------open device -------------------------------------- if((ret = ftdi_usb_open(&ftdic, 0x0403, 0x6001)) < 0) { printf("[Error] UsbGecko NOT Detected\n"); exit(0); } else{ printf("[OK] UsbGecko Detected\n"); } //---------------------------Reset device -------------------------------------- if((ret = ftdi_usb_reset(&ftdic)) < 0) { printf("[Error] UsbGecko Reseting Device \n"); ftdi_usb_close(&ftdic); ftdi_deinit(&ftdic); exit(0); } else{ printf("[OK] UsbGecko Reseted\n"); } //---------------------------SetTimeOut to 2000 -------------------------------------- ftdic.usb_read_timeout=2000; ftdic.usb_write_timeout=2000; printf("[OK] UsbGecko Setted 2 sec timout\n"); //---------------------------Purging RX/TX buffers -------------------------------------- if((ret = ftdi_usb_purge_buffers(&ftdic)) < 0) { printf("[Error] UsbGecko Purging Buffer \n"); ftdi_usb_close(&ftdic); ftdi_deinit(&ftdic); exit(0); } else{ printf("[OK] UsbGecko Purged RX/TX buffers\n"); } //--------------------------- Set RX/TX size buffer -------------------------------------- if((ret = ftdi_read_data_set_chunksize(&ftdic,65536)) < 0) { printf("[Error] UsbGecko Setting RX buffer size\n"); ftdi_usb_close(&ftdic); ftdi_deinit(&ftdic); exit(0); } else{ printf("[OK] UsbGecko Setted RX Buffer Size\n"); } if((ret = ftdi_write_data_set_chunksize(&ftdic,65536)) < 0) { printf("[Error] UsbGecko Setting TX Buffer size\n"); ftdi_usb_close(&ftdic); ftdi_deinit(&ftdic); exit(0); } else{ printf("[OK] UsbGecko Setted TX Buffer Size\n"); } //---------------------------Required ??? -------------------------------------- sleep(1); }