void Tcc353xInterruptGetStream(I32U _fifoSize) { I32S moduleIndex = 0; I32U totalSize = 0; I32U wp; totalSize = _fifoSize - (_fifoSize%188); // //TcpalPrintErr((I08S *) "Tcc353xInterruptGetStream size[%d]\n", totalSize); totalSize = (totalSize/188/4)*188*4; if(totalSize > 188 * 87) totalSize = 188 * 84; // if(totalSize>=188) { I32U nextwp; if(Tcc353xStreamBufferedSize[moduleIndex]+totalSize > TCC353X_STREAM_BUFFER_SIZE) Tcc353xStreamBufferFlush (moduleIndex); TcpalSemaphoreLock(&Tcc353xStreamSema); wp = Tcc353xStreamWp[moduleIndex]; TcpalSemaphoreUnLock(&Tcc353xStreamSema); nextwp = ((wp+totalSize)%TCC353X_STREAM_BUFFER_SIZE); if(wp+totalSize>TCC353X_STREAM_BUFFER_SIZE) { /* read twice */ I32U first; first = TCC353X_STREAM_BUFFER_SIZE - wp; Tcc353xApiStreamRead(moduleIndex, &Tcc353xStreamData[wp], first); Tcc353xApiStreamRead(moduleIndex, &Tcc353xStreamData[0], nextwp); } else { Tcc353xApiStreamRead(moduleIndex, &Tcc353xStreamData[wp], totalSize); } TcpalSemaphoreLock(&Tcc353xStreamSema); Tcc353xStreamWp[moduleIndex] = nextwp; Tcc353xStreamBufferedSize[moduleIndex] += totalSize; TcpalSemaphoreUnLock(&Tcc353xStreamSema); if(Tcc353xStreamData[wp]!=0x47) { TcpalPrintErr((I08S *) "[TCC353X] SyncByte Error! [0x%02x]\n", Tcc353xStreamData[wp]); TcpalPrintErr((I08S *) "[TCC353X] Buff Flush for SyncByte matching\n"); Tcc353xApiInterruptBuffClr(moduleIndex); } } }
void Tcc353xInterruptGetStream(I32U _fifoSize) { I32U totalSize = 0; I32U freeSize = 0; I32U writeSize = 0; totalSize = _fifoSize - (_fifoSize%188); if(totalSize>=188) { Tcc353xApiStreamRead(0, &Tcc353xStreamData[0], totalSize); if(Tcc353xStreamData[0]!=0x47) { TcpalPrintErr((I08S *) "[TCC353X] SyncByte Error! [0x%02x]\n", Tcc353xStreamData[0]); TcpalPrintErr((I08S *) "[TCC353X] Buff Flush for SyncByte matching\n"); } else { freeSize = mbt_dataring_free(RingBufId); if(freeSize >= totalSize) { writeSize = mbt_dataring_write(RingBufId, &Tcc353xStreamData[0], totalSize); if(writeSize < 0) { TcpalPrintErr((I08S *) "[TCC353X] Ring Buffer Error!\n"); } } } } }
void Tcc353xInterruptGetStream(I32U _fifoSize) { #if defined (USE_LGE_RING_BUFFER) && !defined (_I2C_STS_) #define _MAX_TS_READ_SIZE_ (15792) /* 188*84 */ I32U totalSize = 0; I32U freeSize = 0; I32U writeSize = 0; I32U remainSize = 0; I32U i; I32U readSizes[2] = {0,0}; totalSize = _fifoSize - (_fifoSize%188); // //TcpalPrintErr((I08S *) "Tcc353xInterruptGetStream size[%d]\n", totalSize); totalSize = (totalSize/188/4)*188*4; //if(totalSize > 188 * 87) if(totalSize > _MAX_TS_READ_SIZE_) { remainSize = totalSize - _MAX_TS_READ_SIZE_; remainSize = (remainSize/188/4)*188*4; if(remainSize> _MAX_TS_READ_SIZE_) remainSize = _MAX_TS_READ_SIZE_; totalSize = _MAX_TS_READ_SIZE_; } else { remainSize = 0; } readSizes[0] = totalSize; readSizes[1] = remainSize; // for(i=0; i<2; i++) { if(readSizes[i]>=188) { Tcc353xApiStreamRead(0, &Tcc353xStreamData[0], readSizes[i]); if(Tcc353xStreamData[0]!=0x47) { TcpalPrintErr((I08S *) "[TCC353X] SyncByte Error! [0x%02x]\n", Tcc353xStreamData[0]); TcpalPrintErr((I08S *) "[TCC353X] Buff Flush for SyncByte matching\n"); } else { freeSize = mbt_dataring_free(RingBufId); if(freeSize >= readSizes[i]) { writeSize = mbt_dataring_write(RingBufId, &Tcc353xStreamData[0], readSizes[i]); if(writeSize < 0) { TcpalPrintErr((I08S *) "[TCC353X] Ring Buffer Error!\n"); } } } } } #else return; #endif }
void Tcc353xInterruptGetStream(I32U _fifoSize) { I32U totalSize = 0; I32U freeSize = 0; I32U writeSize = 0; totalSize = _fifoSize - (_fifoSize%188); //[Fix Start]align TS size to use DMA only mode - 20121228 [email protected] //TcpalPrintErr((I08S *) "Tcc353xInterruptGetStream size[%d]\n", totalSize); totalSize = (totalSize/188/4)*188*4; if(totalSize > 188 * 87) totalSize = 188 * 84; //[Fix End]align TS size to use DMA only mode - 20121228 [email protected] if(totalSize>=188) { Tcc353xApiStreamRead(0, &Tcc353xStreamData[0], totalSize); if(Tcc353xStreamData[0]!=0x47) { TcpalPrintErr((I08S *) "[TCC353X] SyncByte Error! [0x%02x]\n", Tcc353xStreamData[0]); TcpalPrintErr((I08S *) "[TCC353X] Buff Flush for SyncByte matching\n"); } else { freeSize = mbt_dataring_free(RingBufId); if(freeSize >= totalSize) { writeSize = mbt_dataring_write(RingBufId, &Tcc353xStreamData[0], totalSize); if(writeSize < 0) { TcpalPrintErr((I08S *) "[TCC353X] Ring Buffer Error!\n"); } } } } }