[tuxdroid-svn] r573 - firmware/fuxusb/trunk/modules/usb
Status: Beta
Brought to you by:
ks156
From: jaguarondi <c2m...@c2...> - 2007-10-02 16:53:04
|
Author: jaguarondi Date: 2007-10-02 18:42:39 +0200 (Tue, 02 Oct 2007) New Revision: 573 Modified: firmware/fuxusb/trunk/modules/usb/usb_task.c Log: * BUG: Usb_set_tx_ready() could be called multiple times before the data was actually sent. We now use 3 states for 0:'data sent or no data', 1:'data ready to be sent', 2:'USB busy sending data'. Now bootloading works again. Modified: firmware/fuxusb/trunk/modules/usb/usb_task.c =================================================================== --- firmware/fuxusb/trunk/modules/usb/usb_task.c 2007-10-02 15:11:15 UTC (rev 572) +++ firmware/fuxusb/trunk/modules/usb/usb_task.c 2007-10-02 16:42:39 UTC (rev 573) @@ -35,7 +35,7 @@ * Used to flush the status buffer on the USB. */ bit status_requested; -bit CMDIN_ToSend_Flag = 0; +uint8_t tx_data_ready = 0; bit EP_AUDIOIN_Loaded = 0; bit i2c_bootloading_Flag = 0; /* bootloader mode */ @@ -117,7 +117,7 @@ { data Uchar i; - if (status_requested && FifoIn_STT_Idx && !CMDIN_ToSend_Flag) + if (status_requested && FifoIn_STT_Idx && !tx_data_ready) { #ifdef USB_CMD_DEBUG printf("Stacking %Bu data from status on USB fifo.\n", @@ -146,7 +146,7 @@ for(i=FifoIn_STT_Idx;i<60;i++) Usb_write_byte(0); - CMDIN_ToSend_Flag = 1; // Synchronize the Sending command With USB + tx_data_ready = 1; // Synchronize the Sending command With USB FIFO_STT_flush(); RF_Status = 0; //Led_0_on(); @@ -485,14 +485,14 @@ Usb_clear_sof(); usb_sof_counter ++; // == 0xFF == 250ms - if ((CMDIN_ToSend_Flag == 1)) + if (tx_data_ready == 1) { #ifdef USB_TASK_DEBUG printf ("HIDCommand Sent \n"); #endif - - Usb_select_ep(EP_CMD_IN); - Usb_set_tx_ready(); + tx_data_ready = 2; + Usb_select_ep(EP_CMD_IN); + Usb_set_tx_ready(); } if(spi_watchdog_ctr) @@ -614,7 +614,7 @@ // Event on EP_CMD_IN LIBUSB EndPoint // // -> Usb_clear_tx_complete() - // -> CMDIN_ToSend_Flag = 0; + // -> tx_data_ready = 0; // -> Authorize a new loading of the FIFO //-------------------------------------------------------------------------- if (Usb_test_it_ep(EP_CMD_IN)) @@ -623,7 +623,7 @@ if(Usb_tx_complete()) { Usb_clear_tx_complete(); - CMDIN_ToSend_Flag = 0; + tx_data_ready = 0; //Led_1_off(); } } @@ -908,7 +908,7 @@ if (i2c_bootloading_Flag) /* I2C bootloading */ { - if (i2c_task_on_Flag && (CMDIN_ToSend_Flag == 0) && !i2c_wait_counter) /* wait for USB to be free for sending data */ + if (i2c_task_on_Flag && !tx_data_ready && !i2c_wait_counter) /* wait for USB to be free for sending data */ { blSendData(blHeader, 64); /* send data on I2C */ @@ -947,7 +947,7 @@ Usb_write_byte(0x00); /* XXX reserved for further use */ Usb_write_byte(0x00); /* XXX reserved for further use */ - CMDIN_ToSend_Flag = 1; + tx_data_ready = 1; i2c_task_on_Flag = 0; /* finish i2c task */ } } |