[tuxdroid-svn] r1195 - firmware/fuxusb/trunk/src
Status: Beta
Brought to you by:
ks156
From: Paul_R <c2m...@c2...> - 2008-05-23 09:30:14
|
Author: Paul_R Date: 2008-05-23 11:30:15 +0200 (Fri, 23 May 2008) New Revision: 1195 Modified: firmware/fuxusb/trunk/src/main.c firmware/fuxusb/trunk/src/rf.c firmware/fuxusb/trunk/src/rf.h Log: * Added a function to check if the RF is connected, and try to reconnect it if it's disconnected. (rf.c) * Created an init function in main.c Modified: firmware/fuxusb/trunk/src/main.c =================================================================== --- firmware/fuxusb/trunk/src/main.c 2008-05-23 09:14:14 UTC (rev 1194) +++ firmware/fuxusb/trunk/src/main.c 2008-05-23 09:30:15 UTC (rev 1195) @@ -35,6 +35,8 @@ #include "lib_mcu\uart\uart_lib.h" #endif +static void init(void); + /** * The mainloop is divided in three major tasks : * - USB task which parse and control the USB bus This function is always executed, event if the RF is disconnected @@ -44,13 +46,34 @@ */ void main (void) { - /* - * This flag indicate if rf is running or not. - * It's used to restart the RF communication if it has been lost. - */ - static bit rf_is_running = False; + /* init */ + init(); - /* Set X2 mode -> 1 instr. = 6 clock cycles */ + /* Main loop */ + while(1) + { + usb_task(); + + /* Bootloader active */ + if (i2c_bootloading_Flag) + { + i2c_task(); + } + /* Bootloader inactive : if RF is online, process spi_task. */ + else if (is_rf_online()) + { + spi_task(); + } + } +} + +/** + * This function init the dongle. + * \ingroup main + */ +static void init(void) +{ + /* Set X2 mode -> 1 instr. = 6 clock cycles */ Set_x2_mode(); /* Reset the RF card while the USB isn't configured */ @@ -68,33 +91,5 @@ uart_init(); printf("\n== TUX started ==\n"); #endif - - /* Main loop */ - while(1) - { - usb_task(); - - /* Bootloader active */ - if (i2c_bootloading_Flag) - { - i2c_task(); - } - else - { - /* If RF is online, goto spi_task */ - if (!RF_OFFLINE) - { - rf_is_running = True; - spi_task(); - } - /* else, check if the RF must be restarted */ - else - { - if (rf_is_running) - reset_rf(); - new_cmd_enabled = True; - rf_is_running = False; - } - } - } -} \ No newline at end of file +} + Modified: firmware/fuxusb/trunk/src/rf.c =================================================================== --- firmware/fuxusb/trunk/src/rf.c 2008-05-23 09:14:14 UTC (rev 1194) +++ firmware/fuxusb/trunk/src/rf.c 2008-05-23 09:30:15 UTC (rev 1195) @@ -27,6 +27,7 @@ #include "global.h" #include "spi_lib.h" #include "rf.h" +#include "spi_task.h" /** * \brief Restart the RF. @@ -56,3 +57,29 @@ for (i=0; i<64000; i++); rf_reset_signal = 1; } + +bit is_rf_online(void) +{ + /* + * This flag indicate if rf is running or not. + * It's used to restart the RF communication if it has been lost. + */ + static bit rf_is_running = False; + + if (!RF_OFFLINE) + { + rf_is_running = True; + return True; + } + else + { + if (rf_is_running) + { + reset_rf(); + } + new_cmd_enabled = True; + rf_is_running = False; + return False; + } +} + Modified: firmware/fuxusb/trunk/src/rf.h =================================================================== --- firmware/fuxusb/trunk/src/rf.h 2008-05-23 09:14:14 UTC (rev 1194) +++ firmware/fuxusb/trunk/src/rf.h 2008-05-23 09:30:15 UTC (rev 1195) @@ -30,5 +30,6 @@ void reset_rf(void); void rf_start_bootloader(void); +bit is_rf_online(void); #endif // _RF_H_ |