[tuxdroid-svn] r1203 - in firmware/fuxusb/trunk: . src
Status: Beta
Brought to you by:
ks156
From: Paul_R <c2m...@c2...> - 2008-05-28 11:00:43
|
Author: Paul_R Date: 2008-05-28 13:00:43 +0200 (Wed, 28 May 2008) New Revision: 1203 Modified: firmware/fuxusb/trunk/fuxusb.Opt firmware/fuxusb/trunk/src/bootloader.c firmware/fuxusb/trunk/src/config.h firmware/fuxusb/trunk/src/usb_desc.h firmware/fuxusb/trunk/src/usb_ep.c Log: * Adapted the bootloader mode to be compatible with HID tuxup : - Added BOOT_INIT ack. - Added a counter for the synchronisation with tuxup. The value is sent with the i2c ack. Modified: firmware/fuxusb/trunk/fuxusb.Opt =================================================================== (Binary files differ) Modified: firmware/fuxusb/trunk/src/bootloader.c =================================================================== --- firmware/fuxusb/trunk/src/bootloader.c 2008-05-23 15:27:06 UTC (rev 1202) +++ firmware/fuxusb/trunk/src/bootloader.c 2008-05-28 11:00:43 UTC (rev 1203) @@ -27,11 +27,15 @@ #include "config.h" #include "global.h" #include "usb_commands.h" +#include "usb_desc.h" +#include "usb_ep.h" #include "bootloader.h" #include "i2c.h" #include "spi_task.h" #include "rf.h" +#include "lib_mcu\usb\usb_drv.h" +static uint8_t counter = 0; /* Externs defs */ bit i2c_bootloading_Flag; @@ -131,7 +135,7 @@ /* Wait 20ms before next I2C */ i2c_wait_counter = 20; /* ACK or NACK and exit I2C task */ - bl_acknowledge(i2cFlags.s_val, 0, 0, 0); + bl_acknowledge(i2cFlags.s_val, counter ++, 0, 0); i2c_task_on_Flag = 0; } } @@ -166,13 +170,13 @@ else if (((blHeader.page_address & ~0x8000) != address_tracking && \ blHeader.page_address != 0x1DC0 && \ - blHeader.page_address != 0x0EC0) || Command_Ctr != 35) + blHeader.page_address != 0x0EC0)) { bl_acknowledge(False, 3, 0, 0); bl_exit(); } - for(i = 3; i < Command_Ctr; i++) + for(i = 3; i < 35; i++) { blHeader.blData[address_idx++] = command_received[i]; } @@ -180,16 +184,8 @@ else { - /* Check if we got the right number of - * data */ - if (Command_Ctr != 33) - { - /* Exit bootloader mode */ - bl_acknowledge(False, 4, 0, 0); - bl_exit(); - } - for(i = 1; i < Command_Ctr; i++) + for(i = 1; i < 33; i++) { blHeader.blData[address_idx++] = command_received[i]; } @@ -223,10 +219,18 @@ address_idx = 0; packet_idx = 0; + counter = 0; + i2c_bootloading_Flag = True; EX0 = 0; /* Disable INT0 interrupt */ + CMD_IN_Bank_Nb = 0; + usb_reset_endpoint(EP_CMD_IN); + +#ifdef HID_DEVICE + bl_acknowledge(True, 10, 0, 0); +#endif } /** Modified: firmware/fuxusb/trunk/src/config.h =================================================================== --- firmware/fuxusb/trunk/src/config.h 2008-05-23 15:27:06 UTC (rev 1202) +++ firmware/fuxusb/trunk/src/config.h 2008-05-28 11:00:43 UTC (rev 1203) @@ -28,6 +28,7 @@ */ #include <stdint.h> +#include <stdio.h> #include "lib_mcu/compiler.h" #include "lib_mcu/reg_5131.h" #include "lib_mcu/ext_5131.h" @@ -38,6 +39,7 @@ * @{ */ #undef MAIN_DEBUG #undef USB_ENUM_DEBUG +#undef BL_DEBUG /* @} */ /** \name MCU config Modified: firmware/fuxusb/trunk/src/usb_desc.h =================================================================== --- firmware/fuxusb/trunk/src/usb_desc.h 2008-05-23 15:27:06 UTC (rev 1202) +++ firmware/fuxusb/trunk/src/usb_desc.h 2008-05-28 11:00:43 UTC (rev 1203) @@ -30,7 +30,7 @@ #include "version.h" /** Enable / Disable the HID interface */ -#undef HID_DEVICE +#define HID_DEVICE /** \name Descriptors type * @{ */ Modified: firmware/fuxusb/trunk/src/usb_ep.c =================================================================== --- firmware/fuxusb/trunk/src/usb_ep.c 2008-05-23 15:27:06 UTC (rev 1202) +++ firmware/fuxusb/trunk/src/usb_ep.c 2008-05-28 11:00:43 UTC (rev 1203) @@ -89,6 +89,11 @@ read_tts_ep(); } + /* EP4 : Command in EP (dongle -> PC) */ + if (Usb_test_it_ep(EP_CMD_IN)) + { + clear_cmdin_ep(); + } /* EP5 : Command out EP (PC -> dongle) */ if(Usb_test_it_ep(EP_CMD_OUT)) @@ -99,12 +104,6 @@ clear_cmdout_ep(); } } - - /* EP4 : Command in EP (dongle -> PC) */ - if (Usb_test_it_ep(EP_CMD_IN)) - { - clear_cmdin_ep(); - } } /** |