[tuxdroid-svn] r903 - firmware/fuxusb/branches/0.3/modules/usb
Status: Beta
Brought to you by:
ks156
From: Paul_R <c2m...@c2...> - 2008-02-07 09:58:07
|
Author: Paul_R Date: 2008-02-07 10:57:59 +0100 (Thu, 07 Feb 2008) New Revision: 903 Modified: firmware/fuxusb/branches/0.3/modules/usb/usb_task.c Log: * Changed the banks on the CMD_IN endpoint. The banks were relatively badly managed, and in some cases, the USB communication was corrupted (error: USB: can't read on device: Resource temporarily unavailable (11)) In addition to this problem, the way to send the dongle versions were bad. Modified: firmware/fuxusb/branches/0.3/modules/usb/usb_task.c =================================================================== --- firmware/fuxusb/branches/0.3/modules/usb/usb_task.c 2008-02-05 11:07:00 UTC (rev 902) +++ firmware/fuxusb/branches/0.3/modules/usb/usb_task.c 2008-02-07 09:57:59 UTC (rev 903) @@ -128,13 +128,12 @@ data Uchar i; - - - + if((USB_Status_NewCmd_Flag)&&(USB_StatusProcess_Permit_Flag)&&(!(spi_master_config & RF_2FRAMES_HDR)) ) { - if(CMD_IN_Bank_Nb<=2) + + if(CMD_IN_Bank_Nb<2) { //Led_0_off(); Usb_select_ep(EP_CMD_IN); @@ -162,14 +161,16 @@ ReadStatus_USBRequest_Flag = 0; FIFO_STT_flush(); RF_Status = 0; - CMD_IN_Bank_Nb ++; +// CMD_IN_Bank_Nb ++; //Led_0_on(); USB_Status_NewCmd_Flag = FALSE; } - + else + { + CMD_IN_Bank_Nb = 0; + FIFO_STT_flush(); + } } - - } @@ -260,43 +261,46 @@ while (data_length > i) { + if (commands[i] == INFO_FUXUSB_CMD) // { - Usb_select_ep(EP_CMD_IN); - Usb_write_byte(0); + //Usb_select_ep(EP_CMD_IN); + FIFO_STT_put(0); if(RF_OFFLINE) - Usb_write_byte(0); + FIFO_STT_put(0); else - Usb_write_byte(1); - Usb_write_byte(RF_Status); - Usb_write_byte((3)); + FIFO_STT_put(1); + FIFO_STT_put(RF_Status); + FIFO_STT_put((3)); // VERSION_CMD //------------------------------------- - Usb_write_byte(info_version.version_cmd); - Usb_write_byte(info_version.cpu_ver_maj); - Usb_write_byte(info_version.ver_minor); - Usb_write_byte(info_version.ver_update); + FIFO_STT_put(info_version.version_cmd); + FIFO_STT_put(info_version.cpu_ver_maj); + FIFO_STT_put(info_version.ver_minor); + FIFO_STT_put(info_version.ver_update); // REVISION_CMD //------------------------------------- - Usb_write_byte(info_revision.revision_cmd); - Usb_write_byte((info_revision.revision&0xFF00)>>8); - Usb_write_byte((info_revision.revision&0x00FF)); - Usb_write_byte(info_revision.release_type); + FIFO_STT_put(info_revision.revision_cmd); + FIFO_STT_put((info_revision.revision&0xFF00)>>8); + FIFO_STT_put((info_revision.revision&0x00FF)); + FIFO_STT_put(info_revision.release_type); // AUTHOR_CMD //------------------------------------- - Usb_write_byte(info_author.author_cmd); - Usb_write_byte((info_author.author_id&0xFF00)>>8); - Usb_write_byte((info_author.author_id&0x00FF)); - Usb_write_byte(info_author.variation); + FIFO_STT_put(info_author.author_cmd); + FIFO_STT_put((info_author.author_id&0xFF00)>>8); + FIFO_STT_put((info_author.author_id&0x00FF)); + FIFO_STT_put(info_author.variation); - CMDIN_ToSend_Flag = 1; // Synchronize the Sending command With USB - ReadStatus_USBRequest_Flag = 0; + //CMDIN_ToSend_Flag = 1; // Synchronize the Sending command With USB + //ReadStatus_USBRequest_Flag = 0; + } i+=4; + } } @@ -410,13 +414,12 @@ if ((CMDIN_ToSend_Flag == 1)) { - if(CMD_IN_Bank_Nb<=2) + if(CMD_IN_Bank_Nb<2) { #ifdef USB_TASK_DEBUG printf ("SOF:: CMD_IN_Bank_Nb::%BX Usb_set_tx_ready \n",CMD_IN_Bank_Nb); printf ("HIDCommand Sent \n"); #endif - Usb_select_ep(EP_CMD_IN); Usb_set_tx_ready(); @@ -552,13 +555,18 @@ //-------------------------------------------------------------------------- if (Usb_test_it_ep(EP_CMD_IN)) { + Usb_select_ep(EP_CMD_IN); if(Usb_tx_complete()) { Usb_clear_tx_complete(); // printf ("LIBUSB EP:: clear_tx:: CMD_IN_Bank_Nb::%BX ",CMD_IN_Bank_Nb); - CMD_IN_Bank_Nb--; - if (CMD_IN_Bank_Nb<0) CMD_IN_Bank_Nb = 0; + if (CMD_IN_Bank_Nb == 0) + CMD_IN_Bank_Nb = 1; + else + CMD_IN_Bank_Nb = 0; + //CMD_IN_Bank_Nb--; + //if (CMD_IN_Bank_Nb<0) CMD_IN_Bank_Nb = 0; // printf ("Dec CMD_IN_Bank_Nb => %BX \n",CMD_IN_Bank_Nb); // CMDIN_ToSend_Flag = 0; //Led_1_off(); @@ -668,6 +676,7 @@ if(USB_ParserProcess_Permit_Flag) if(Usb_test_it_ep(EP_CMD_OUT)) { + // printf ("if(Usb_test_it_ep(EP_CMD_OUT)) \n"); if(!USBCommand_NewRequest_Flag) /* XXX can lock in case the RF is not responding, check this for bootloader */ { |