[tuxdroid-svn] r544 - in firmware/fuxusb/trunk: . modules/usb modules/usb_enum
Status: Beta
Brought to you by:
ks156
From: jaguarondi <c2m...@c2...> - 2007-09-27 15:07:37
|
Author: jaguarondi Date: 2007-09-27 17:07:06 +0200 (Thu, 27 Sep 2007) New Revision: 544 Modified: firmware/fuxusb/trunk/global.c firmware/fuxusb/trunk/global.h firmware/fuxusb/trunk/modules/usb/usb_task.c firmware/fuxusb/trunk/modules/usb_enum/usb_enum.c Log: * Corrected a couple of bugs when sending the status to the computer. Now sending data is a bit more consistent but there's still a lot of cleaning to do, starting from applying 'indent' to the code then splitting that huge usb_task file into modules. Modified: firmware/fuxusb/trunk/global.c =================================================================== --- firmware/fuxusb/trunk/global.c 2007-09-26 14:53:18 UTC (rev 543) +++ firmware/fuxusb/trunk/global.c 2007-09-27 15:07:06 UTC (rev 544) @@ -39,8 +39,6 @@ char CMD_IN_Bank_Nb; bit USB_ParserProcess_Permit_Flag; -bit USB_StatusProcess_Permit_Flag; -bit USB_Status_NewCmd_Flag; //------------------------------------------------------- // I2C Controler Modified: firmware/fuxusb/trunk/global.h =================================================================== --- firmware/fuxusb/trunk/global.h 2007-09-26 14:53:18 UTC (rev 543) +++ firmware/fuxusb/trunk/global.h 2007-09-27 15:07:06 UTC (rev 544) @@ -49,8 +49,6 @@ extern char CMD_IN_Bank_Nb; extern bit USB_ParserProcess_Permit_Flag; -extern bit USB_StatusProcess_Permit_Flag; -extern bit USB_Status_NewCmd_Flag; //------------------------------------------------------- // I2C Controler Modified: firmware/fuxusb/trunk/modules/usb/usb_task.c =================================================================== --- firmware/fuxusb/trunk/modules/usb/usb_task.c 2007-09-26 14:53:18 UTC (rev 543) +++ firmware/fuxusb/trunk/modules/usb/usb_task.c 2007-09-27 15:07:06 UTC (rev 544) @@ -30,11 +30,15 @@ unsigned char pong_received; /* value of the pong received from the sound cpu */ unsigned char pong_missed; /* counting the pong missed on the SPI */ #endif + +/** Flag set when the computer sent a status request. + * Used to flush the status buffer on the USB. */ +bit status_requested; + bit CMDIN_ToSend_Flag = 0; bit EP_AUDIOIN_Loaded = 0; bit i2c_bootloading_Flag = 0; /* bootloader mode */ -bit ReadStatus_USBRequest_Flag = 0; bit Cpu_reset = 0; bit Speaker_TTS_Select_Flag = 0; @@ -80,7 +84,6 @@ Led_0_off(); - ReadStatus_USBRequest_Flag = 0; P0_0 = 0; P1_0 = 0; @@ -90,8 +93,7 @@ RF_OFFLine_Back = 0; Speaker_TTS_Select_Flag = 0; USB_ParserProcess_Permit_Flag = TRUE; - USB_StatusProcess_Permit_Flag = TRUE; - USB_Status_NewCmd_Flag = FALSE; + status_requested = FALSE; } @@ -115,44 +117,37 @@ { data Uchar i; - if((USB_Status_NewCmd_Flag)&&(USB_StatusProcess_Permit_Flag)&&(!(spi_master_config & RF_2FRAMES_HDR)) ) + if (status_requested && FifoIn_STT_Idx && !CMDIN_ToSend_Flag) { - if(CMD_IN_Bank_Nb<=2) - { - //Led_0_off(); - Usb_select_ep(EP_CMD_IN); - Usb_write_byte(0); - - if(RF_OFFLINE) - Usb_write_byte(0); - else - Usb_write_byte(1); + //Led_0_off(); + Usb_select_ep(EP_CMD_IN); + Usb_write_byte(0); - Usb_write_byte(RF_Status); + if(RF_OFFLINE) + Usb_write_byte(0); + else + Usb_write_byte(1); - Usb_write_byte((FifoIn_STT_Idx/4)); + Usb_write_byte(RF_Status); - //printf ("USB Request::Read Status from RF :: Sent\n"); - - for(i=0;i<FifoIn_STT_Idx;i++) - Usb_write_byte(FIFO_STT_get()); - - if(FifoIn_STT_Idx!=60) - for(i=FifoIn_STT_Idx;i<60;i++) - Usb_write_byte(0); - - CMDIN_ToSend_Flag = 1; // Synchronize the Sending command With USB - ReadStatus_USBRequest_Flag = 0; - FIFO_STT_flush(); - RF_Status = 0; - CMD_IN_Bank_Nb ++; - //Led_0_on(); - USB_Status_NewCmd_Flag = FALSE; - } + Usb_write_byte((FifoIn_STT_Idx/4)); - } + //printf ("USB Request::Read Status from RF :: Sent\n"); + for(i=0;i<FifoIn_STT_Idx;i++) + Usb_write_byte(FIFO_STT_get()); + /* XXX stuffing here is probably not necessary. */ + if(FifoIn_STT_Idx!=60) + for(i=FifoIn_STT_Idx;i<60;i++) + Usb_write_byte(0); + + CMDIN_ToSend_Flag = 1; // Synchronize the Sending command With USB + FIFO_STT_flush(); + RF_Status = 0; + //Led_0_on(); + status_requested = FALSE; + } } @@ -226,12 +221,10 @@ //-------------------------------------- if (USBCommand_ForDongle[1] == 0x03) { - Usb_select_ep(EP_CMD_IN); - - FIFO_STT_flush(); FIFO_STT_put(0xC6); FIFO_STT_put(Tux_ID[0]); FIFO_STT_put(Tux_ID[1]); + FIFO_STT_put(0); #ifdef USB_CMD_DEBUG printf(" CMD REQUESTING Tux ID Dongle \n"); #endif @@ -311,7 +304,7 @@ if(USBCommand_ForDongle[3] == 0x00) { //DEBUG_2 = 1; - USB_Status_NewCmd_Flag = TRUE; + status_requested = TRUE; //DEBUG_2 = 0; } @@ -358,36 +351,28 @@ // //-------------------------------------------------------------------------- - else if (USBCommand_ForDongle[0] == INFO_FUXUSB_CMD) // + else if (USBCommand_ForDongle[0] == INFO_FUXUSB_CMD) { - Usb_select_ep(EP_CMD_IN); - // 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._undefined_); + 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._undefined_); // 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._undefined_); - - - CMDIN_ToSend_Flag = 1; // Synchronize the Sending command With USB - ReadStatus_USBRequest_Flag = 0; - CMD_IN_Bank_Nb ++; - + 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._undefined_); } } /*F************************************************************************** @@ -492,29 +477,18 @@ // //-------------------------------------------------------------------------- if (Usb_sof()) - { - Usb_clear_sof(); - usb_sof_counter ++; // == 0xFF == 250ms + { + Usb_clear_sof(); + usb_sof_counter ++; // == 0xFF == 250ms - if ((CMDIN_ToSend_Flag == 1)) { - 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(); - - CMDIN_ToSend_Flag = 0; - } -#ifdef USB_TASK_DEBUG - else - printf ("CMD_IN_Bank_Nb %B Full \n",CMD_IN_Bank_Nb); -#endif } if(spi_watchdog_ctr) @@ -631,7 +605,6 @@ //-------------------------------------------------------------------------- if(Usb_endpoint_interrupt()) { - // printf ("RF:: CMD_IN_Bank_Nb::%BX RFCommand : %BX %BX %BX %BX %BX ",CMD_IN_Bank_Nb,RFCommand[1],RFCommand[2], RFCommand[3], RFCommand[4],RFCommand[5]); //-------------------------------------------------------------------------- // // Event on EP_CMD_IN LIBUSB EndPoint @@ -646,11 +619,7 @@ 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; - // printf ("Dec CMD_IN_Bank_Nb => %BX \n",CMD_IN_Bank_Nb); - // CMDIN_ToSend_Flag = 0; + CMDIN_ToSend_Flag = 0; //Led_1_off(); } } @@ -1120,7 +1089,6 @@ SPI_CSn = 0; // Chip select spi_Start_Flag = 1; USB_ParserProcess_Permit_Flag = FALSE; - USB_StatusProcess_Permit_Flag = FALSE; } //-------------------------------------------------------------------------- @@ -1272,7 +1240,6 @@ { USB_ParserProcess_Permit_Flag = TRUE; - USB_StatusProcess_Permit_Flag = TRUE; spi_Start_Flag = 0; SPI_CSn = 1; // Chip deselect spi_enable = 1; Modified: firmware/fuxusb/trunk/modules/usb_enum/usb_enum.c =================================================================== --- firmware/fuxusb/trunk/modules/usb_enum/usb_enum.c 2007-09-26 14:53:18 UTC (rev 543) +++ firmware/fuxusb/trunk/modules/usb_enum/usb_enum.c 2007-09-27 15:07:06 UTC (rev 544) @@ -1000,8 +1000,7 @@ FIFO_SPK_init(); // Modif de test FIFO_STT_init(); RF_Connection_Status = RF_DISCONNECTED; - printf(" Set Config: Finished \n"); - printf(" RF_Connection_Status = RF_DISCONNECTED; \n"); + } } |