[tuxdroid-svn] r1198 - firmware/fuxusb/trunk/src
Status: Beta
Brought to you by:
ks156
From: Paul_R <c2m...@c2...> - 2008-05-23 12:10:28
|
Author: Paul_R Date: 2008-05-23 14:02:12 +0200 (Fri, 23 May 2008) New Revision: 1198 Modified: firmware/fuxusb/trunk/src/fifo_mic.c firmware/fuxusb/trunk/src/fifo_spk.c firmware/fuxusb/trunk/src/global.c firmware/fuxusb/trunk/src/global.h Log: * Improved the mic and speaker FIFOs Modified: firmware/fuxusb/trunk/src/fifo_mic.c =================================================================== --- firmware/fuxusb/trunk/src/fifo_mic.c 2008-05-23 10:36:07 UTC (rev 1197) +++ firmware/fuxusb/trunk/src/fifo_mic.c 2008-05-23 12:02:12 UTC (rev 1198) @@ -32,7 +32,7 @@ /** \name Fifo's constants * @{ */ /** Buffer size */ -#define FIFOTBL_MIC_MAX 52 +#define FIFOTBL_MIC_MAX 64 /** Overload value */ #define FIFO_MIC_OVERLOAD FIFOTBL_MIC_MAX - 1 /** Ready threshold. This value allow to fill the fifo */ @@ -44,7 +44,7 @@ * access time. * @{ */ /** Fifo buffer */ -uint8_t FifoTbl_MIC[FIFOTBL_MIC_MAX]; +uint8_t idata FifoTbl_MIC[FIFOTBL_MIC_MAX]; /** In index */ uint8_t data FifoIn_MIC_Idx; /** Out index */ @@ -83,27 +83,25 @@ uint8_t data i; i = n; - do { - FifoOut_MIC_cmpt++; - if (FifoOut_MIC_cmpt >= FIFO_MIC_READY_VALUE) + do + { + if (++ FifoOut_MIC_cmpt >= FIFO_MIC_READY_VALUE) { - Fifoready_MIC = 1; + Fifoready_MIC = 1; + + if (FifoOut_MIC_cmpt == FIFO_MIC_OVERLOAD) + { + FifoOut_MIC_cmpt --; + return; + } } - if (FifoOut_MIC_cmpt == FIFO_MIC_OVERLOAD) - { - FifoOut_MIC_cmpt--; - return; - } + FifoTbl_MIC[FifoIn_MIC_Idx ++] = received_rf_data[n - i]; - FifoTbl_MIC[FifoIn_MIC_Idx] = received_rf_data[n - i]; - FifoIn_MIC_Idx++; // Update FIFO in index if (FifoIn_MIC_Idx == FIFOTBL_MIC_MAX) { FifoIn_MIC_Idx = 0; } - - i--; - } while(i); + } while (-- i); } /** @@ -113,36 +111,19 @@ */ uint8_t FIFO_MIC_get (void) { - uint8_t data Data; - - if (FifoOut_MIC_cmpt == 0) + if (!FifoOut_MIC_cmpt) { Fifoready_MIC = 0; + return (FifoOut_MIC_Idx) ? FifoTbl_MIC[FifoOut_MIC_Idx-1] \ + : FifoTbl_MIC[FIFOTBL_MIC_MAX-1]; } - if (FifoOut_MIC_cmpt == 0) - { - if (FifoOut_MIC_Idx == 0) - { - Data = FifoTbl_MIC[FIFOTBL_MIC_MAX-1]; - } - else - { - Data = FifoTbl_MIC[FifoOut_MIC_Idx-1]; - } - return Data; - } - else - { - FifoOut_MIC_cmpt--; - } + FifoOut_MIC_cmpt--; - Data = FifoTbl_MIC[FifoOut_MIC_Idx]; - FifoOut_MIC_Idx++; - if (FifoOut_MIC_Idx == FIFOTBL_MIC_MAX) + if (++ FifoOut_MIC_Idx == FIFOTBL_MIC_MAX) { FifoOut_MIC_Idx = 0; } - return (Data); + return FifoTbl_MIC[FifoOut_MIC_Idx]; } Modified: firmware/fuxusb/trunk/src/fifo_spk.c =================================================================== --- firmware/fuxusb/trunk/src/fifo_spk.c 2008-05-23 10:36:07 UTC (rev 1197) +++ firmware/fuxusb/trunk/src/fifo_spk.c 2008-05-23 12:02:12 UTC (rev 1198) @@ -32,7 +32,7 @@ /** \name Fifo's constants * @{ */ /** Buffer size */ -#define FIFOTBL_SPK_MAX 52 +#define FIFOTBL_SPK_MAX 64 /** Overload value */ #define FIFO_SPK_OVERLOAD FIFOTBL_SPK_MAX /** Ready threshold. This value allow to empty the fifo */ @@ -81,38 +81,27 @@ */ void FIFO_SPK_put_n (uint8_t const n) { - uint8_t i = n; - uint8_t FilterByte; + uint8_t data i = n; + do - { - FifoOut_SPK_cmpt++; - if (FifoOut_SPK_cmpt >= FIFO_SPK_READY_VALUE_MAX) + { + if (++ FifoOut_SPK_cmpt >= FIFO_SPK_READY_VALUE_MAX) { Fifoready_SPK = 1; // FIFO ready to be empty - } - if (FifoOut_SPK_cmpt == FIFO_SPK_OVERLOAD) // FIFO Overload - { - FifoOut_SPK_cmpt--; - return; - } - FilterByte = Usb_read_byte(); // Put data into the FIFO - if(!FilterByte) - { - FifoTbl_SPK[FifoIn_SPK_Idx] = 0x01; + if (FifoOut_SPK_cmpt == FIFO_SPK_OVERLOAD) + { + FifoOut_SPK_cmpt --; + return; + } } - else - { - FifoTbl_SPK[FifoIn_SPK_Idx] = FilterByte; - } + FifoTbl_SPK[FifoIn_SPK_Idx ++] = Usb_read_byte(); - FifoIn_SPK_Idx++; // Update FIFO in index if (FifoIn_SPK_Idx == FIFOTBL_SPK_MAX) { FifoIn_SPK_Idx = 0; } - i--; - } while (i); + } while (-- i); } /** @@ -122,36 +111,22 @@ */ uint8_t FIFO_SPK_get(void) { - uint8_t Data; - if (FifoOut_SPK_cmpt < FIFO_SPK_READY_VALUE_MIN) { Fifoready_SPK = 0; // FIFO empty - } - - if (FifoOut_SPK_cmpt == 0) // FIFO Underload - { - if (FifoOut_SPK_Idx == 0) + if (FifoOut_SPK_cmpt == 0) // FIFO Underload { - Data = FifoTbl_SPK[FIFOTBL_SPK_MAX-1]; + return FifoOut_SPK_Idx ? FifoTbl_SPK[FifoOut_SPK_Idx-1] \ + : FifoTbl_SPK[FIFOTBL_SPK_MAX-1]; } - else - { - Data = FifoTbl_SPK[FifoOut_SPK_Idx-1]; - } - return Data; } - else - { - FifoOut_SPK_cmpt--; - } - Data = FifoTbl_SPK[FifoOut_SPK_Idx]; - FifoOut_SPK_Idx++; - if (FifoOut_SPK_Idx == FIFOTBL_SPK_MAX) + FifoOut_SPK_cmpt--; + + if (++ FifoOut_SPK_Idx == FIFOTBL_SPK_MAX) { FifoOut_SPK_Idx = 0; } - return (Data); + return FifoTbl_SPK[FifoOut_SPK_Idx]; } Modified: firmware/fuxusb/trunk/src/global.c =================================================================== --- firmware/fuxusb/trunk/src/global.c 2008-05-23 10:36:07 UTC (rev 1197) +++ firmware/fuxusb/trunk/src/global.c 2008-05-23 12:02:12 UTC (rev 1198) @@ -37,7 +37,7 @@ /* \name Buffers * @{ */ /** Commands received on the CMD_OUT EP. The EP size is 64 */ -uint8_t idata command_received[64]; +uint8_t command_received[64]; /** Data received from the RF. The maximum byte in a frame is 34 */ uint8_t received_rf_data[34]; /** Commands received from USB for the RF. */ Modified: firmware/fuxusb/trunk/src/global.h =================================================================== --- firmware/fuxusb/trunk/src/global.h 2008-05-23 10:36:07 UTC (rev 1197) +++ firmware/fuxusb/trunk/src/global.h 2008-05-23 12:02:12 UTC (rev 1198) @@ -218,7 +218,7 @@ extern uint8_t i2c_wait_counter; /* USB buffers */ -extern uint8_t idata command_received[]; +extern uint8_t command_received[]; extern uint8_t received_rf_data[]; extern uint8_t idata rf_commands[]; |